Caros colegas programadores,
como você faz o "planejamento de software" quando a pesquisa acadêmica está envolvida? E, em uma nota lateral, como convencer seu chefe de que escrever software não é como construir uma casa e é mais como escrever um romance ?
Os detalhes sangrentos estão abaixo.
Sou responsável por uma pequena equipe de desenvolvedores trabalhando em um laboratório de pesquisa. Começamos a desenvolver um software com o objetivo de tornar público um dia (ou seja, vender e ganhar dinheiro com isso). Esse software depende, entre outras coisas, de pelo menos duas linhas de pesquisa independentes: ou seja, existem pelo menos dois doutorados. candidatos que, esperançosamente, um dia sairão com uma implementação de trabalho do que precisamos.
O software principal depende também de outros recursos mais concretos que nós, como desenvolvedores, podemos cuidar: renderização gráfica, deformação de corpos moles, etc.
Meu chefe me pediu para escrever as especificações, os requisitos E um sangrento gráfico de GANTT de todo o projeto. Diante do fato de eu não ter idéia da parte da pesquisa e de que essa pesquisa é fundamental para o software, ele disse "faça suposições". Para maior clareza do argumento, ele é um professor cujo doutorado os alunos devem apresentar a pesquisa de que precisamos. E ele vem de uma experiência estritamente de engenharia: planeje tudo primeiro, anote as especificações e só então anote o código que "é a última parte".
O que estou fazendo agora:
- Eu quebrei o produto em recursos; cada 'característica' é, de fato , um produto separado;
- Cada recurso é construído sobre o anterior;
- Depois que um recurso (A) possui um protótipo funcional, a equipe pode começar a trabalhar no próximo recurso (B), enquanto o controle de qualidade está sendo feito para A (se o dinheiro permitir, mais pessoas poderão ser trazidas, etc.);
- Os recursos que dependem da pesquisa virão por último: até lá, espero que a parte da pesquisa esteja concluída ( quando ainda é uma grande questão);
Além disso, configurei a equipe para usar o SCRUM para o desenvolvimento da 'versão 1.0 ', prevista para alguns meses. Esse prazo pode ser definido com base em suposições razoáveis: listamos todos os recursos necessários, contamos nossa disponibilidade e fizemos uma estimativa razoável.
Então, minhas perguntas são:
- Como faço para meu chefe feliz e ao mesmo tempo obter algo pela porta?
- Como escrevo especificações para algo que nós, os desenvolvedores, não temos idéia se é possível fazer ou não? (Ainda não decidimos quais bibliotecas usar para algumas tarefas; faremos isso quando precisarmos)
- Como obtenho os requisitos para isso, já que ainda não existem clientes nem investidores, apenas muitos interesses e promessas?
- Como obtenho paz no mundo?
Estou certo de que pelo menos uma das minhas perguntas será respondida :)
ps: estou escrevendo isso anonimamente, pois um possível investidor pode sair pela culatra se isso for descoberto. Espero que você entenda. No entanto, devo dizer que não gosto dessa mentalidade de 'ocultar a verdade': esse programa provavelmente beneficiará muitos, e não poder falar abertamente sobre isso (com meu nome e minha reputação anexados) parece censura. Mas, infelizmente, eu me preocupo mais com suas sugestões agora.