¿Quién es responsable de configurar un sistema de compilación automatizado?


15

Soy gerente de proyectos en mi empresa. Trabajo con algunos equipos de desarrolladores que utilizan un sistema de control de versiones estándar y conocido conocido como CVS. Me gustaría ver una integración continua y compilaciones automatizadas implementadas para ayudar a evitar problemas con la ruptura de la compilación y con las malas implementaciones que se escabullen en los servidores de producción.

Estoy seguro de que puedo configurar esto yo mismo, pero no quiero hacerlo por dos razones:

  1. No tengo tiempo para eso. Tengo mis propias responsabilidades, que incluyen marketing, comunicación con otras partes interesadas con miembros del equipo que no forman parte del desarrollo, comunicación con los clientes y planificación del proyecto.

  2. Lo más importante, soy el gerente del proyecto. Mi propósito es proporcionar liderazgo, no microgestionar el equipo de desarrollo .

¿Cuáles son algunas cosas que puedo hacer para encontrar a alguien en el equipo de desarrollo que se apasione por configurar esto? ¿Es un desarrollador la persona adecuada para esta tarea, considerando que requiere conocimiento de Java, Spring y Google App Engine? ¿Cuáles son algunos consejos para ayudar a promover el cambio donde se teme el cambio?


77
Para mí es una novedad que el rol del gerente de proyecto es proporcionar liderazgo.
Yuriy Zubarev

Esa lista de requisitos de conocimiento al final, todo lo que los desarrolladores pueden o no tener, y los que no son desarrolladores ciertamente no lo harían. Depende del tuyo.
Orbling

55
casi -1 por seguir usando CVS.
Johannes Rudolph

@Johannes - Si fuera por mí, no lo estaríamos. De hecho, tengo una configuración de repositorio SVN que he estado usando.
jmort253

1
Por mucho que CVS sea una tecnología antigua (y lejos de ser mi favorita), todavía funciona y muchos lugares todavía la usan. Y si está haciendo el trabajo que necesita, dejarlo en su lugar puede tener sentido. Lo usamos en nuestra oficina y hace el trabajo.
Zachary K

Respuestas:


14

Primero investigaría algunas posibilidades. Por ejemplo, Hudson es un servidor de integración continua bastante popular y es extremadamente flexible. Puede enviar un correo electrónico a su equipo de desarrollo con algo como esto:

Me gustaría presentar una herramienta de integración continua para que las revisiones tóxicas salgan a la luz mucho antes que tarde. He mirado a [hudson, acme CIS, foo] y todos parecen funcionar. Dado el hecho de que estamos usando CVS con [enumere las advertencias aquí], estoy buscando recomendaciones y viviré con lo que decida el equipo.

Dave, hazte cargo de lograr un consenso y poner esto en funcionamiento. Equipo: por favor, comuníquese con Dave al final del día jueves para que podamos probar esto el viernes.

Por favor envíeme mis credenciales una vez que tengamos algo establecido.

Este enfoque tiene los siguientes beneficios:

  • Estás delegando, no tirando
  • La gente sabe que has investigado un poco, la calidad de lo que señalas ayuda a definir tus expectativas sobre la calidad de la herramienta implementada
  • Usted está al tanto de [advertencias], no nos descarrilemos discutiéndolos a menos que realmente sean un factor decisivo para la tarea en cuestión
  • Permites un poco de democracia. Claro, iniciarás sesión para ver si algo se rompió, pero las personas que tienen que lidiar con un CIS serán las que elijan la plataforma.

En mi escenario simulado, Davefue seleccionado porque tiene menos en su plato y probablemente no tendría problemas para configurar un nuevo servidor. Dependiendo de la carga de trabajo, Davepodría ser usted. Eso es tan subjetivo que simplemente lo menciono. No siempre puedes decir not my job to do thatespecialmente si eres el único que tiene tiempo para hacerlo. Si todos ya se están recuperando con el tiempo, su percepción de su disposición a ayudar se vuelve más importante. La medición es una habilidad que desarrollas con el tiempo.

En cualquier caso, tendrá un servidor CIS para el viernes o detalles sobre por qué eso no es posible sin un par de manos adicionales.


2
Gracias por el aporte y asesoramiento. No estaba tratando de sacar la not my jobtarjeta para dejar de trabajar, pero porque es fácil para los gerentes de proyecto a veces involucrarse demasiado en lo que está haciendo el equipo de desarrollo. Al delegar esto al desarrollo, les doy el control y los reinados. Además, si se encargan de configurar esto, es más probable que lo usen, mientras que si lo configuro, obtendré una buena experiencia de aprendizaje sobre cómo configurar una integración continua pero sin ROI y el costo de oportunidad de dar arriba en mis otras tareas. Además, el correo electrónico de muestra es muy útil :) +1
jmort253

