testing - serp - test seo tags
¿Qué haces con un desarrollador que no prueba su código? (30)
Golpes rituales! Para cada error, ¡un latigazo del látigo!
(Una broma para cualquiera que no lo entienda)
Uno de nuestros desarrolladores escribe continuamente código y lo pone en control de versiones sin probarlo. La calidad de nuestro código está sufriendo como resultado.
Además de deshacerse del desarrollador, ¿cómo puedo resolver este problema?
EDITAR
He hablado con él varias veces e incluso le he dado una advertencia por escrito
¿Por qué no solo hablas con él? Probablemente no te morderá.
¿Se está refiriendo a la escritura de pruebas unitarias automatizadas o pruebas unitarias manuales antes del check-in?
Si su tienda no escribe pruebas automáticas, su verificación de código que no funciona es imprudente. ¿Está impactando al equipo? ¿Tiene un departamento de QA formalizado?
Si todos están creando pruebas unitarias automatizadas, les sugiero que parte del proceso de revisión del código también incluya las pruebas unitarias. Será obvio que el código no es aceptable según sus estándares durante su revisión.
Su pregunta es bastante amplia, pero espero que le haya dado alguna orientación.
Estoy de acuerdo con Phil en que el primer paso es hablar con él de forma individual y explicar la importancia de la calidad. La mala calidad a menudo se puede vincular a la cultura del equipo, departamento y compañía.
Aquí hay algunas ideas de una chabola marina.
Intro
What shall we do with a drunken sailor, (3×)
Early in the morning?
Chorus
Wey–hey and up she rises, (3×)
Early in the morning!
Verses
Stick him in a bag and beat him senseless, (3×)
Early in the morning!
Put him in the longboat till he’s sober, (3×)
Early in the morning!
Reemplaza al "marinero borracho" por un "desarrollador descuidado".
Como desarrollador que rara vez prueba su propio código, puedo decirte una cosa que me hizo cambiar mi comportamiento lentamente ...
Visibilidad
Si el entorno permite sacar el código, esperando que los usuarios encuentren problemas, y luego preguntando esencialmente "¿Qué tal ahora?" después de hacer un cambio en el código, no hay un incentivo real para probar sus propias cosas.
Las revisiones de código y la colaboración lo alientan a trabajar para hacer un producto de calidad mucho más que si solo estuviera entregando ''Widget X'' mientras sus compañeros de trabajo trabajan en ''Widget Y'' y ''Widget Z''
Mientras más visible sea su trabajo, más probable es que le importe lo bien que funciona.
Dígale al desarrollador que le gustaría ver un cambio en sus prácticas dentro de 2 semanas o comenzará el procedimiento disciplinario de su compañía. Ofrezca tanta ayuda y asistencia como pueda, pero si no puede cambiar a esta persona, no es adecuado para su empresa.
Dependiendo del tipo de sistema de control de versiones que esté utilizando, podría establecer políticas de check-in que obliguen al código a pasar ciertos requisitos antes de permitir el check-in. Si está utilizando un sistema como Team Foundation Server, le brinda la capacidad de especificar los requisitos de cobertura de código y prueba de unidad para los check-ins.
Hágalo parte de sus objetivos de Revisión Anual. Si no lo logra, no aumentará el salario.
A veces, aunque solo tienes que aceptar que alguien no es adecuado para tu equipo / entorno, debería ser un último recurso y puede ser difícil de manejar, pero si has agotado todas las otras opciones, puede ser lo mejor a largo plazo. .
Haga que los casos de prueba ejecutados sean uno de los entregables antes de que algo se considere "hecho".
Si no ha ejecutado casos de prueba, entonces el trabajo no está completo, y si la fecha límite transcurre antes de que tenga la ejecución documentada del caso de prueba, entonces no ha entregado a tiempo, y las consecuencias serían las mismas que si hubiera tenido no completado el desarrollo.
Si la cultura de su empresa no lo permite, y valora la velocidad sobre la precisión, entonces esa es probablemente la raíz del problema, y el desarrollador simplemente está respondiendo a los incentivos que están vigentes: lo están recompensando por hacer muchas cosas. cosas medio en lugar de menos cosas correctamente.
Póngalo en su propia rama de desarrollo, y solo traiga sus cosas al baúl cuando sepa que ha sido probado exhaustivamente. Este podría ser un lugar donde sobresalga una herramienta de administración de control de fuente distribuida como GIT o Mercurial. Aunque con el aumento de soporte de bifurcación / fusión en SVN, es posible que no tenga demasiados problemas para administrarlo.
EDITAR
Esto es solo si no puede deshacerse de él o hacer que cambie sus formas. Si simplemente no puede detener este comportamiento (cambiando o disparando), entonces lo mejor que puede hacer es proteger al resto del equipo de los efectos negativos de su codificación.
Parece bastante simple. Hazlo como un requisito y si él no puede hacerlo, reemplázalo. ¿Por qué lo mantendría?
Podría armar un informe con errores encontrados en el código con el nombre del programador responsable de ese software.
Si es una persona razonable, discuta el informe con él.
Si se preocupa por su "reputación", publique el informe regularmente y póngalo a disposición de todos sus colegas.
Si solo escucha a la "autoridad", haga el informe y envíe el problema a su gerente.
De todos modos, he visto a menudo que cuando las personas se dan cuenta de lo mal que parecen desde el exterior, cambian su comportamiento.
Oye, esto me recuerda algo que leí en xkcd :)
Ponga a sus desarrolladores en las ramas de su código, en función de una lógica como, por función, por corrección de errores, por equipo de desarrollo, lo que sea. Luego, los chequeos malos se aíslan de esas ramas. Cuando llega el momento de hacer una compilación, únase a una rama de prueba, encuentre problemas, resuelva y luego fusione su versión a una rama principal.
O elimine los derechos de compromiso para ese desarrollador y pídales que envíen el código a un desarrollador más joven para su revisión y prueba antes de que pueda ser comprometido. Eso podría motivar un cambio en el procedimiento.
Publique estadísticas sobre la cobertura del código de prueba por desarrollador, esto sería después de hablar con él.
Pueden estar demasiado enfocados en la velocidad en lugar de la calidad.
Esto puede tentar a algunas personas a apurar los problemas para borrar su lista y ver lo que vuelve en los informes de errores más adelante.
Para rectificar este equilibrio:
- asigna solo un par de elementos a la vez en tu sistema de seguimiento de problemas,
- revise y pruebe todo lo que haya "completado" tan pronto como sea posible, de modo que estará de vuelta con ellos inmediatamente si hay algún problema
- hábleles sobre sus expectativas sobre cuánto tiempo tardará un artículo en hacerlo correctamente
Revisión de código. Pon a todos tus desarrolladores en una sala todos los lunes por la mañana y pídeles que traigan a la reunión sus logros más orgullosos basados en el código de la semana anterior junto con ellos.
Déjelos tomar el centro de atención y emocionarse al explicar lo que hicieron. Pídales que traigan copias del código para que otros desarrolladores puedan ver de lo que están hablando.
Comenzamos este proceso hace unos meses, y es sorprendente ver la cantidad de controles de calidad subconscientes que tienen lugar. Después de todo, si simplemente se les pide a los desarrolladores que hablen acerca de qué es lo que más les entusiasma, estarán totalmente entusiasmados para mostrarle a las personas su código. Luego, otros desarrolladores verán los errores de calidad y discutirán públicamente por qué están equivocados y cómo debería escribirse realmente el código.
Si esto no hace que tu desarrollador escriba código de calidad, probablemente no sea apto para tu equipo.
Si puede hacer revisiones de código, ese es un lugar perfecto para atraparlo.
Requerimos revisiones antes de fusionarnos al troncal de iteración, por lo que generalmente todo se captura.
Si se encuentra en un lugar donde puede afectar las políticas, realice algunos cambios. Realice revisiones de códigos antes de hacer check ins y haga que las pruebas sean parte del ciclo de desarrollo.
Usando Cruise Control o una herramienta similar, puede hacer que checkins active automáticamente una construcción y pruebas unitarias. Debería asegurarse de que haya pruebas unitarias para cualquier nueva funcionalidad que agregue, lo que puede hacer mirando sus registros. Sin embargo, este es un problema humano, por lo que una solución técnica solo puede ir tan lejos.
Ya sabes, esta es una oportunidad perfecta para evitar que lo destaquen (aunque estoy de acuerdo con que debes hablar con él) e implementar un proceso de prueba primero en la empresa. Si las reglas no son claras y las expectativas son conocidas por todos, he descubierto que lo que describes no es tan poco común. Me parece que hacer el esquema de desarrollo de prueba primero funciona bien para mí y mejora la calidad del código.
Haz que "cuide" la construcción y conviértase en el administrador de la construcción. Esto le dará menos tiempo para desarrollar código (aumentando así el rendimiento de todos) y le enseñará por qué es tan necesario construir bien.
Exigir casos de prueba: el código no se puede enviar sin casos de prueba unitaria. Modifique el sistema de compilación para que, si los casos de prueba no se compilan y se ejecutan correctamente, o no existen, se deniegue toda la tarea de verificación.
-Adán
Normalmente no defiendo esto a menos que todo lo demás falle ...
En ocasiones, una tabla de conteo de errores por desarrollador publicada públicamente puede aplicar suficiente presión de grupo para obtener resultados favorables.
Si realiza sistemáticamente revisiones de código antes de permitir que un desarrollador confirme el código, bueno, su problema está mayormente resuelto. Pero este no parece ser tu caso, así que esto es lo que recomiendo:
- Habla con el desarrollador. Discuta las consecuencias para otros en el equipo. La mayoría de los desarrolladores quieren ser reconocidos por sus pares, por lo que esto podría ser suficiente. También señale que es mucho más fácil corregir errores en el código que está fresco en su mente que el código de hace semanas. Esta parte tiene sentido si tienes algún tipo de código propio .
- Si esto no funciona después de un tiempo, intente implementar una política que haga desagradable el código de error para el autor. Una forma popular es hacer que la persona que rompió la construcción se responsabilice de las tareas de crear la próxima. Si su proceso de compilación está completamente automatizado, busque en su lugar otra tarea menor de la que ocuparse. Este enfoque tiene el beneficio adicional de no identificar a nadie en particular, por lo que es más aceptable para todos.
- Use medidas disciplinarias . Dependiendo del tamaño de su equipo y de su empresa, esos pueden tomar muchas formas.
- Dispara al desarrollador. Hay un costo asociado con mantener manzanas podridas. Cuando llegas hasta aquí, el desarrollador no se preocupa por sus compañeros desarrolladores, y ya tienes un problema de personas en tus manos. Si el ambiente de trabajo se envenena, es posible que pierda mucho más, en términos de productividad y de las personas, que este único desarrollador malo.
La programación de pares es otra posibilidad. Si él está con otro desarrollador calificado en el equipo que muere cumple con los estándares de calidad y conoce el procedimiento, entonces esto tiene algunas ventajas:
- Con un desarrollador experimentado por encima del hombro, aprenderá lo que se espera de él y verá la diferencia entre su código y el código que cumple con las expectativas.
- El otro desarrollador puede hacer cumplir una primera política de prueba: no permitir que se escriba el código hasta que se hayan escrito pruebas para él
- Del mismo modo, el otro desarrollador puede verificar que el código cumpla con los estándares antes de registrarse, lo que reduce el número de registros incorrectos.
Todo esto, por supuesto, requiere que la empresa y los desarrolladores sean receptivos a este proceso, que tal vez no lo sean.
Parece que la gente ha presentado muchas respuestas imaginativas y desviadas a este problema. Pero el hecho es que este no es un juego. Diseñar complicados sistemas de presión entre pares para "nombrarlo y avergonzarlo" no va a llegar a la raíz del problema, es decir. ¿Por qué no está escribiendo pruebas?
Creo que deberías ser directo. Sé que dices que has hablado con él, pero ¿has intentado averiguar por qué no está escribiendo pruebas? Claramente, en este momento, él sabe que debería estarlo, así que seguramente debe haber alguna razón por la cual no está haciendo lo que se le dijo que hiciera. ¿Es pereza? ¿Dilación? Los programadores son famosos por sus egos y opiniones fuertes, quizás esté convencido de que las pruebas son una pérdida de tiempo o que su código es siempre perfecto y no necesita pruebas. Si es un programador inmaduro, es posible que no comprenda completamente las implicaciones de sus acciones. Si él es "demasiado maduro", podría estar demasiado enredado. Cualquiera que sea el motivo, dirígete a él.
Si se trata de una cuestión de opinión, debe hacerle comprender que necesita dejar a un lado su propia opinión personal y simplemente seguir las reglas. Deje en claro que si no se puede confiar en que siga las reglas, entonces será reemplazado. Si todavía no lo hace, haz exactamente eso.
Una última cosa: documente todas sus discusiones junto con cualquier problema que ocurra como resultado de sus cambios. Si se trata de lo peor, puede verse obligado a justificar sus decisiones, en cuyo caso, tener pruebas documentales seguramente será invaluable.
Prueba la Zanahoria, haz que sea un juego divertido.
Por ejemplo, el complemento del juego de integración continua para Hudson
http://wiki.hudson-ci.org/display/HUDSON/The+Continuous+Integration+Game+plugin
Puede encontrar algunas respuestas útiles aquí: ¿Cómo hacer que los programadores junior escriban pruebas?
Cada vez que un desarrollador comprueba algo que no se compila, ponga algo de dinero en un contenedor. Lo pensarás dos veces antes de registrarte en ese momento.
Haga a la persona letrinas limpias. Trabajó en el ejército. Y si trabajas en un grupo con personas que consumen mucha comida india, no les llevará mucho tiempo hacer cola.
Pero así soy yo ...
Desafortunadamente, si ya le has hablado muchas veces y le has dado advertencias escritas, diría que es hora de eliminarlo del equipo.