Quelles sont les habitudes à avoir pour parvenir à mettre sur pied d’excellents logiciels ?
Voici une liste inspirée du livre « 66 façons dont les experts pensent »
De façon indépendante du domaine dans lequel on œuvre, combiner expérience et capacités innées permet de se démarquer de ses pairs. Dans la filière de la programmation informatique, c’est la même réalité. En fait, il s’agit des deux ingrédients à mettre ensemble pour aboutir à ce que l’on peut appeler le « programmeur expert. » Il y a seulement que faire mention de l’expérience et des capacités innées ne permet pas de savoir comment ce dernier aborde les diverses tâches qui sont les siennes au quotidien ; en d’autres termes, quelles sont les habitudes sur lesquelles il s’appuie pour une meilleure conception de logiciels. Dans un article paru il y a peu, deux auteurs proposent une liste inspirée de leur livre intitulé « 66 façons dont les experts pensent. »
1. Impliquer les utilisateurs
Les experts connaissent très bien les utilisateurs. Ils impliquent délibérément les utilisateurs dans le processus de conception, les étudient, leur parlent, les invitent à tester des conceptions intermédiaires et leur demandent même de jouer un rôle actif dans l'équipe de conception.
Pourtant, les experts ne prennent pas tout ce que les utilisateurs disent pour argent comptant. Ils se rendent compte des limites potentielles, car la pensée des utilisateurs est souvent colorée par les expériences actuelles. Les experts regardent au-delà de ce que les utilisateurs demandent, vers ce dont ils ont réellement besoin.
2. Mettre au point d’élégantes abstractions
Alors que tous les développeurs créent des abstractions, les experts les conçoivent. Une bonne abstraction met en évidence ce qui est important, à la fois dans ce qu'elle fait et comment elle le fait. À travers une seule lentille, il communique le problème qu'il résout et la mécanique de sa solution.
Les experts ne se contentent pas de n'importe quelle abstraction, ils cherchent délibérément des abstractions élégantes à travers lesquelles des structures complexes peuvent être introduites, comprises et référencées de façon efficace.
3. Focaliser sur l’essentiel
Chaque problème de conception tourne autour d'un ensemble de considérations essentielles qui doivent être comprises et injectées dans la solution pour qu'elle puisse résoudre le problème avec succès. Cette essence peut être perturbatrice : les changements dans le noyau modifient de façon radicale les décisions périphériques qui doivent être prises. Les experts concentrent d'abord leurs efforts sur l'essence et retardent les efforts de conception à la périphérie.
4. Simuler de façon continue
Les experts imaginent comment un design fonctionnera en simulant des aspects du logiciel envisagé et comment ses différentes parties supportent une variété de scénarios. Lorsqu'ils travaillent avec d'autres personnes, les experts passent régulièrement en revue un design en donnant, à haute voix, des détails sur son fonctionnement étape par étape. Lorsqu'ils sont seuls, ils simulent de façon mentale, en testant le design de façon répétée.
5. S’inspirer de l’existant
De la même manière que les architectes se promènent dans les villes pour examiner et s'inspirer des bâtiments existants, les experts en logiciels examinent les détails de la conception d'autres logiciels. Ils le font souvent en réponse à un défi particulier auquel ils sont confrontés, mais il leur arrive de passer du temps à regarder autour d'eux simplement pour enrichir leur répertoire de solutions à utiliser à l'avenir.
6. Proposer des modèles alternatifs de l’espace problème
Les experts prennent souvent du recul par rapport au problème énoncé et l'envisagent de manière plus large, en cherchant d'autres moyens de cerner le problème. Ils peuvent changer de direction en concevant à nouveau l'espace du problème ou en abordant un problème différent dans le même espace. Ils choisissent de façon intentionnelle des objectifs quelque peu différents du problème de conception d'origine, car cela leur permet de comprendre où se situe le vrai problème ou comment surmonter les principaux obstacles.
7. Voir les erreurs comme des opportunités
Le processus de conception implique régulièrement des erreurs : des choses qui vont mal, des malentendus, des obstacles, des mauvais virages, des problèmes qui font surface. Plutôt que de craindre l' erreur, les experts la considèrent comme une opportunité. Ils l'acceptent comme une partie inhérente du processus et prennent le temps d'explorer à la fois l'échec et le contexte qui l'entoure. Comprendre ce qui s'est passé révèle souvent un aperçu du problème ou de la solution
8. Bien prendre en compte les limites
Bien qu'il soit naturel de se concentrer sur ce qu'un design doit accomplir, les experts passent aussi du temps à réfléchir à ce qu'un design n'est pas destiné à faire. En articulant et en considérant les limites, ils découvrent où ils sont sur et sous-dimensionnés.
Marian Petre et Andre Van Hoek proposent là un sous-ensemble des habitudes (8 sur 66 au sein de leur livre) à avoir pour parvenir à concevoir d’excellents logiciels. Sur le plan du fond, il faut dire qu’il est assez sommaire, ce qui pourrait laisser place à diverses interprétations. Par exemple, sans plus d’éclaircissements, le troisième point peut laisser penser qu’ils suggèrent de s’arrimer à une approche de développement ascendante dans laquelle on écrit les fonctionnalités de base avant même de penser à l’interface. En fait, cet état de choses est même de nature à suggérer des éléments additifs à cette liste : la précision ; l’on pourrait faire la proposition d’extension de liste « l’expert doit s’exprimer avec précision », mais sans plus pour rester sur le fil conducteur des auteurs. En fait, le sujet interpelle et mobilise l’attention d’intervenants de la filière. De façon générale, c’est le volet expérience sur lequel les développements portent puisqu’y faire référence c’est aussi passer en revue des habitudes et principes qu’un tiers met en application au travail pour atteindre ses objectifs. Jacob Kaplan-Moss – l’un des principaux contributeurs Django – a d’ailleurs formulé un avis allant dans ce sens il y a quelques années en soulignant que « la programmation n’est pas une passion ni un talent, ce n’est qu’un ensemble de compétences que tout le monde peut apprendre. » Autrement dit, la capacité à mettre sur pied d’excellents logiciels s’acquiert en passant par l’acquisition de certaines habitudes et principes.
Source : MIT PRESS
Et vous ?
Que pensez-vous de cette liste ? Vous satisfait-elle sur le plan du fond ?
Quels sont les éléments qu’on pourrait y ajouter ou qui devraient ne pas y paraître ?
Quelles sont les habitudes sur lesquelles vous vous appuyez au quotidien pour parvenir à concevoir d'excellents logiciels ?
Voir aussi :
Qu'est-ce qui fait un bon programmeur ? Un senior liste cinq caractéristiques d'un bon programmeur
Faut-il éliminer le mythe du programmeur génie ? Selon un sénior, « la plupart des gens sont moyens » et cela n'est pas grave
Le talent et la passion suffisent-ils pour faire un bon développeur ? Les créateurs de Django, PHP et Rails n'étaient pas des passionnés du code
Tout le monde ne peut pas devenir développeur, il faut d'abord disposer de certains prérequis
Partager