Comment les programmeurs planifient-ils avant de coder un logiciel ?


La réponse courte est que la construction d'un logiciel se fait de la même manière que vous mangez un éléphant, une bouchée à la fois jusqu'à ce que vous vous étouffiez avec.

Presque tous les logiciels peuvent être résumés à la chose la plus simple qu'ils sont censés fournir, la valeur la plus élevée qu'ils sont censés remplir. C'est ce qu'on appelle souvent le niveau 50 000 pieds.


Je pense que les chefs de projet aiment utiliser ce terme parce qu'ils aiment s'imaginer dans un bombardier à haute altitude sur le point de larguer la mort enflammée sans distinction. Si vous vous retrouvez dans une réunion à 50k pieds et que vous évoquez quelque chose d'un peu plus bas en altitude qui, sans coïncidence, fait tout foirer, on vous demandera rapidement de remonter au-dessus du pont dur.

Mais tout projet commence par un... c'est quoi ce truc ?

Donc, au début, vous devez avoir une assez bonne idée de ce que c'est. D'après mon expérience, plus l'explication de la chose est compliquée au plus haut niveau, plus il y a de chances que ce soit un échec. Si l'elevator pitch de l'idée de la chose fait déjà l'expérience du scope creep, vous êtes en difficulté.

Alors la question suivante est : quelles sont les choses que nous devons faire pour faire la chose ?

Ce sont les fonctionnalités. C'est ma recommandation que vous gardiez ces choses aussi courtes que vous le pouvez. Chaque chose doit être examinée, mesurée, testée, piquée, poussée, ignorée, incendiée, réincarnée et nettoyée avant que vous ne décidiez vraiment qu'elle doit être une fonctionnalité du produit 0.

Construisez le moins de choses possible, mais pas moins.

C'est'vraiment difficile. Tout le monde, y compris moi, peut s'enthousiasmer et commencer à faire "qu'en est-il de ceci ? On pourrait faire ça ? Et ce serait't-il le meilleur ? Si on fait ça, tous ces enfants qui se sont moqués de nous au collège seraient désolés."

Faites tomber cette merde. Trouvez ce que la chose est au cœur et construisez-la. C'est appelé Minimum Viable Product si vous voulez être comme ça.

Donc vous prenez une de ces choses caractéristiques et vous dites ensuite . Quelles sont les choses que je dois faire pour que cette chose fonctionne. Vous continuez à faire cela à l'envers jusqu'à ce que vous ayez une assez bonne liste de toutes les petites choses que vous devez faire pour faire cette chose. Chacune de ces petites choses devrait être faisable en quelques jours à pas plus d'une semaine.

Quelqu'un va probablement dire, Mark, espèce de bâtard sournois, tu fais tout Agile sur moi.

Non.

Je me fiche de la religion de votre méthodologie logicielle particulière, vous devez décomposer ce que vous allez faire en morceaux de la taille d'une bouchée. Même lorsque nous étions en cascade, nous n'avons toujours construit de la merde qu'un peu à la fois.

Une partie de cela est juste de la psychologie.

Allez construire Word. Quoi, hein...ah...hmm.

Vous construisez un dialogue qui vous permet d'enregistrer un fichier sur le disque dur. OK.

Le développement de logiciels est une question d'abstractions et vous devez descendre jusqu'au point où vous êtes concentré comme un rasoir sur un petit bout et le reste est supposé. Quand je construis mon dialogue d'enregistrement de fichier, je ne sais pas où ou comment il sera utilisé, je construis juste un dialogue.

Pièce par pièce, l'éléphant se fait manger le cul.

Donc ce que je vous suggère, c'est que peut-être vous laissez la complexité de l'ensemble se mettre en travers de la petite chose. Faites la petite chose, puis la prochaine petite chose, puis intégrez ces deux petites choses dans une plus grande chose. Rincer, répéter.

Maintenant, certaines choses demandent beaucoup plus de réflexion et quelques diagrammes et même peut-être quelques documents et si vous travaillez avec d'autres personnes des réunions et des arguments. Je ne peux pas vous dire comment faire tout cela parce que vous faites juste en quelque sorte ce qui doit être fait pour la chose sur laquelle vous travaillez à ce moment-là.

Je peux dire que beaucoup de choses sont faites sur un tableau blanc ces jours-ci et sont effacées parce que rien ne semble durer, c'était une pensée qui nous a fait passer à la suivante. J'avais l'habitude d'être un vrai bâtard pour avoir certains types de documents de conception et maintenant je suis beaucoup moins déraisonnable à ce sujet.