Soy contratista de una gran empresa. Actualmente, hay tres desarrolladores en el proyecto, incluido yo mismo.
El problema es que los otros 2 desarrolladores realmente no lo entienden. Por "eso" quiero decir lo siguiente:
- No entienden las mejores prácticas para la tecnología que estamos utilizando. Después de 6 meses de que yo y otros les demos ejemplos, se están utilizando terribles antipatrones.
- Son programadores de "copiar y pegar" que producen principalmente código de espagueti.
- Ellos constantemente rompen cosas, la implementación de cambios, pero no hacer una prueba básica de humo para ver si todo está bien
- Se niegan / rara vez piden revisiones de código.
- Se niegan / rara vez hacen cosas básicas como formatear el código.
- No hay documentación sobre ninguna clase (jsdocs)
- Miedo de borrar el código que no hace nada
- Deje bloques de código comentados en todas partes aunque tengamos control de versiones.
Me siento cada vez más frustrado al formatear el código de otros, corregir errores, descubrir funcionalidades que no funcionan y crear abstracciones para eliminar los espaguetis.
Realmente no sé qué hacer. Intento no frustrarme, pero es un desastre. Me gustan estas personas como personas, pero siento que la situación de codificación es tan mala que podría moverme más rápido si simplemente navegaran por la web todo el día.
¿Estaría fuera de lugar pedirle a nuestro gerente que revise los otros svn commit access; los compromisos solo se pueden realizar después de una revisión realizada por alguien que tenga conocimiento de lo que estamos haciendo. Como contratista, no estoy seguro de si esa es la mejor jugada.
¿Hay alguna manera sutil / no tan sutil de dejar en claro cuántas cosas estoy arreglando?
Respuestas:
Tengo algo como esto en mi equipo. Intenté que la gente hiciera lo correcto y no funcionó como se esperaba, así que me mudé a una solución diferente.
Primero, fui a mi gerente y llegamos a un acuerdo, ningún código entra en el control de la fuente a menos que esté cubierto por pruebas unitarias. Si el código ingresa sin pruebas unitarias, tengo el poder de veto para deshacer la confirmación de inmediato y hacer un ping a quien sea responsable para que pueda trabajar en las pruebas y luego empujar el código.
Con esta regla, ejecuto regularmente herramientas de cobertura de código (en este caso, jacoco en nuestra compilación sbt ) para asegurarme de que las piezas estén cubiertas correctamente y también realizo refactorizaciones y revisiones de código constantemente en cualquier código introducido por ellas. Como este es un proyecto de Java y Scala , tengo muchas herramientas para ayudarme a atrapar cosas que no deberían estar allí o que no funcionan de la manera que pensamos que deberían, no estoy seguro de cómo puede hacer lo mismo con JavaScript, pero tal vez haya una solución.
Lo principal que creo que me está ayudando a seguir con esto es que tengo una visión clara de lo que espero del proyecto y su arquitectura principal, por lo que cada vez que veo algo que no refleja esta opinión, puedo ir allí y arreglalo. Debe hacer lo mismo, definir su vista, los patrones que se deben usar, la forma en que se debe escribir el código y mantenerse al tanto de esto, siempre haciéndoles saber (y a su administración) lo que está sucediendo y lo que impide que el proyecto avance Más rápido.
Seguramente habrá un momento en el que, o se rinden y hacen lo correcto, o la gerencia recibe el mensaje y los elimina del proyecto.
fuente
Estoy seguro de que ya has visto mis comentarios y mi otra publicación, así que no voy a fingir que realmente sé la respuesta. Lo mejor que puedo ofrecer es un resumen de lo que he escuchado / leído de otros y agregar algo de mi propia experiencia a la mezcla.
Primero, quiero decir que hace poco encontré un blog que pertenece a uno de nuestros propios miembros de Programmers SE, Martin Blore e IMO. Esta publicación específica sobre la autorrealización de TDD es muy precisa. TDD es el último nivel más alto que une todo, pero sin los niveles anteriores, especialmente el más grande, los principios y las prácticas para producir código claro y legible, será muy difícil, si no imposible, hacer que TDD funcione.
En mi empresa, la administración nos impuso tanto Agile como TDD, y al principio simplemente los hicimos porque nos dijeron (que es lo contrario de ágil). Hemos probado TDD dos veces y, aunque soy un gran defensor del uso de pruebas automatizadas, personalmente he descartado todas las que el equipo unió en la última versión. Eran frágiles, gigantescos, copiaban / pegaban el wazoo y estaban plagados de declaraciones de sueño que los hacían correr de manera muy lenta e impredecible. Mi consejo para su equipo: NO HAGA TDD ... todavía.
No sé cuál es su situación porque mencionó que ha estado en la empresa durante solo 6 meses y que es un contratista. ¿Sus objetivos a largo plazo son quedarse con esta empresa o se va a acabar el contrato? Le pregunto porque, incluso si hace algo, podría llevar bastante tiempo ver los resultados.
Además, cuando te unes a un equipo, generalmente toma tiempo antes de obtener suficiente credibilidad y respeto de tu equipo, donde ellos (desarrolladores y administración) considerarían cualquier cosa que propongas. En mi experiencia, ayuda si apaga algunos incendios y demuestra que tiene habilidades y conocimientos de los que otros pueden depender. No estoy seguro si 6 meses es suficiente. Con mucha frecuencia, una persona nueva y ambiciosa se uniría al equipo, luego publicaría aquí preguntando cómo pueden cambiar el mundo. La triste realidad es que simplemente no pueden.
Asumiendo que tienes el respeto y la atención de tu equipo. ¿Ahora que?
Primero, tanto la administración como los desarrolladores deben ser conscientes de que hay un problema. La gestión mide los resultados en términos de trabajo entregado. Si están contentos con la cantidad actual y la calidad de las características, entonces la triste realidad es que no escucharán. Como otros han señalado, sin el apoyo de la gerencia, será extremadamente difícil introducir cualquier tipo de cambio.
Una vez que obtenga soporte de administración, el siguiente paso es profundizar e identificar las causas fundamentales de por qué el equipo opera de la manera que lo hace. El siguiente tema es algo que ha sido una búsqueda personal mía desde hace un tiempo. Hasta ahora este ha sido mi viaje:
fuente
Le sugiero que hable con su gerente sobre el tema, pero es casi seguro que no querrá revisar cada registro.
En cambio, sugiero que sugiera un conjunto de pruebas de unidad / regresión, que se enganche en SVN y se ejecute para cada registro. Eso al menos te ayudará a evitar construcciones rotas. Puede sugerir gradualmente otras mejores prácticas.
Si resulta ser completamente poco receptivo, tal vez deberías pasar por alto. Si decides hacer eso, deberás traer tu mejor juego. Básicamente estarás lanzando a la gerencia para ser contratado en un nivel superior si haces eso.
fuente