Pregunta: ¿Podemos nosotros, como desarrolladores, aprender de los procesos de la industria manufacturera? ¿La adopción de sus procesos puede aumentar la tasa de éxito del desarrollo de software?
Respuesta: sí, por supuesto. Hay muchas lecciones que los desarrolladores de software pueden aprender de la fabricación a pesar del hecho de que el desarrollo de software es un proceso creativo. El desarrollo de software es en sí mismo un proceso e incluye muchos otros procesos. Cuanto mejor pueda definir y controlar esos procesos, mejor podrá controlar el proceso de desarrollo de software en general. Eso no significa que deba prescribir cada pulsación de tecla que haga un desarrollador; solo significa que, como desarrollador, naturalmente realiza tareas en un cierto orden, y esas tareas a menudo se pueden administrar. Aquí hay unos ejemplos:
seguimiento de defectos: cuando se observa o informa un error, ¿qué le sucede? ¿Lo escribes en un trozo de papel y lo pegas en una espiga de 'investigar'? ¿Luego eliminas esos restos de uno en uno, los investigas y eventualmente los mueves a la espiga 'resuelta'? Si lo hace sin falta cada vez que recibe un informe de error, tiene un proceso bien definido y medible, y probablemente esté mucho mejor que alguien que tenga un sistema de seguimiento de defectos elegante y de alta tecnología que es tan oneroso que algunos miembros del equipo rastrean errores de otras maneras, o no lo hacen en absoluto.
Control de versiones: existe una buena posibilidad de que use el control de versiones donde trabaja, y el control de versiones es obviamente mucho más útil cuando todos lo usan de la misma manera.
diseño del producto: ¿Decide qué características implementar al lanzar dardos en una pared cubierta con notas adhesivas? Si es así, tienes un proceso. No creo que nadie pueda argumentar que es un gran proceso, pero al menos es un punto de partida. Si cambia el proceso, ¿cómo puede saber con certeza que su cambio fue realmente una mejora a menos que mida antes y después? No puedes
revisiones de código: ¿sería útil una revisión de código si el proceso de revisión y los criterios de codificación cambiaran para cada revisión? Por supuesto no.
ciclo de vida de desarrollo de software: todo el análisis -> diseño -> implementación -> prueba -> ciclo de mantenimiento es un proceso que debe definirse claramente.
En cada uno de estos casos, tener un proceso en funcionamiento le permite medir entradas y salidas y determinar si los cambios que realiza tienen el efecto deseado. No tener procesos establecidos significa que solo estás adivinando cuando intentas mejorar tu forma de trabajar. Esto es realmente de lo que se trata la fabricación, y solo tiene sentido tomar prestadas las sucesivas herramientas de refinamiento de la fabricación cuando son apropiadas.
Hay un campo completo dedicado a definir y mejorar los procesos utilizados para crear y mantener software; Se llama ingeniería de software . No sorprende que tenga preguntas sobre el proceso de desarrollo mientras lee sobre CMMI: CMMI es un producto del Software Engineering Institute .
El desarrollo de software ya ha adoptado muchos conceptos de fabricación:
Es difícil no ver la influencia de las partes intercambiables de Eli Whitney en OOP y el desarrollo basado en componentes .
Las técnicas de gestión de proyectos utilizadas en el desarrollo de software no son muy diferentes de las desarrolladas para la fabricación. Como solo dos ejemplos, el mundo del software adoptó recientemente el concepto Kanban que se desarrolló hace décadas en Toyota, y los gráficos de Gantt se utilizaron en la fabricación mucho antes de que se construyera la primera computadora electrónica.
Las metodologías de gestión de calidad como Six Sigma que se desarrollaron para la fabricación se han adaptado al desarrollo de software.
A pesar del pesado entorno impulsado por el proceso, el desarrollador debe participar en la creación de cosas "sobre la marcha".
¿Me está diciendo que alguien decidirá por sí mismo agregar un parche al paquete de reconocimiento facial, y lo agregará a la compilación de producción sin crear primero un problema en el sistema de seguimiento, teniendo el diseño revisado, ¿Verificando el código en el control de versiones, o haciendo que la gente de prueba lo vea primero? Nuestro proceso requiere esas cosas por muy buenas razones. Si por "sobre la marcha" quieres decir "fuera del proceso", eso es inaceptable.
Hacer cosas sobre la marcha va en contra del espíritu de fabricación.
Nuevamente, si "sobre la marcha" significa "fuera del proceso", tiene razón. Pero si cree que la fabricación no requiere pensar rápidamente y desarrollar soluciones creativas a los problemas, está equivocado. En el proceso de fabricación surgen todo tipo de problemas: los bizcochos no tienen suficiente relleno de crema, las superficies pintadas dejan de pasar la prueba de rayado de QA, el 20% de las piezas terminadas carece de un anillo de retención importante, el sistema de mezcla de la masa se ha roto parte critica...