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.
Respuestas:
He estado en esa posición un par de veces, y con experiencia, no puede contar con el estudiante de doctorado para realizar investigaciones que sean relevantes, y ciertamente no puede confiar en que suceda en un plazo que sea útil. A los estudiantes de doctorado se les permite ir específicamente a donde sus intereses de investigación los lleven, y puede ser extremadamente difícil estar río abajo cuando de repente se están desviando por un camino lateral que es relevante para ellos, pero no para usted. Esta es una fuente importante de riesgo para su proyecto, por lo que debe usar estrategias apropiadas de mitigación de riesgos en su plan de proyecto.
Teniendo en cuenta eso, trabaje cuando tenga que entregar (vea la subvención de investigación; está determinado por su financiamiento en lugar de cualquier otra cosa) y cuánto tiempo llevará entregar asumiendo que la investigación se entregue . Esto tomará algunas conjeturas todopoderosas, pero eso no se puede evitar; hacer esas conjeturas explícitas en la estimación del tiempo . Más adelante, gestione el riesgo manteniéndose en contacto razonablemente cercano con los estudiantes de doctorado (por ejemplo, sentado en sus sesiones de tutoría una vez al mes) para que si parece que no van a entregar lo que necesita a tiempo, puede pensar en estrategias de mitigación en detalle. Si tiene suerte, la apuesta dará sus frutos y obtendrá algo útil de la investigación. Cosas extrañas han sucedido.
Todo lo demás se derivará de saber quiénes serán sus clientes y pensar en cómo quiere que usen el producto final (y cómo lo usarán también). Si no lo sabes, no le venderás a nadie. Pero deberías saberlo, o al menos descubrirlo pronto. (Si está determinado por la parte de investigación, ¡estás en serios problemas! Los proyectos de investigación ciertamente pueden producir resultados negativos, o parcialmente negativos; sucede todo el tiempo, incluso si no siempre es tan ampliamente informado).
Como punto final, creo que es una lástima que hagas esto de forma anónima, ya que todo lo que estás haciendo es buscar asesoramiento sobre un tipo particular de gestión de proyectos. No está mencionando cuál es el tema de la investigación o quién lo está llevando a cabo o quiénes son sus colaboradores, ni sería importante para esta pregunta. La única forma en que podría ser un problema es si estaba buscando fondos que no sean de I + D antes de la investigación realizada, pero eso requeriría que revele el nivel de riesgo involucrado (¡probablemente arruinando la inversión!) O que sea muy deshonesto; Dado que planea ser honesto, no debería surgir ya que el proyecto solo debe buscar ese tipo de financiamiento una vez que los riesgos sean más seguros. (Si usted, como grupo, está siendo deshonesto con los posibles inversores, ese es un problema allí mismo y terminará en lágrimas. O demandas).
fuente
Sé inteligente y haz las cosas.
Si no sabe con qué va a interactuar, eso es un problema. ¿Qué aportes le das a la caja mágica? ¿Qué resultados obtienes de la caja mágica? Eso también ayudará a los investigadores a definir qué es la magia.
Si su académico ha sido financiado por una subvención, entonces probablemente escribió una propuesta de investigación. Hazte con eso. Si es como cualquiera de las propuestas de subvención de investigación que he visto (y escrito), tendrá una línea de tiempo y una "especificación" de lo que están tratando de hacer.
Los requisitos son los usuarios finales del algoritmo / thing-a-ma-jig. Vea si puede entrevistarlos (o clientes / clientes potenciales).
De lo contrario, come tu propia comida para perros.
Fuera de contexto :-)
fuente
Creo que en la planificación del desarrollo de la investigación todo de una vez y el desarrollo de tgen realmente no funciona bien. Trabajo en un instituto de investigación, y trabajamos más usando prototipos rápidos. A menudo, el desarrollo de un prototipo arroja una idea de lo que se necesita exactamente. Al crear rápidamente un prototipo, puede obtener comentarios de su jefe y los investigadores y determinar si esto era lo que esperaban, y también ver si su enfoque funciona. Luego puede refactorizar y mejorar su código. Esto es lo que veo en la práctica en los institutos de investigación donde trabajé.
fuente