Programación extrema para un único desarrollador [cerrado]


10

He estado trabajando con algunos conceptos básicos de programación extrema durante las últimas dos semanas, para una pequeña escala, con fines de lucro, multijugador, juego de arcade. Pasé una semana desarrollando historias de usuarios y determinando requisitos para crear un plan de lanzamiento. También pasé una semana codificando y aplicando el primer plan de iteración que se me ocurrió. He identificado algunos de los conceptos obviamente útiles para un solo desarrollador.

  • Integración continua
  • Nunca agregue funcionalidad temprano
  • Desarrollo guiado por pruebas
  • Elija una metáfora del sistema
  • Use un solo punto de integración
  • Prueba todos los errores
  • Refactorizar constantemente
  • Establecer un ritmo sostenible
  • Sencillez
  • Lanzamientos frecuentes

¿Tengo curiosidad si me falta algo en particular que pueda ser adecuado para trabajar con un solo proyecto de desarrollador?

Además, a la luz de la idea de la simplicidad y el desarrollo basado en pruebas, ¿es mejor usar plataformas establecidas, ricas en características y listas para usar?

¿O debería trabajar desde cero, cuando sea posible, para evitar toparme con los problemas que se presentan con reglas tales como la refactorización constante y nunca agregar funcionalidad tempranamente?


55
Elsesite, en c2.com (un sitio que fue creado temprano para una discusión sobre conceptos ágiles (y específicamente XP)) - Programación extrema para uno

Ese es un recurso increíble, gracias. Me gusta especialmente la idea de la Promesa de lealtad XP.
Kody Manharth

Si lees detenidamente, encontrarás nombres como Ron Jeffries y Kent Beck comentando ... y bueno, es Wiki de Ward .

Así que está escrito por los creadores del paradigma, eso es fantástico. No sé cómo no me había topado todavía. Había estado usando www.extremeprogramming.org
Kody Manharth el

2
No hay una sola viñeta en su pregunta que sea obligatoria para el desarrollo exitoso de software. La verdadera pregunta es, ¿cuáles necesitas realmente?
Robert Harvey

Respuestas:


5

En última instancia, Extreme Programming se trata de un conjunto de prácticas y metodologías que conducen a un valor comercial mejorado. La mejor ilustración de esto que he encontrado es de http://c2.com/cgi/wiki?ExtremeProgrammingEnablingChart

Habilitación de programación extrema

Todo en azul es parte del núcleo de XP.

Hay partes que están en el exterior que ayudan a habilitar cosas dentro del área azul y son parte de XP en su conjunto, pero no son críticas para él. Tenga en cuenta que personalmente no soy un profesional de XP y he leído una buena cantidad de críticas a las personas "casi" después de XP que varias personas han dicho que no es XP. Dejemos a un lado ese aspecto del dogma de XP por un momento y veamos lo que tenemos.

Tenga en cuenta que uno de los primeros y para la mayoría de las cosas es tener un compromiso con el proceso por parte del cliente. Un componente clave de XP es la participación del cliente. Esto se muestra en varios puntos, como la planificación de lanzamientos, lanzamientos pequeños, evaluación de clientes externos. Estas son cosas a las que sus clientes deberán suscribirse si va a tener éxito en XP como desarrollador en solitario. Si solicitan un diseño y luego un período de desarrollo y luego pruebas y demás, no tendrá el compromiso de ellos de ir más allá.

XP no significa que no hay planificación. Hay varios puntos en esto en los que la planificación forma parte de ella: priorización, estimación de la historia del usuario, planificación de iteración y definición de tareas. Aunque usted sea un desarrollador en esto, estas son cosas que necesitará para trabajar con su cliente en la entrega.

Puntos como la propiedad colectiva del código y la programación de pares son cosas que involucran a más de uno. Decidir sobre cosas como los estándares de codificación es mucho más fácil, pero eso no significa que no tenga que seguirlos. La propiedad del código colectivo aún se aplica, es solo que la propiedad es también el próximo desarrollador, no escriba código que sea solo para usted y para usted. Tenga en cuenta que esto está en cierto grado de conflicto con el 'código revela toda intención' que se habilita mediante la programación de pares: no tiene esa persona para verificar que está escribiendo un código mantenible, por lo que la documentación del código también es crítica.

Además de esas advertencias, todavía se aplican muchos de los principios de diseño de XP. Cosas como el primer diseño de prueba, integración continua, reuniones con el cliente, refactorización, YAGNI, soluciones puntuales: esas llamadas se pueden hacer en solitario.

Ten en cuenta que los XP en solitario requieren tanta o más disciplina que los XP normales. XP a menudo se considera una metodología de alta disciplina, ya que requiere que las personas mantengan una adherencia rigurosa a las mejores prácticas que intenta incorporar. Cuando no tienes un entrenador u otras personas para apoyar esa disciplina necesaria, puede caer en una mezcolanza de prácticas que tienen cierta semejanza con XP.

Lectura relacionada:

Me gustaría sacar una cita del primero de los enlaces de c2:

Notable luminaria de Perl Language, y científico loco, Damian Conway cree que Extreme Programming es en realidad un nombre inapropiado. Dado que incorpora muchas de las buenas prácticas de programación que se les enseña a los programadores pero que casi con toda seguridad ignoran, él cree que realmente debería haberse llamado Programación ultra conservadora


Iluminador, por decir lo menos. Actualmente estoy lidiando con problemas en términos de TDD, en Flash usando Starling. Estoy usando FlexUnit, y no tiene la capacidad de manejar pruebas gráficas, ya que no tiene cabeza. ¿Sería apropiado en casos como este simplemente delegar estas pruebas a las comprobaciones manuales (por ejemplo, si la prueba del logotipo está centrada en la pantalla)? ¿Se consideraría esto como una prueba de integración? (es decir, ¿funciona correctamente el módulo de pantalla Splash con el módulo de escenario de Flash?) ¿Debo usar un marco de simulación para simular la situación requerida? ¿Pueden las pruebas ser construcciones puramente etéreas?
Kody Manharth
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.