Chers collègues programmeurs,
comment faites-vous la "planification de logiciels" lorsque la recherche universitaire est impliquée? Et, en passant, comment pouvez-vous convaincre votre patron qu'écrire un logiciel n'est pas comme construire une maison et que c'est plus comme écrire un roman ?
Les détails sanglants sont ci-dessous.
Je suis en charge d'une petite équipe de développement travaillant dans un laboratoire de recherche. Nous avons commencé à développer un logiciel dans le but de rendre public un jour (c'est-à-dire vendre et gagner de l'argent). Un tel logiciel dépend, entre autres, d'au moins deux lignes de recherche indépendantes: c'est-à-dire qu'il y a au moins deux doctorats. des candidats qui, espérons-le, sortiront un jour avec une mise en œuvre fonctionnelle de nos besoins.
Le logiciel principal dépend également d'autres ressources plus concrètes dont nous, développeurs, pouvons nous occuper: rendu graphique, déformation des corps mous, etc.
Mon patron m'a demandé d'écrire les spécifications, les exigences ET un diagramme de GANTT sanglant de l'ensemble du projet. Face au fait que je n'ai pas la moindre idée de la partie recherche, et que cette recherche est fondamentale pour le logiciel, il a dit "faites des hypothèses". Pour la clarté de l'argument, il est un professeur dont le doctorat les étudiants devraient trouver la recherche dont nous avons besoin. Et il vient d'un milieu strictement technique: planifier tout d'abord, écrire les spécifications et ensuite seulement écrire le code "c'est la dernière partie".
Ce que je fais maintenant:
- J'ai décomposé le produit en fonctionnalités; chaque «caractéristique» est, de facto , un produit distinct;
- Chaque fonctionnalité est intégrée à la précédente;
- Une fois qu'une fonctionnalité (A) a un prototype fonctionnel, l'équipe peut commencer à travailler sur la fonctionnalité suivante (B), tandis que le contrôle qualité est effectué pour A (si l'argent le permet, plus de personnes peuvent être amenées, etc.);
- Les fonctionnalités qui dépendent de la recherche viendront en dernier: d'ici là, espérons-le, la partie recherche sera terminée ( quand c'est toujours une grande question);
De plus, j'ai configuré l'équipe pour utiliser SCRUM pour le développement de la 'version 1.0 ', prévue dans quelques mois. Ce délai pourrait être fixé sur la base d'hypothèses raisonnables: nous avons énuméré toutes les fonctionnalités requises, nous avons compté notre disponibilité et nous avons donné une estimation raisonnable.
Donc, mes questions, encore une fois, sont:
- Comment puis-je faire plaisir à mon patron tout en sortant quelque chose par la porte?
- Comment puis-je écrire des spécifications pour quelque chose que nous, les développeurs, n'avons aucune idée s'il est possible de le faire ou non? (Nous n'avons toujours pas décidé quelles bibliothèques utiliser pour certaines tâches; nous le ferons lorsque nous en aurons besoin)
- Comment puis-je obtenir les exigences pour cela, étant donné qu'il n'y a pas encore de clients ni d'investisseurs, juste beaucoup d'intérêts et de promesses?
- Comment obtenir la paix dans le monde?
Je suis sûr qu'au moins une de mes questions recevra une réponse :)
ps: J'écris ceci de manière anonyme car un investisseur potentiel pourrait se retourner contre lui si cela était découvert. J'espère que vous comprendrez. Cependant, je dois dire que je n'aime pas cette mentalité de `` cacher la vérité '': ce programme profitera probablement à beaucoup, et ne pas pouvoir en parler ouvertement (avec mon nom et ma réputation attachés) ressemble à de la censure. Mais hélas, je me soucie plus de vos suggestions maintenant.