@ jmort253 - Sí, sé que no estás evitando el trabajo. Actualizaré para mayor claridad.
Tim Post

3
+1 por involucrar al equipo y dejar que tomen las decisiones técnicas. Esa es la clave para que acepten y usen el nuevo sistema.
Péter Török

14

Veo que va de tres maneras posibles:

  1. Pídale a alguien en el equipo de desarrollo que haga una evaluación rápida de las posibles herramientas y que haga algo rápidamente. Si sus proyectos individuales tienen secuencias de comandos de compilación adecuadas (es decir, puede compilar los proyectos fuera del IDE), entonces debería ser bastante rápido conectarlos al CI.

  2. Trate la infraestructura de compilación como un proyecto interno dentro de su equipo y adminístrela como tal. Un poco más complicado que el primer punto, pero si se hace bien, obtendrá un mejor sistema. También difundir el conocimiento sobre el equipo reducirá el riesgo de sobre-especialización que se menciona a continuación. También obtiene los beneficios de la revisión por pares. Sin embargo, algunos programadores pueden percibir esta tarea como degradante y, como tal, no gastar tanto como deberían.

  3. Contrata a un desarrollador como maestro de construcción y haz que configure todas las herramientas. Luego, continúe usándolo para mejorar el sistema, agregar métricas, generación automática de documentos, pruebas automatizadas, etc. Esto es más costoso, pero si se hace correctamente, las inversiones en esta persona se pagarán muy rápidamente al aumentar la eficiencia de su equipo de desarrollo. Esta persona debe ser competente con los lenguajes y marcos utilizados por su equipo y tener el deseo de pegarlos en un sistema. Por otro lado (de los comentarios) esto puede no estar dentro de su presupuesto y crear una posición especializada podría conducir a una solución insuficientemente documentada que puede dificultar las transiciones.

Dicho esto, antes de comenzar cualquier cosa, asegúrese de lo que realmente quiere. Su pregunta carece de detalles para orientarlo en la dirección técnica correcta. Necesita saber qué ganancias desea lograr al usar dichas herramientas, necesita una visión general del sistema deseado. Uno puede recorrer un largo camino en la creación de un entorno que lo vincule todo, pero sin un plan maestro para construir en contra de usted también puede correr círculos y hacer las cosas más complicadas de lo que ya son.

Un gerente que una vez había dicho que las herramientas son buenas pero sin un proceso son inútiles. Solo desearía que hubiera seguido lo que dijo cuando llegó el momento de poner esto en su lugar ...

Por lo tanto, si decide contratar a alguien, hay ventajas definitivas en contratar a un programador en lugar de alguien con una experiencia más profesional. El punto principal es que esta persona puede dedicar algo de tiempo y energía a crear el código de pegamento y los complementos que integrarán los diferentes sistemas en un sistema coherente.

Espero que esto haya ayudado


2
@Newtopian: esto ayuda. Especialmente la parte de tener un plan antes de intentar ciegamente implementar algo. Gracias. +1
jmort253

1
+1 Consejo bastante bueno. Una adición, independientemente de la plataforma en la que esté trabajando, si uno de los miembros de su equipo es un importante jefe de Linux o cualquiera de los otros sistemas operativos que a menudo tienen usuarios desarrolladores que utilizan scripts de compilación, pueden estar entusiasmados con el proyecto.
Garet Claborn

1
+1 para 3) cada equipo de software debería tener un administrador de compilación dedicado en estos días
Sean Patrick Floyd

1
Una compañía prominente de la que recuerdo haber leído (37 señales? GitHub? No sé) asigna la responsabilidad de ser el maestro de construcción a la última persona que rompió la construcción. Esto asegura que (1) las personas tengan cuidado de no romper la construcción, y que (2) varios miembros del equipo (idealmente) obtengan experiencia aprendiendo sobre el sistema de construcción.
Michelle Tilley

1
@jmort tarde o temprano está llegando al punto en el que nadie puede hacer frente al costo de no tener una posición tan dedicada
Sean Patrick Floyd,

3

Si tiene un rol de liderazgo, es su trabajo identificar los componentes / prácticas faltantes y su responsabilidad de verlo implementado correctamente. La tarea de implementación se puede delegar o no, pero en última instancia es responsabilidad de los líderes.

La clave para la aceptación es comprender, o al menos darle el beneficio de la duda. Puede hablar sobre lo que quiere hacer y mencionar los costos y beneficios. Si la discusión no logra comprender, puede confiar en su confianza en sus decisiones, pero solo si ha acumulado ese tipo de repositorio.

