Vous êtes nouveau sur Developpez.com ? Créez votre compte ou connectez-vous afin de pouvoir participer !

Vous devez avoir un compte Developpez.com et être connecté pour pouvoir participer aux discussions.

Vous n'avez pas encore de compte Developpez.com ? Créez-en un en quelques instants, c'est entièrement gratuit !

Si vous disposez déjà d'un compte et qu'il est bien activé, connectez-vous à l'aide du formulaire ci-dessous.

Identifiez-vous
Identifiant
Mot de passe
Mot de passe oublié ?
Créer un compte

L'inscription est gratuite et ne vous prendra que quelques instants !

Je m'inscris !

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 »

Le , par Patrick Ruiz

91PARTAGES

28  0 
Quelles habitudes faut-il avoir pour parvenir à concevoir d'excellents logiciels ?
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

Une erreur dans cette actualité ? Signalez-le nous !

Avatar de Garvelienn
Membre éprouvé https://www.developpez.com
Le 09/10/2019 à 9:28
Autre :
Mettre à l'écart les commerciaux/marketeux de la décision et des choix en les remplaçant par les utilisateurs finaux. Ce qui rejoint le premier point de l'article
21  0 
Avatar de transgohan
Expert éminent https://www.developpez.com
Le 09/10/2019 à 11:34
On est d'accord que le cahier des charges incomplet est un évènement récurrent dans notre profession.
Mais je reste sur mon idée désolé... Je ne veut pas être responsable des lacunes des autres métiers...
Être expert dans son domaine ce n'est pas savoir combler les défauts des autres domaines.
Ou alors on me propose l'augmentation qui va bien et là j'y réfléchirai.

Donc pour moi le point 1 est toujours hors contour.
8  0 
Avatar de GLDavid
Membre expert https://www.developpez.com
Le 11/10/2019 à 7:18
Citation Envoyé par defZero Voir le message
J'ai toujours considéré le développement logiciel plus comme un art, que comme une science exacte (coucou à toi facteur humain)
Bonjour

Content de voir quelqu'un qui se rapproche de ma vision. Je me souviens que l'on m'avait ri au nez sur ce forum il y a quelques années quand j'avais posté une telle phrase. Evidemment, la programmation, c'est des sciences exactes, je ne dis pas le contraire, mais vous devez être "inspiré par le sujet", croyez-moi, ça se ressent la motivation du programmeur sur le résultat obtenu.
Pour en revenir au sujet, je trouve que les propositions citées sont trop centrées sur le programmeur. De mon point de vue, qu'appelle t'on un 'excellent logiciel'? Et bien, c'est un logiciel qui satisfait:
  1. aux utilisateurs, car il est simple d'utilisation et répond parfaitement à leurs attentes.
  2. requiert un minimum de support, hors mise à jour pour ajout de fonctionnalités pourvu que cela satisfasse toujours à la 1ère condition
  3. reste facile à la lecture du source code et demande des outils d'ingénierie logiciel accessibles mais évitant le déploiement d'une usine à gaz

Ouais, ça fait un peu "Small is Beautiful" mais je reste persuadé qu'un logiciel simple est garant de son succès de de son adaptation par les utilisateurs pourvu qu'il remplisse bien ses fonctions.

@++
5  0 
Avatar de Nebulix
Membre expérimenté https://www.developpez.com
Le 09/10/2019 à 10:49
C'est quoi, un logiciel "excellent" ?
Deux réponses extrêmes :
Un logiciel qui fait le boulot sans problème
Un logiciel qui oblige le client à dépenser une fortune en maintenance, formation, etc.
(heureusement pour le premier cas, il y a les maj de Windows)
4  0 
Avatar de sergio_is_back
Membre émérite https://www.developpez.com
Le 09/10/2019 à 10:34
Citation Envoyé par transgohan Voir le message
Je ne vois pas le rapport avec de l'expertise technique en informatique...
C'est de l'expertise de commercial dont on parle ici (faut bien que son métier serve à quelque chose ).
Tout dépend de ce que tu vends : du logiciel sur étagère, du développement personnalisé (basé sur un soft existant) ou du développement à façon. C'est pas pareil !

Citation Envoyé par transgohan Voir le message
Impliquer le client, savoir exactement ce qu'il veut, tout ceci pour ne pas le décevoir et être certain de vendre au mieux le produit.
Certes l'expert en informatique sera impliqué dans le processus mais il n'en est pas responsable.
Si : "l'expert informatique" est responsable de ce qu'il livre auprès du client (enfin c'est comme ça chez nous)

Citation Envoyé par transgohan Voir le message
De toute façon dans 80% des cas ce n'est pas l'expert en informatique qui voit le client donc...
C'est bien le problème dans certaines boites, les commerciaux chiffrent et vendent sans avoir pris l'avis des développeurs du coup à l'arrivée ça ne colle pas...
Pour les gros projets chez nous on envoi toujours un développeur et parfois même une deuxième personne du BE avec le commercial pour avoir toutes les billes pour le chiffrage et encore ça nous arrive de nous tromper...

