Tiene que ser una combinación sensata de todas las respuestas hasta ahora. Al final, cuando se habla de un grupo de personas inteligentes (desarrolladores), debe darles las razones por las cuales el comportamiento es importante y darles el control suficiente sobre cómo se implementa ese comportamiento que se invierte en hacerlo bien. Por lo general, los mandatos de arriba son flojos con las personas inteligentes, porque si no han acordado que el problema es un problema, es probable que pasen más tiempo trabajando en el mandato que siguiendo la regla.
Estas son algunas de mis tácticas:
Cometer cambios:
Primero, el equipo necesita acordar cuándo comprometerse y qué comprometerse. Absolutamente esencial es una configuración de compilación que tenga sentido, para que las personas no se detengan solo porque no saben dónde poner algo. Y un consenso sobre cuándo / con qué frecuencia registrarse. "No rompa la compilación" es una buena regla obvia, pero ¿cómo se verifica eso y a quién se le informa al respecto? Otra línea de base es "no se hace si no se registra".
La mayoría de los desarrolladores que conozco están más que felices de verificar el código IF:
- El proceso de registro es fácil
- El proceso de sincronización es fácil (teniendo en cuenta los cambios de otros desarrolladores)
- Ver cambios y moverse entre versiones es fácil
Una cosa que noté recientemente fue que los registros se hicieron más frecuentes y menos dolorosos cuando avanzamos hacia una nueva herramienta CM. Nuestro equipo es pionero en Rational Team Concert que anteriormente usaba Clearcase. No me refiero a anunciar herramientas, pero la nueva ola (para mí) de registros de transmisión con muchas fusiones pequeñas y rápidas hace que sea mucho más atractivo registrarse temprano y con frecuencia.
Dejar que los desarrolladores se encarguen de eliminar el dolor de CM generalmente aumenta la cantidad de registro que ocurre.
Adherirse a la arquitectura: no escribir problemas de modelo en vistas y controladores
Estoy poniendo eso en el grupo general de "hacer la arquitectura correctamente". Estoy de acuerdo con quien dijo que las revisiones de pares: la presión de grupo es genial para esto. Una de las formas en que generalmente veo a las personas entrar en el redil por las mejores prácticas en esta área es cuando sus compañeros les preguntan por qué lo hicieron de la otra manera (de la manera no tan correcta). En general, la pregunta "por qué" llevará a las personas por el camino de darse cuenta de por qué deberían haberlo hecho de manera diferente. Cuando las personas tienen una razón bien entendida para la mejor práctica, es mucho más fácil adherirse a ella.
Además, si hay alguna formalidad que vincule a una persona con una decisión, entonces puede ser más fácil asignar errores en esa área ... así que si una persona es responsable de corregir errores en un área de diseño defectuoso, la necesidad de obtener algo justo antes pueden pasar a algo nuevo y emocionante puede ser un gran motivador.
Evite la codificación dura
Comenzaría con estándares de codificación claros e integrando una revisión estándar de codificación en revisiones por pares. La codificación rígida es una de esas cosas que fácilmente puede ser una casilla de verificación en una agenda de revisión por pares.
Me temo que este tipo de cosas es lo único que he visto convertirse en el papel del líder del equipo para hacer cumplir la regla. En los equipos que he corrido, generalmente no permitiremos que alguien siga adelante hasta que hayan corregido los comentarios de una revisión por pares de su código. Y "sin codificación rígida" es un comentario frecuente de revisión por pares.
En general
Con casi cualquier práctica recomendada, creo que debes elegir tus batallas. Ningún equipo se volverá absolutamente perfecto. Pero puede vigilar sus principales puntos de dolor y comenzar a abordarlos en grupos. Creo que se convierte en el papel del líder saber realmente qué es un punto doloroso para el equipo frente a una peculiaridad molesta de un individuo en particular.
Si su equipo se está perdiendo hacer una mejor práctica en particular, creo que la primera pregunta debe ser "¿cuánto daño está causando esto?" Si la respuesta es "mínima", entonces probablemente no valga la pena. Algunas de las mejores prácticas son más relevantes para tipos específicos de sistemas; si bien en general son buenas, puede que no valga la pena luchar por sistemas donde la práctica no es una ocurrencia frecuente o una parte importante del sistema.
Si la respuesta a "cuánto damange?" es "¡MUCHO!", entonces puede comenzar a construir un caso para mostrarle al equipo que todo este dolor y sufrimiento podrían eliminarse arreglando este punto flojo en las mejores prácticas. La mayoría de las personas están felices de evitar el dolor y el sufrimiento y cambia el diálogo de "haz esto porque te lo dije", a "decidimos hacer esto porque es mejor".