Si su delegación no tiene limitaciones de tiempo, hágala saber durante una reunión de pie o de equipo y solicite un voluntario. Si no viene nadie, simplemente asígnelo como lo haría con cualquier otro trabajo.

actualizar:

Hay una estructura organizativa dentro de cada empresa. Un rol de liderazgo tiene la responsabilidad de los recursos a ese nivel. También tienen la responsabilidad de señalar y abordar cualquier problema. Es posible que necesiten recursos adicionales y / o sugerencias en el momento en que ascienda en la cadena. Si puede resolver el problema, tiene la opción de implementar una solución usted mismo o delegar. Esto puede y debe involucrar a las personas que afectará directamente, idealmente en colaboración con ellos.

No puedo decir que el nivel de director y los puestos superiores no deberían ser directamente responsables de una persona o grupo en particular en una empresa. Realmente depende de la estructura organizativa de las empresas. He trabajado en startups donde el CTO era directamente responsable de los desarrolladores y evaluadores. En una empresa más tradicional más grande, la administración en ese nivel no tendría la visibilidad o familiaridad requerida para tomar decisiones apropiadas en esos niveles inferiores.


¿Y si eres un líder de otros líderes? ¿Es responsabilidad del CEO identificar que un desarrollador Java junior en un equipo de proyecto necesita capacitación adicional?
jmort253

@ jmort253 La respuesta breve es quizás, pero depende de la estructura organizativa de la empresa. Si la estructura de la empresa es plana y pequeña, puede ser responsabilidad del CEO asegurarse de que los desarrolladores reciban capacitación. De hecho, he trabajado en numerosas startups donde los vicepresidentes tienen informes directos que no eran gerentes.
dietbuddha

1

Soy principalmente un desarrollador, y lo configuro cuando puedo (es decir, cuando no me lo prohíben expresamente). En general, dado que los lugares en los que trabajo son tiendas .NET, elijo CruiseControl.NET porque es de código abierto, funciona con la mayoría de los principales sistemas de control de fuente y es relativamente fácil de usar. Siempre he querido configurar un Orbe ambiental como una de las salidas, pero eso generalmente está fuera de mi control.

Explíquelo en una reunión para ver primero si alguien tiene el deseo de hacerlo, siempre que no afecte los proyectos en los que está trabajando actualmente.

En mi lugar actual (uno de los laboratorios nacionales), lo hemos configurado solo para hacer las compilaciones de manera coherente para que las personas que quieran ver lo que estamos haciendo puedan obtener una versión ejecutable en cualquier momento . No quieren pruebas unitarias (la impresión del gerente de proyecto es que el esfuerzo que pusimos en las pruebas unitarias podría haberse puesto en portar el proyecto a .NET).

En mi lugar anterior, la intención era hacer que las compilaciones fueran estándar y consistentes en todos los productos. Demasiados productos solo se pueden construir en una computadora especial (en el caso de un producto, que involucra un control de terceros con DRM agresivo que había cerrado hace mucho tiempo, tuvimos que mantener una máquina con vida durante aproximadamente 5 años después de que el desarrollador se retiró porque el suyo era el único que podía construir este producto comercialmente reemplazado ahora reemplazado). Además, las instalaciones solo podían ser realizadas por una persona que era una persona madrugadora, por lo que si necesitaba una construcción después de las 3 p.m., esperaría hasta el día siguiente.

¿Es un desarrollador la persona adecuada para esta tarea, considerando que requiere conocimiento de Java, Spring y Google App Engine?

Depende. Si tiene alguna persona de control de calidad que sea decente en la creación de secuencias de comandos, pregunte primero antes de asignarla.

Configurarlo para empezar no es una tarea complicada. La instalación no debería llevar más de un par de días (principalmente en un entorno corporativo, las molestias están obteniendo una cuenta para ejecutar las cosas con todos los permisos necesarios) y comenzar a funcionar.


0

Intenta configurarlo desde una dirección diferente: cuando hay un problema en el entorno de producción, pon la responsabilidad en el equipo de desarrollo para solucionarlo y solucionarlo rápidamente. Luego, presente la idea de una compilación nocturna simple que se compila a partir del último código, sello de versión, etc. Si no se compila, no se promocionará.

Creo que el script de compilación debería ser propiedad del desarrollo. Cuando modifican las dependencias o realizan cambios, son los mejores para saber cómo actualizar los scripts. Y dígales que si la administración del proyecto lo posee, simplemente los convocará a una reunión cuando haya un problema.


0

Podrías decir en tu próxima reunión: "OK, creo que deberíamos hacer esto debido a quién puede implementarlo". Te doy mejores probabilidades de que alguien diga "Claro que lo haré". entonces no tienes que pelear por eso.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.