Comment savoir quand arrêter d'ajouter des fonctionnalités?

16

Il y a quelque temps, j'ai écrit un très petit script python qui vérifiait périodiquement un flux xml pour de nouvelles entrées et alertait l'utilisateur de nouvelles entrées lorsqu'elles étaient présentes. J'ai écrit cela pour moi-même, il s'agissait donc essentiellement d'un programme basé sur une console que n'importe qui à l'aise avec une interface de console aurait pu utiliser.

Après un certain temps, j'ai décidé que cela pourrait être plus utile à d'autres personnes et j'ai commencé à le ranger, à désinfecter les entrées, à supprimer les bugs. Il m'est venu à l'esprit que parce que j'avais écrit le script, je savais comment l'utiliser de manière efficace, précise, etc. D'autres pourraient ne pas, alors j'ai commencé à ajouter une interface graphique. Cela a commencé comme un menu simple, puis s'est étendu à une interface graphique plus complète avec à la fois une interface et un menu d'options. J'ai ensuite ajouté les préférences utilisateur stockées et également le stockage des flux xml précédemment recherchés pour accélérer les recherches répétées.

J'ai ajouté la journalisation pour aider à déboguer l'application en cas de problème, j'ai mis l'application à la dernière base de code python stable disponible pour la plate-forme que j'ai choisie et amélioré les fonctionnalités de dialogue.

J'ai corrigé un bug et commenté clairement mon code, et pourtant j'ai encore des choses à faire pour améliorer l'application avant de la mettre à la disposition des testeurs alpha. C'est loin de mon script original de 20-30 lignes. Ce que je prévoyais me prendrait juste une heure ou deux pour passer de la validation de principe à un programme d'utilisation acceptable a pris 10 à 20 fois cela. (Je suis toujours un noob, et les trucs me prennent beaucoup de temps, mais quand même ....)

Comment savez-vous quand arrêter d'ajouter / peaufiner / réparer des trucs et laisser votre bébé ramper à l'air libre?

peuroffours
la source

Réponses:

8

Lorsque vous atteignez la date limite.

Si vous n'avez pas de délai, c'est votre problème ...

