Estimados compañeros programadores,
¿Cómo se hace "planificación de software" cuando se trata de investigación académica? Y, en una nota al margen, ¿cómo convence a su jefe de que escribir software no es como construir una casa y es más como escribir una novela ?
Los detalles sangrientos están a continuación.
Estoy a cargo de un pequeño equipo de desarrollo que trabaja en un laboratorio de investigación. Comenzamos a desarrollar un software con el propósito de hacer público un día (es decir, vender y ganar dinero con eso). Dicho software depende, entre otras cosas, de al menos dos líneas de investigación independientes: es decir, hay al menos dos Ph.D. candidatos que, con suerte, algún día saldrán con una implementación funcional de lo que necesitamos.
El software principal depende también de otros recursos más concretos de los que nosotros, como desarrolladores, podemos ocuparnos: representación gráfica, deformación de cuerpos blandos, etc.
Mi jefe me pidió que escribiera las especificaciones, los requisitos Y un diagrama sangriento de GANTT de todo el proyecto. Ante el hecho de que no tengo ni idea sobre la parte de investigación, y que dicha investigación es fundamental para el software, dijo "hacer suposiciones". Para la claridad del argumento, es un profesor cuyo Ph.D. los estudiantes deben presentar la investigación que necesitamos. Y proviene de un entorno estrictamente de ingeniería: planifique todo primero, escriba las especificaciones y solo luego escriba el código que "es la última parte".
Lo que estoy haciendo ahora:
- Desglosé el producto en características; cada "característica" es, de facto , un producto separado;
- Cada característica está construida sobre la anterior;
- Una vez que una característica (A) tiene un prototipo funcional, el equipo puede comenzar a trabajar en la siguiente característica (B), mientras que el control de calidad se realiza para A (si el dinero lo permite, se puede traer más personas, etc.);
- Las características que dependen de la investigación serán las últimas: para entonces, con suerte, la parte de investigación se completará ( cuando todavía es una gran pregunta);
Además, configuré al equipo para que use SCRUM para el desarrollo de la 'versión 1.0 ', que vence en unos meses. Este plazo podría establecerse en base a suposiciones razonables: enumeramos todas las características requeridas, contamos nuestra disponibilidad y proporcionamos una estimación razonable.
Entonces, mis preguntas, nuevamente, son:
- ¿Cómo hago feliz a mi jefe y al mismo tiempo saco algo por la puerta?
- ¿Cómo escribo especificaciones para algo que nosotros, los desarrolladores, no tenemos idea de si es posible hacer o no? (Todavía no hemos decidido qué bibliotecas usar para algunas tareas; lo haremos cuando sea necesario)
- ¿Cómo obtengo los requisitos para eso, dado que todavía no hay clientes ni inversores, solo muchos intereses y promesas?
- ¿Cómo consigo la paz en el mundo?
Estoy seguro de que al menos una de mis preguntas será respondida :)
PD: estoy escribiendo esto de forma anónima ya que un inversor potencial podría ser contraproducente si se descubre esto. Espero que lo entiendas. Sin embargo, debo decir que no me gusta esta mentalidad de 'ocultar la verdad': este programa probablemente beneficiará a muchos, y no poder hablar abiertamente sobre esto (con mi nombre y mi reputación adjuntos) se siente como censura. Pero, por desgracia, ahora me importan más tus sugerencias.