Acabamos de encontrarnos con una de esas situaciones que ocasionalmente aparece cuando un desarrollador se enferma durante unos días a mitad del proyecto.
Hubo algunas preguntas sobre si había cometido la última versión de su código o si había algo más reciente en su máquina local que deberíamos estar viendo, y teníamos una entrega pendiente a un cliente, por lo que no podíamos esperar que regrese
Uno de los otros desarrolladores inició sesión como él para ver y encontró un desorden de espacios de trabajo, muchos aparentemente de los mismos proyectos, con marcas de tiempo que dejaron en claro cuál era "actual" (estaba creando prototipos de algunas partes del proyecto que no fueran su "núcleo").
Obviamente, esto es un dolor de cabeza, sin embargo, la alternativa (que parecería ser estándares estrictos sobre cómo cada desarrollador trabaja en su propia máquina para asegurarse de que cualquier otro desarrollador pueda recoger las cosas con un mínimo esfuerzo) es probable que rompa muchos Los flujos de trabajo personal de los desarrolladores y conducen a la ineficiencia a nivel individual.
No estoy hablando de estándares para el código registrado, o incluso estándares generales de desarrollo, estoy hablando de cómo un desarrollador trabaja localmente, un dominio generalmente considerado (en mi experiencia) que está casi completamente bajo el control del desarrollador.
Entonces, ¿cómo manejas situaciones como esta? ¿Es una de esas cosas que simplemente sucede y tiene que lidiar con el precio que paga para que los desarrolladores puedan trabajar de la manera que mejor se adapte a ellos?
¿O le pide a los desarrolladores que se adhieran a los estándares en esta área: uso de directorios específicos, nombres de estándares, notas en una wiki o lo que sea? Y si es así, ¿qué cubren sus estándares, qué tan estrictos son, cómo los vigila y así sucesivamente?
¿O hay otra solución que me falta?
[Supongamos, por el argumento, que no se puede contactar al desarrollador para hablar sobre lo que estaba haciendo aquí, incluso si pudiera saber y describir qué espacio de trabajo es cuál de memoria no será simple e impecable y, a veces, las personas realmente pueden hacerlo. No me contacte y me gustaría una solución que cubra todas las eventualidades.]
Editar: entiendo que pasar por la estación de trabajo de alguien es una mala forma (aunque es una pregunta interesante, y probablemente fuera de tema , en cuanto a por qué es eso) y ciertamente no estoy buscando acceso ilimitado. Piense más en la línea de un estándar donde sus directorios de códigos están configurados con un recurso compartido de solo lectura: no se puede cambiar nada, no se puede ver nada más, etc.
fuente
Respuestas:
" Si no está en el control de la fuente, no existe " .
Esta es una de las pocas cosas en nuestra profesión sobre la que soy dogmático límite. Por las siguientes razones:
Una posible forma de mitigar el problema de querer mirar el código en las estaciones de trabajo de las personas es fomentar una cultura de registros regulares. Una vez trabajé en una empresa en la que, aunque no había un mandato oficial para hacerlo, se veía una especie de orgullo tener siempre todo registrado durante el fin de semana. En las fases de mantenimiento y liberación de candidatos, los artículos CR fueron deliberadamente de grano muy fino para permitir cambios pequeños, claramente visibles, y registros regulares para realizar un seguimiento de ellos.
Además, tener todo registrado antes de irse de vacaciones era obligatorio .
TL; versión DR : revolver las estaciones de trabajo de las personas es una mala forma. En lugar de tratar de fomentar una cultura de facilitar el paso por las estaciones de trabajo de las personas para encontrar lo que queremos, es una mejor práctica fomentar una cultura de uso de control de fuente sensible y registros regulares. Posiblemente incluso registros hiper-regulares y tareas detalladas cuando se encuentran en fases críticas de los proyectos.
fuente
En lugar de aplicar un estándar sobre cómo los desarrolladores organizan sus estaciones de trabajo, aplique un estándar en el que todo el trabajo se registre al final de cada día . Los registros pueden ser a sucursales si aún están incompletos.
De esta manera, nadie debería necesitar acceder a la estación de trabajo de otro desarrollador.
Me imagino que esta política se enfrentaría con cierta oposición, pero nada comparado con lo que esperaría si aplicara reglas sobre la organización de las estaciones de trabajo.
fuente
Te diré la verdad. Me siento incómodo con la idea de que alguien inicie sesión en mi máquina y explore mis cosas. De acuerdo, es el equipo y la propiedad de la compañía, pero es simplemente algo malo.
La última vez que me fui un fin de semana, los chicos reconfiguraron los servidores con la base de datos y el control de fuente y, por alguna razón, consideraron necesario iniciar sesión en mi máquina y reconfigurar el sistema para la nueva configuración.
Lástima que no tenían idea de lo que estaban haciendo y borraron un prototipo en el que había estado trabajando durante los últimos dos meses.
No habría sucedido si la comunicación adecuada estuviera en su lugar. Eso es lo que necesitas también. Acude a ese desarrollador y descubre el estado de las cosas. Aún mejor, solicite un informe a las personas antes de que se vayan de vacaciones para que tome una decisión informada sobre si necesita algo de ellos o no.
Pero no te metas con las estaciones de trabajo de las personas.
PD: Tenemos una convención para una estructura de directorio, pero su razón principal de existencia es una mezcla de historia / configuración: colóquela en otro lugar y no se compilará.
fuente
Hace unos meses, estaba trabajando en un proyecto bastante grande y tuve que dejar el trabajo abruptamente cuando descubrí que estaba ingresado en el hospital. No tuve tiempo de revisar mi último código para el proyecto.
Afortunadamente, es una convención aquí (aunque no "necesaria") almacenar código
/var/www/ourdomain.com
para imitar la producción. Con una convención tan lógica y fácil de seguir, fue fácil para un compañero de trabajo iniciar sesión en mi máquina y recuperar mis últimos cambios.Creo que algunas convenciones son buenas. Aunque estoy de acuerdo con Bobby cuando dice
"Si no está en el control de la fuente, no existe".
Además, una adición útil al espacio de trabajo de cualquier programador podría ser una unidad SATA de intercambio directo en el frente para almacenar todos los proyectos de origen y desarrollo. De esta manera, si surge un problema de este tipo, un empleado puede recuperar fácilmente los nuevos cambios de origen al proyecto sin la necesidad de iniciar sesión en la estación de trabajo de los desarrolladores.
fuente
La primera parte de su pregunta identifica claramente los problemas de comunicación dentro de su equipo. ¿Has probado las standups diarias ?
Estoy de acuerdo con usted cuando dice que las normas probablemente conducirán a la ineficiencia si son demasiado estrictas. Los estándares deben ser definidos por el equipo , involucrando a todos.
En su caso, esperaría unos días después de que el desarrollador en cuestión regrese al trabajo. Luego organice una reunión para hablar sobre esos estándares.
Para evitar bloqueos psicológicos y resistencia, no nombre a personas o cosas específicas que vio. Manténgalo en general, el objetivo aquí es obtener la opinión de todos, incluido el desarrollador que cree que debería mejorar su forma de trabajar. El tipo también puede considerar su organización como un desastre.
Durante la reunión presente el problema y pregunte claramente cómo el equipo podría mejorar la situación.
fuente
Ese usuario probablemente sufría de una falta de herramientas adecuadas. En particular, el uso de un sistema de control de versiones distribuido le habría eliminado la necesidad de tener diferentes directorios de código en diferentes estados. Podría haberlo guardado todo en ramas y haber sido mucho más feliz.
Sin embargo, al punto principal, no, no quiero que se me impongan estándares sobre cómo organizo mi propia estación de trabajo. Actualmente estoy retrasando la estandarización de mi departamento en un IDE (mi jefe REALMENTE nos quiere a todos en Eclipse porque es lo que usa y conoce bien, aunque IMO no es la mejor herramienta para mi trabajo).
Deje que los desarrolladores hagan lo que los haga sentir cómodos. Un desarrollador cómodo es más productivo que uno incómodo. Y si alguien NO es productivo, y sospecha que está buscando a tientas localmente con las herramientas, es una oportunidad de capacitación, no un buen momento para establecer nuevas reglas.
fuente
En mi antiguo lugar de trabajo, teníamos un sistema por el cual cada tarea en nuestro seguimiento de errores tenía su propia rama en el control de la fuente. Se entendió que la mayoría de las veces, un desarrollador elimina un error / tarea, por lo que se permitió que el código roto se verificara en el control de origen.
Una vez que el código estaba en un estado estable en la rama de desarrollo, se realizó una nueva modificación arrastrando el código desde la rama con la que se iba a integrar. Una vez que haya probado esa fusión, sería simplemente un caso de confirmar el código en la rama de integración; no requeriría fusión ya que ya había hecho la fusión en su rama.
De esta manera, evita el problema de que los desarrolladores se preocupen por cometer código que está roto, y puede comenzar a aplicar la política social de hacer que sea súper aceptable registrar el código antes de salir de la oficina por la noche, de manera agradable y segura.
fuente
En esta situación particular, llame a la persona a su casa, deje muy en claro que no duda de que esté enfermo, sino que necesita que alguien más continúe con su trabajo y pregunte dónde están las últimas cosas y en qué estado.
Entonces debes considerar qué hacer desde aquí. Si el problema es que las personas rara vez se registran, considere usar un sistema de control de fuente distribuido que permita a las personas trabajar en sucursales sin molestarse entre sí.
Si el problema es que no le gustan los desarrolladores que tienen múltiples espacios de trabajo en su máquina, entonces supérelo. El estilo de trabajo es individual y básicamente debe mantenerse alejado de sus sistemas siempre que funcionen bien con las reglas para el repositorio de origen. Personalmente, reviso una nueva copia con mucha frecuencia para diferentes proyectos y solo la limpio de vez en cuando.
Si el problema es que no sabe lo que está haciendo su desarrollador, el problema es político, no técnico, y necesita cambiar su estilo de gestión. Recuerde que los desarrolladores son personal altamente calificado que rara vez le gusta la microgestión y usted tiene que delegar. De lo contrario, alejará a las personas más capacitadas.
Por lo tanto, recomendaría alentar una mejor manera de trabajar con el repositorio fuente común: digamos que está bien que las personas trabajen en sucursales y que se comprometan con frecuencia siempre que sincronicen diariamente su copia local en el repositorio maestro (ya que siempre hará trabajo de desarrollo en una rama, esto no influirá en otros).
fuente
Puede resolver este problema con un sistema de control de fuente que admita ramas personales inestables y manteniendo compromisos frecuentes. Una confirmación no tiene que venir cuando se resuelve un problema completo. Debería venir siempre que se beneficie del control de fuente. El final del día es uno de los muchos puntos en los que se debe realizar una confirmación para que pueda ver dónde se realizaron los cambios, respaldarlos y explicarlos a su futuro yo u otros.
Tenemos un documento de configuración de entorno inmenso que denota convenciones, pero no un estándar. Los estándares son para código de producción y entornos. Sin embargo, muchas de nuestras herramientas de desarrollo están configuradas para admitir las convenciones y la mayoría de los desarrolladores no gastan esfuerzos en contrarrestar la tendencia.
fuente