Recientemente, un desarrollador senior con el que trabajo hizo un caso para exigir que los desarrolladores obtengan la última versión y compilen como parte de su proyecto una biblioteca interna importante. Esto contrasta con el argumento contrario de que los equipos de proyecto deberían estar trabajando en una versión estable que obtienen de un repositorio interno de Maven al que el desarrollador argumentó que tener el código fuente disponible en las máquinas desarrolladoras ahorra tiempo ya que pueden leer la fuente de las bibliotecas código para determinar si la funcionalidad requerida está disponible.
¿El desarrollador principal tiene un argumento válido? ¿O es necesario que los desarrolladores lean el código fuente de las bibliotecas en contra de la filosofía básica de encapsulación e incluso tener la biblioteca en primer lugar?
fuente
La sugerencia es
Podrías hacer una sugerencia alternativa
fuente
No compraría el argumento de que tener la capacidad de examinar la fuente localmente es un beneficio, pero si la biblioteca está en desarrollo activo (posiblemente para agregar soporte para las necesidades de su proyecto), entonces no creo que sea irrazonable exigir a los desarrolladores que descargue actualizaciones con frecuencia (posiblemente varias veces al día). Sin embargo, creo que tiene más sentido comercial hacer disponible un binario compilado (y probado en unidades) en lugar de requerir que los desarrolladores compilen desde la fuente.
¿Tiene la capacidad dentro de su proyecto de configurar algún tipo de repositorio compartido donde esté disponible la última versión compilada? Idealmente, desearía un servidor de CI que hiciera la búsqueda y la compilación en un horario, pero incluso si es solo un recurso de red que uno de los líderes del equipo es responsable de actualizar periódicamente, podría ayudar. Por supuesto, esto debería estar en el plato del equipo de la biblioteca, pero obviamente no están interesados, por lo que tendrá que recuperar su holgura.
fuente
Solía trabajar para una gran empresa de software que constantemente "alimentaba" su propio software con sistemas comerciales internos.
Vieron esto como otro nivel de prueba.
Con lo que estoy de acuerdo, para una empresa, es algo bueno.
Creo que obligarlo a descargar y compilar la última versión es un paso demasiado lejos, a menos que el paso de compilación sea una parte importante de la oferta de sus empresas de vender o incluso externalizar una biblioteca.
fuente
Si bien tener el código fuente disponible puede ser un beneficio, si tiene un agente de compilación de CI que monitorea el repositorio, tiene MUCHO más sentido que ese agente compile esta biblioteca y la copie en proyectos dependientes como externo, que requerir que los desarrolladores ejecute dos pasos de compilación diferentes al crear su copia.
Actualmente estoy trabajando en un proyecto que no está conectado a un agente de compilación, que requiere compilar una sub-aplicación antes de compilar la aplicación principal. Es un dolor grave en mi parte posterior; para hacer un cambio en la sub-aplicación, primero debo compilar todo el proyecto, luego ir a una carpeta de sub-compilación, sacar el producto compilado de eso y copiarlo en una subcarpeta diferente, antes de construir todo el proyecto DE NUEVO para asegurarse de que la última versión de la sub-aplicación esté incluida en la compilación de la aplicación principal. Así NO es como debe hacerse; al menos debería haber un script de MSBuild que automatice este proceso, y preferiría que el agente de compilación actualice los elementos externos cada vez que se confirme un nuevo código en el enlace troncal.
fuente
Dado que tanta gente respondió que no tiene sentido que todos construyan una biblioteca interna, presentaré el punto de vista opuesto que podría justificar las razones:
Usas mucho la biblioteca y no hay documentación. Por lo tanto, todos deberían tener la fuente de referencia. Si esta es una biblioteca que se usa con mucha frecuencia, tener la referencia a mano podría ser útil
Cuando las personas comienzan a escribir su propio código que depende de la biblioteca y algo en la biblioteca no funciona, en lugar de lanzar sus brazos al aire, si la biblioteca está construida localmente, es muy fácil entrar directamente en el código de la biblioteca
No digo que su decisión esté justificada, solo señalo que a) la pregunta presentó un lado de la historia yb) podría haber motivos plausibles.
fuente
Este tipo de prueba sería mejor hacerlo de hecho. Sin embargo, la cosa debe ser realizada por probadores, no por desarrolladores . En ese sentido, no es tu trabajo ni el del desarrollador de la biblioteca.
Según lo que describe, parece que no hay evaluadores en el proyecto; si este es el caso, es un problema de gestión y bastante grave.
Muy poco razonamiento. Cuando la biblioteca de la versión más reciente no puede compilarse con el proyecto de la versión más reciente, puede haber varias razones para eso: solo profundizar en el código fuente de lib podría ser una pérdida de tiempo.
Cualquiera sea la razón, hacer un análisis preliminar de la falla significaría perder el tiempo del desarrollador en un trabajo que se supone que deben hacer los probadores.
Otra cosa por encima de los errores de razonamiento son las pérdidas de productividad inevitables (y bastante dolorosas en mi experiencia) que siguen cuando uno tiene que romper el flujo cambiando entre actividades de desarrollo y control de calidad.
Cuando hay probadores en el equipo, tales cosas son realmente simples y se pueden manejar mucho más fácilmente. Lo que su desarrollador "senior" le lanzó es básicamente un requisito de prueba preliminar.
Los pasos a seguir desde allí son actividades típicas de control de calidad: aclarar los detalles de los requisitos, diseñar un escenario de prueba formalizado, negociar cómo manejar las fallas de la prueba.
fuente
Lo que sugiere el Sr Dev tiene poco sentido para mí en el mejor de los casos. Es bueno poder navegar por las fuentes, pero hay mejores maneras de hacerlo.
¿Qué repositorio de artefactos estás usando? Debería poder implementar un jar de origen para que cada versión viva junto a la biblioteca compilada. La mayoría de los IDE le permitirán adjuntar esto a la biblioteca compilada para navegar por la fuente. Eclipse con el complemento Maven lo hará automáticamente.
Si necesita el código más reciente, puede implementar instantáneas de versiones.
fuente
Esto simplemente debería suceder en su script de compilación:
No veo por qué o cómo esto es un problema. Además, cuando falta algo en la referencia, puede agregarlo a las fuentes e impulsar los cambios. Por supuesto, puede parecer un poco aterrador que la biblioteca pueda cambiar justo debajo de tus pies, pero si los encargados de la biblioteca hacen su trabajo correctamente, esto es algo bueno.
fuente