¿Cuál es el subconjunto mínimo de prácticas mejores / más conocidas en el desarrollo de software para un programador en solitario? [cerrado]

16

He sido el programador solitario en mi trabajo durante bastante tiempo. Por lo general, he leído artículos y publicaciones sobre

  • Sistemas de control de versiones
  • Integración continua / entrega
  • Metodologías de desarrollo: Scrum, Waterfall, V-Model, Agile, XP, etc.
  • Gestión de proyectos de software

Pero casi todos parecen estar enfocados en EQUIPOS. No soy un equipo, entonces, ¿cuál sería el conjunto de prácticas absolutamente mínimo para un solo programador? Considere las siguientes condiciones:

  • No tengo conflictos con el código de otras personas.
  • No necesito mantener archivos / árboles de directorios, mi entorno de desarrollo se preocupa por las versiones por sí mismo (desarrollo basado en imágenes).
  • No hay requisitos formales, mis usuarios no saben lo que quieren y están de acuerdo con eso.
  • El único que podría estar interesado en entregar una versión o documentación soy yo, básicamente el cliente quiere RESULTADOS y no le importan las metodologías de software, etc.

Mi opinión es que no quiero gastar (demasiado) tiempo y energía en nada que no esté directamente relacionado con los requisitos del cliente. ¿Alguna recomendación?

usuario869097
fuente
¿Para cuántas versiones tiene en la naturaleza que necesita hacer correcciones de errores?

Respuestas:

17

No hay una respuesta correcta a esta pregunta porque depende de cada persona. Si usa un iPad para hacer todo su trabajo de desarrollo y sus clientes están contentos con usted, no tiene ninguna razón para cambiar.

Sin embargo, si estuviera en su posición, haría cumplir con fuerza lo siguiente:

  • Un sistema de control de versiones : si bien puede pensar que un sistema de desarrollo basado en imágenes hace el trabajo con respecto a las copias de seguridad periódicas y demás, no tiene margen de maniobra para las funciones experimentales en las que normalmente se usaría una rama . Tampoco tiene forma de conservar una versión importante del proyecto ( etiquetado ). Si alguna vez se expande más allá de usted mismo, los desarrolladores que se unan pensarán que están en el infierno.
  • Ágil : este método es extremadamente aplicable para clientes que no saben lo que quieren. Tarde o temprano, se darán cuenta de que no quieren gastar dinero para perseguirlos, querrán ver el progreso.
  • Herramienta de gestión de proyectos : esta es una necesidad. Es muy formidable poder retener todo en tu cabeza, pero no tienes que hacerlo. Ser disciplinado y usar una herramienta de gestión de proyectos (por ejemplo, Redmine ) le permitirá separar sus tareas y le dará un historial de su trabajo fácil de navegar. Será muy importante cuando comience a cargar por hora.
JK
fuente
+2 para la gestión ágil y de proyectos. Sin embargo, para las características experimentales, generalmente bifurco una imagen virtual (que sería equivalente a ramificar) y eventualmente abro otra instancia de mi entorno. Gracias por tu buena respuesta.
user869097
16

El control de versiones es una necesidad absoluta para cualquier programador, incluso para uno solo. Significa que puede recuperarse de manera simple y rápida de archivos eliminados y cambios complejos que simplemente son incorrectos.

Básicamente te salva de la estúpida mierda que haces cuando vas a trabajar colgado.

Tom Squires
fuente
1
Ese no es el único beneficio. Uno de los principales beneficios es poder reproducir una versión anterior del software. Y eso es útil cuando se intenta reproducir un problema y / o determinar cuándo se introdujo un problema.
Marjan Venema
2
Más 1 porque me ha salvado el cerebro de la resaca muchas veces.
Nicholas Smith
1
Además, ramas. Muchas veces tuve esta situación en la que comencé un cambio radical y recibí una llamada para hacer un lanzamiento con gráficos reemplazados u otras cosas menores. Con las sucursales, fue extremadamente fácil de hacer, simplemente cambié a mi sucursal maestra y construí el software. ¿Sin ello? Me habría arrancado el cabello para terminar el cambio de ruptura o revertirlo para poder producir una liberación estable.
Tamás Szelei
1
Suponiendo que escriba comentarios útiles para el check-in, también le brinda una excelente manera de retroceder en el tiempo para responder la pregunta "¿Qué estaba pensando cuando escribí este montón de basura?"
Ned
1
@ user869097, parte de la intención de los sitios de SE es que las preguntas y respuestas sean útiles para algo más que el autor de la pregunta original. Si bien sus requisitos inusuales pueden hacer que el control de versiones no sea práctico (y debo decir que no estoy completamente convencido, porque su metodología de ramificación no parece permitir fusiones), la mayoría de los desarrolladores individuales que no están usando el control de versiones deberían estarlo.
Peter Taylor
6

Como dicen otros, el control de versiones o la gestión del código fuente es extremadamente importante. Use un DVCS y aprenda todo al respecto. Realmente no importa cuál sea, aunque podría beneficiarlo si elige uno popular: git o mercurial.

Otra cosa que no vi mencionada es un script de compilación de un solo paso . Esta no es una integración continua directa (esa frase es propensa a BS en mi opinión), sino una herramienta muy útil. Siempre que necesite realizar una actualización de emergencia, simplemente puede ejecutar el script y terminar con él. Al acercarse al final del proyecto, también sucede que se requieren varias compilaciones por día. Mi experiencia es que vale la pena, incluso si el proceso de compilación no es demasiado complicado. Incluso puede agregar capacidades de carga de ftp, informes en el correo electrónico, ejecutar pruebas unitarias, construir instaladores, firmar, etc. Tener el script escrito desde el principio es fácil de mantener y expandir con más pasos a medida que avanza el proyecto.

Tamás Szelei
fuente
2

Solo responderé una, el control de versiones es enormemente importante para cualquier proyecto y no solo para los equipos. Se necesita una cantidad muy pequeña de tiempo extra cuando lo está utilizando, pero le proporciona un rico historial para que pueda recurrir, no es una bala de plata, pero ciertamente es bueno poder volver a una copia de trabajo si eso realmente La característica experimental ha roto la mayor parte de la aplicación.

Nicholas Smith
fuente
2

El control de versiones es imprescindible. No solo por mantener bien la fuente, sino por la arqueología de la fuente. Un año después de poder comprobar cómo evolucionó una clase o procedimiento podría ahorrarle mucho dolor si intenta "arreglar" algún código extraño.

Para metodologías: recomiendo el manifiesto de programadores . Por lo general, ofrece excelentes resultados en equipos pequeños debido a la sobrecarga cero y a no tener que recordar cómo funciona el conjunto de marcos de contenedores de aplicaciones de servicios web CMS basados ​​en roles MVC compatibles con JSEE y portlet J2EE .

Daniel Iankov
fuente