El desarrollo de software en estilo cowboy se caracteriza por la autonomía de los programadores sobre el proceso. Esto incluye el control del cronograma del proyecto, los lenguajes, los algoritmos, las herramientas, los frameworks y el estilo de codificación. Por lo general, existe poca o ninguna coordinación con otros desarrolladores o partes interesadas.
Un programador independiente puede ser un desarrollador solitario o parte de un grupo de desarrolladores que trabajan con un proceso o disciplina mínimos. [ 1 ] Por lo general, esto ocurre cuando hay poca participación de los usuarios comerciales o cuando es fomentado por la gerencia, que controla únicamente los aspectos no relacionados con el desarrollo del proyecto, como los objetivos generales, los plazos, el alcance y los aspectos visuales (el "qué", pero no el "cómo").
El término "programación vaquera" se suele usar de forma despectiva cuando se compara con metodologías de desarrollo de software más estructuradas .
Desventajas
En la programación informal, la falta de metodologías formales de gestión de proyectos de software puede ser indicativa (aunque no necesariamente) del pequeño tamaño o la naturaleza experimental del proyecto. [ 2 ] Los proyectos de software con estas características pueden presentar:
Falta de estructura de liberación
La falta de estimación o planificación de la implementación puede provocar retrasos en un proyecto. Los plazos repentinos o la presión para lanzar software pueden fomentar el uso de técnicas improvisadas que requerirán mayor atención posteriormente. [ 3 ]
Desarrolladores sin experiencia
La programación informal o poco rigurosa puede ser común entre aficionados o estudiantes, donde los desarrolladores pueden no estar familiarizados inicialmente con tecnologías como las pruebas, el control de versiones o las herramientas de compilación, que suelen ir más allá de la codificación básica que requiere un proyecto de software.
Esto puede llevar a subestimar el tiempo necesario para el aprendizaje, provocando retrasos en el proceso de desarrollo. La inexperiencia también puede conducir al desprecio de los estándares aceptados , dificultando la lectura del código fuente del proyecto o causando conflictos entre la semántica de las construcciones del lenguaje y el resultado de su salida. [ 4 ]
Requisitos de diseño inciertos
Las aplicaciones de software a medida, incluso utilizando un ciclo de desarrollo probado, pueden presentar problemas con el cliente en cuanto a los requisitos. La programación improvisada puede agravar este problema al no ajustar los requisitos a un cronograma razonable, lo que podría resultar en la creación de componentes no utilizados o inutilizables antes de que finalice el proyecto. De manera similar, los proyectos con clientes menos tangibles (a menudo proyectos experimentales, como el desarrollo de videojuegos independientes ) podrían comenzar con código sin un análisis formal de los requisitos de diseño. La falta de análisis de diseño podría llevar a la elección de tecnologías incorrectas o insuficientes, lo que posiblemente obligue al desarrollador a portar o reescribir su software para poder completar el proyecto.
Incompletitud
Muchos modelos de desarrollo de software, como la Programación Extrema , utilizan un enfoque incremental que enfatiza que el software debe ser publicable al final de cada iteración. Los proyectos no gestionados pueden tener pocas pruebas unitarias o iteraciones funcionales, lo que deja un proyecto incompleto e inutilizable. Por ello, las metodologías ágiles se han comparado con la programación informal, pero la metodología ágil cuenta con procesos formales, procedimientos, medición, gestión de proyectos y otra supervisión, mientras que la programación informal carece de todo esto. [ 5 ] [ 6 ]
Ventajas
- Los desarrolladores mantienen un entorno de trabajo flexible que puede fomentar la experimentación, el aprendizaje y la libre distribución de los resultados.
- Permite a los desarrolladores superar los límites arquitectónicos y/o jerárquicos para resolver limitaciones y defectos de diseño.
- Dado que discutir arquitecturas, redactar especificaciones y revisar el código consumen tiempo, un solo desarrollador (si es suficiente) podría crear una aplicación funcional más rápidamente mediante una programación poco rigurosa. Tareas como la investigación o la creación de prototipos no requieren la calidad de código que ofrecen los métodos más complejos.
- Dado que la programación puede realizarse durante el tiempo libre del desarrollador, un proyecto podría llegar a buen término, algo que de otro modo no habría ocurrido. [ 7 ]
Véase también
- Hacker , una subcultura que se basa en la creatividad de programadores individuales.
- Code monkey , un término peyorativo para los programadores empleados para escribir código simple o repetitivo.
- Trabajo por cuenta propia
- Desarrollo de videojuegos independientes
- Vaquero § Asociaciones negativas
Referencias
- ↑ Scott, Welker. "Codificación vaquera" . searchsoftwarequality . TechTarget . Consultado el 2 de marzo de 2022 .
- ↑ Hughes, Bob y Cotterell, Mike (2006). Gestión de proyectos de software , págs. 283-289. McGraw Hill Education, Berkshire. ISBN 0-07-710989-9
- ↑ "En defensa del modelo en cascada: deconstruyendo el manifiesto ágil" (PDF) . Consultado el 1 de febrero de 2016 .
- ↑ "StickyMinds - STAREAST 2000: Confesiones de un vaquero de la programación (en recuperación)" . StickyMinds . Consultado el 2 de febrero de 2016 .
- ↑ "Explorando el desarrollo ágil" . Boletín informativo de Pragmatic Software .
- ↑ "StickyMinds - No te limites a romper software. Crea software" . StickyMinds . Consultado el 2 de febrero de 2016 .
- ↑ K, Alex. "El '20 por ciento del tiempo' de Google en acción" , Blog oficial de Google, 18 de mayo de 2006
Enlaces externos
- Filosofías de desarrollo de software
- Folclore de la programación informática
- Folclore de la ingeniería de software