Voici comment je travaille:

  1. J'ajoute de nouvelles fonctionnalités / bugs dans mon backlog produit.
  2. Je priorise l'ensemble du backlog produit sur la valeur métier et estimée (le dernier est optionnel en cas de projet personnel).
  3. Je m'attribue du temps de travail. La date de sortie est la fin de cette période.
  4. Je commence par le tout premier de la liste. Je travaille sur une fonctionnalité à la fois. Pour être terminée, une fonctionnalité doit être vraiment complète, y compris la documentation (à la fin d'une fonctionnalité, je peux potentiellement expédier le produit).
  5. Je prends le suivant jusqu'à ce que mon temps alloué soit consommé.
  6. Si le temps est consommé lorsque je crée une fonctionnalité, je la rejette temporairement.
  7. Lorsque le temps alloué est consommé, je prends la dernière version et en fais une version.
  8. Je répète le processus à partir du point 1.

la source
Hmm j'aime beaucoup le workflow ici. Il s'agit d'un projet de loisir, je ne suis pas sûr que j'essaierai de le monétiser, il est plus susceptible d'être proposé gratuitement ou en open source.
fearoffours
4
La valeur ne signifie pas de l'argent dans le flux de travail suggéré ci-dessus. Vous décidez quelle est la valeur.
OK c'est génial. J'applique cela depuis que j'ai vu le post plus tôt dans la journée. Ma date limite est mercredi 15h, et les choses vont bien! Je me sens plus confiant sur la destination des choses et sur quoi je travaille. J'ai priorisé (dans les commentaires en haut du script) les choses à faire avant cette version, et les choses qui peuvent être laissées à plus tard. Et j'écris la fonctionnalité sur laquelle je travaille actuellement pour m'assurer de rester concentré sur une tâche à la fois. Merci!
fearoffours
3. I allocate work time to myself. The release date is the end of that time.@Pierre 303, Quand vous avez dit timeque vous vouliez dire par heures, c'est-à-dire les constructions nocturnes? ou du temps comme un sprint complet?
Kenan D
@LordCover: Par exemple, je me donne 3 semaines (5 jours par semaine 8h par jour) pour travailler sur le produit. J'expédie à la fin des 3 semaines.
3

Faire un SRS puis coder selon les exigences. Lorsque vous avez atteint tous les objectifs mentionnés dans le SRS, il est temps d'arrêter et de tester votre produit.

Chankey Pathak
la source
Hm bon point. Je n'ai rien écrit sur son but pour le moment.
fearoffours
Les SRS sont bons mais pour une équipe d'un seul homme sur un projet personnel un peu exagéré. La documentation est bonne mais pour ce type de projet, je ne pense pas que tout un SRS soit nécessaire pour l'instant.
Chris
@Chris - Un SRS est toujours une bonne chose. Ce qui est un projet personnel et publié gratuitement aujourd'hui, est toujours un morceau de logiciel gratuit et écrit par des dizaines de personnes. Un bon exemple de l'importance de la documentation Facebook, il était assez facile d'écrire la documentation dans les premiers stades et de la mettre à jour, alors ce serait de l'écrire aujourd'hui. Si vous ne pouvez pas écrire votre conception, expliquez la conception, la documentation sur le fonctionnement de la fonction, comment pouvez-vous la coder?
Ramhound
2

À court terme, lorsque vous avez quelque chose qui fonctionne de manière fiable et qui ne tombe pas en panne. Même s'il ne fait pas tout ce qu'il pourrait faire si vous y travailliez indéfiniment. L'expédition comme le dit le proverbe est une caractéristique . La fiabilité et un ensemble de fonctionnalités restreintes vous permettent de tester les fonctionnalités de base par de vraies personnes dans le monde réel, qui trouveront des choses auxquelles vous n'avez jamais pensé qui briseraient votre code d'une manière qui ne vous viendrait jamais à l'esprit. Moins vous disposez de fonctionnalités, à ce stade, plus il sera facile de résoudre ces premiers problèmes. Comme la fonctionnalité de base fonctionne de manière plus fiable, vous pouvez commencer à implémenter les autres éléments "agréables à avoir" en sachant que votre code le plus important et central fonctionne toujours bien.

À long terme: lorsque vous aurez terminé et documenté le système de plug-in qui permettra à vos utilisateurs (et bien sûr à vous) de mettre en œuvre rapidement et facilement de nouvelles fonctionnalités si vous en avez besoin. Cela devrait être la dernière fonctionnalité que vous devez ajouter, après quoi ce sont tous des plug-ins.

glénatron
la source
1

Lorsque vous êtes sûr de la stabilité de votre logiciel, optez pour une version bien qu'il puisse y avoir des fonctionnalités en attente. La stabilité est plus importante que les fonctionnalités. Obtenez les commentaires, intégrez-les aux fonctionnalités existantes et décidez de ce qui doit être livré ensuite et quand!

Gopi
la source
1

Vous pouvez toujours nourrir un projet pour toujours.

Une très bonne règle est que vous ne devez jamais ajouter des éléments qui ne sont pas dans un cas d'utilisation approuvé. Cela garantit que vous ne vous retrouverez pas avec beaucoup de choses qui seraient bien d'avoir, mais que personne n'utilise. Approuver garantit que d'autres que vous conviennent que cela est nécessaire dans votre projet.


la source
1

Cela dépend de la raison pour laquelle vous ajoutez des fonctionnalités. Les maîtres d'ouvrage le demandent-ils? utilisateurs? QA? Programmeurs?

  • Ajoutez les fonctionnalités dont vous avez besoin.
  • Passez en revue les fonctionnalités importantes.
  • Ignorez les fonctionnalités intéressantes.

Concentrez-vous sur l'objectif du programme et concentrez-vous sur son objectif. Les demandes de fonctionnalités qui étendent son objectif doivent être soigneusement examinées avant de devenir un couteau suisse.

Huperniketes
la source
J'aime l'idée de garder un produit concentré. J'essaie de faire ça, et je trouve toujours des moyens de m'occuper!
fearoffours
2
@fearoffours, vous pouvez toujours trouver des moyens d'améliorer votre propre travail. Le but est de découvrir auprès des utilisateurs comment le faire fonctionner mieux pour eux. Résolvez de vrais obstacles. De véritables taches rugueuses lisses .
Huperniketes
bon conseil dans ce commentaire, (+1) merci!
fearoffours
0

Je n'arrête plus d'ajouter des fonctionnalités. J'essaie simplement de faire sortir l'application dès que possible et d'écrire des fichiers txt si besoin. Ensuite, je peux décider quand arrêter et quand travailler sur quelque chose de différent

Cela aide aussi que j'aime faire le minimum possible pour faire quelque chose (sans avoir recours au piratage).


la source
0

Je vous suggère de le classer dans le temps. Donnez-vous une semaine de parole. Créez une liste de travaux à terminer au cours de cette semaine et assurez-vous que si vous avez une fonctionnalité que vous ne pouvez pas terminer, vous pouvez la retirer.

À la fin de la semaine, relâchez-le. Relâchez tôt, relâchez souvent.

mlk
la source
mais que faire lorsque certaines fonctionnalités dépendent les unes des autres?
Kenan D
0

Lorsque vous avez quelque chose de fiable et d'utile, libérez-le. Vous n'avez pas à arrêter d'ajouter des fonctionnalités, mais si quelqu'un utilise ce que vous avez là-bas, vous aurez une bien meilleure idée des fonctionnalités recherchées. Actuellement, vous devinez.

David Thornley
la source