usando el control de versiones
SVN es muy común, pero mercurial es más guapo, poderoso y tiene un sólido soporte de interfaz gráfica de usuario.
desarrollo impulsado por pruebas
bueno, si haces pruebas unitarias, ya estás en el lado ganador. para herramientas, es una cuestión de elección. la prueba debe ser lo más fácil posible, esa es la razón por la que abandoné PHPUnit para SimpleTest.
código de depuración
con las pruebas unitarias difícilmente necesitará xdebug. Yo uso xdebug generalmente solo para perfilar. (echa un vistazo a KCachegrind por cierto)
uso de diagramas UML
El mayor problema con todo lo que refleja la lógica del código es que es mucho trabajo manual mantenerse sincronizado. puede automatizar algunas tareas, pero no es tan útil, porque generalmente desea usar uml antes de tener algo. El otro problema es que las herramientas de diagrama son mucho más difíciles de usar que el lápiz y el papel o una pizarra. use uml si tiene que comunicar un problema con múltiples desarrolladores o si necesita una abstracción para usted mismo. ("dia" es una buena herramienta gratuita. también las herramientas de mapeo mental son muy útiles para la lluvia de ideas, algunas pueden competir con el lápiz y el papel).
uso de OOP para código mantenible y reutilizable
bueno, oop funciona hasta cierto punto. :) un buen consejo: composición> herencia. La herencia es una herramienta poderosa para reutilizar a primera vista, pero el mantenimiento y el acoplamiento flojo sufrirán por ello. Segundo buen consejo: mantenimiento> reutilización. Un sistema abstracto puede ser muy poderoso, pero también difícil de mantener.
uso de frameworks (como Zend Framework para php) para el desarrollo rápido de aplicaciones
RAD es algo bueno para que su aplicación salga temprano. pero algunos componentes, especialmente ORM, dispararán sus pies, al menos si se trata de escalabilidad. El principal problema aquí es que vincula su lógica de dominio para trabajar con objetos, lo que se vuelve muy difícil de descifrar si necesita una solución optimizada de base de datos pura y escalable. tenga en cuenta eso y aliente a sus desarrolladores a utilizar la base de datos sin capas de abstracción de alto nivel. la abstracción de la base de datos es un mito, orm es una mentira.
BESO
los recién llegados generalmente quieren aplicar todas esas mejores prácticas, establecer estándares de codificación, usar todas las buenas cadenas de herramientas, lo que sea. funciona para algunos desarrolladores, pero algunos se encontrarán con un bloqueo mental si las cosas son demasiado estrictas. la prueba de unidad y la SCM son realmente imprescindibles, pero alguien nuevo en la prueba de unidad realmente necesita aprender su valor antes de que le encante. no exagere, aplique las prácticas paso a paso y vea cómo funciona. KISS también se reduce a código. a veces la mejor manera de resolver un problema difícil es resolverlo mal. necesitas un algoritmo de separación de seis grados ? solo elige algunos amigos al azar. puede crear una aplicación completa a su alrededor, con una lógica incorrecta. si el cliente finalmente decide abandonarlo, todos ahorraron mucho dinero.
ágil
Aprenda sobre metodologías ágiles, programación extrema, scrum, etc. Hay muchos libros disponibles. cualquier libro mejorará su equipo, pero es lo mejor para que cada compañero de equipo participe.