Citation Envoyé par transgohan Voir le message
Je dirai même que c'est juste de la logique.
Or la logique c'est un peu la base de notre métier.
La logique de certains est parfois bien déroutante...
3  0 
Avatar de el_slapper
Expert éminent sénior https://www.developpez.com
Le 10/10/2019 à 9:10
Citation Envoyé par defZero Voir le message
Si les demandes client dépasse mes capacités, ne pas hésiter à le rediriger vers un collègue.
ça, c'est vraiment important. J'ai vu les dégâts du syndrome du héros, 2-3 fois. J'ai moi-même commis l'erreur une fois.

pas deux.

Citation Envoyé par defZero Voir le message
P.S. : J'ai toujours considéré le développement logiciel plus comme un art, que comme une science exacte (coucou à toi facteur humain)
à minima de la R&D : https://www.developerdotstar.com/mag...sign_main.html - avec tous les aspects aléatoires qui en découlent.
2  0 
Avatar de defZero
Membre averti https://www.developpez.com
Le 13/10/2019 à 1:19
@GLDavid, +1.

Citation Envoyé par GLDavid Voir le message
... Evidemment, la programmation, c'est des sciences exactes, je ne dis pas le contraire, ...
Ah, pas si évident que ça, en fait.
Si c'était totalement vrai, tout programme compilant ne pourrait jamais planter.
Ma compréhension du sujet est que la programmation est basé sur des concepts scientifiquement validé, mais qu'en pratique elle s'assimile plus à un art, tellement le nombre de variation est élevé à notre échelle (comme la peinture et la musique par exemple).
Ne pas oublier que la science s'applique à définir notre monde, alors que la programmation ce borne à coder des limites (le programme) sur un sous ensemble déjà très restreint (l'ordinateur).

Mais sinon, je comprend et suis tout à fait d'accord avec le reste.
2  0 
Avatar de VBurel
Membre régulier https://www.developpez.com
Le 15/10/2019 à 8:19
Une fois pour comprendre les problématiques, une fois pour les résoudre et une dernière fois pour satisfaire les besoins utilisateurs. C’est ce qu’on appelle dans l’industrie, le prototype, le pré-produit et le produit.

Je rappelle aussi qu'un logiciel est une sorte de roman (exécuté par une machine) et à ce titre est soumis aux droits de la propriété intellectuelle... Et la science est un moyen de se planter de manière rationnelle.
2  0 
Avatar de cloudit.fr
Membre du Club https://www.developpez.com
Le 17/10/2019 à 2:08
Cet ouvrage est bienvenu. Il vise la Qualité logicielle. Il y a une dérive techno qui fait que la technologie est devenu son propre but. En tant que "vieux de la vieille"
je suis frappé à quel point la conception est un sujet absent de nos formations d'ingénieur et à quel point le niveau de réflexion tourne autour de zéro pour ce qui concerne la qualité du logiciel en tant que produit.
Le devops, les tests unitaires, cela n'a en fait pas grand chose à voir avec la qualité, ce sont des outils qui permettent de rendre compte du travail effectué. Si un illuminé a décidé que la voiture aurait des roues carrées, les tests unitaires rendront compte du fait que les roues sont carrées.
La conception informatique, contrairement à d"autres domaines techniques n'est arrivée à aucune doctrine ni consensus. Chacun fait "ce qui lui plait" et ce qui me plait correspond à mes habitudes de faire et ma logique propre. Ce livre comble un vide effectivement.
On peut se faire la même réflexion sur l'architecture. Regardez les fiches de poste correspondant à Architecte et vous verrez que cela correspond grosso merdo à une fiche de poste de dev expérimenté. En pratique l'Architecte dans une équipe est celui qui a autorité pour imposer ses vues. Pas vraiment satisfaisant.
2  0 
Avatar de transgohan
Expert éminent https://www.developpez.com
Le 09/10/2019 à 10:10
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.
Je ne vois pas le rapport avec de l'expertise technique en informatique...
C'est de l'expertise de commercial dont on parle ici (faut bien que son métier serve à quelque chose ).
Impliquer le client, savoir exactement ce qu'il veut, tout ceci pour ne pas le décevoir et être certain de vendre au mieux le produit.
Certes l'expert en informatique sera impliqué dans le processus mais il n'en est pas responsable.

De toute façon dans 80% des cas ce n'est pas l'expert en informatique qui voit le client donc...

Sur le plan du fond, il faut dire qu’il est assez sommaire
Je dirai même que c'est juste de la logique.
Or la logique c'est un peu la base de notre métier.
1  0