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 !

Qu'est-ce qui fait un bon programmeur ?
Un senior liste cinq caractéristiques d'un bon programmeur

Le , par Hinault Romaric

253PARTAGES

6  0 
Quand peut-on dire que l'on est un bon programmeur ? Quels sont les éléments distinctifs d'un bon programmeur ? Certains d'entre nous se sont probablement déjà posés la question ou ont eu l’occasion d'en débattre.

Henrik Warne, un développeur senior, dans son blog « réflexion sur la programmation », liste cinq points clés qui permettent de distinguer ou de se définir comme un bon programmeur. Les points qu'il évoque sont les suivants :

1 - Décomposition du problème

Selon Warne, l'objectif de la programmation est de résoudre des problèmes. Ainsi, « avant d’écrire le code, le programmeur doit avoir une idée claire sur la démarche pour résoudre le problème ». Un bon programmeur sera donc celui qui sera capable de décomposer son problème au point d'aboutir à des petits éléments pouvant être résolus facilement. « Il ne s'agit pas simplement de résoudre le problème. Un bon programmeur trouve le moyen de modéliser le problème de façon à ce que le programme à mettre sur pied soit facile à implémenter et à tester », explique Warne.

2 – Analyse du scénario

Warne explique dans son billet de blog qu'un bon programmeur est celui qui a la capacité d’anticiper tous les scénarios possibles dans son programme (logique du programme, événements internes et externes qui peuvent se produire). « Pour tenir compte des différents chemins dans la logique, il se pose les questions : qu'est-ce qui se passe si cet argument est nul ? Et si aucune de ces conditions n'est vraie, etc. », affirme-t-il, concluant que le bon programmeur a la capacité de penser comme un testeur.

3 – Nommage

Le nommage des variables, des classes et des méthodes est un aspect clé de la programmation. Lorsque cela est bien fait, le programme « devient en grande partie autodocumenté, ce qui signifie que la fonction du programme est tout à fait claire à la moindre lecture du code », explique Warne.

Cependant, le nommage en programmation est l'une des activités les plus difficiles pour le programmeur, selon lui.

4 – Cohérence

« Le plus grand défi dans la programmation est probablement la gestion de la complexité. La cohérence est un moyen de gérer la complexité. Il réduit une partie de la complexité en nous permettant de voir les modèles et déduire comment les choses sont nommées, utilisées et manipulées », affirme Warne, qui explique que la cohérence permet au développeur de ne pas avoir à utiliser la puissance du cerveau pour se rappeler des exceptions et des variables aléatoires. Au lieu de cela, il peut se concentrer sur la « complexité essentielle et la complexité non accidentelle. »

D'après Warne, la cohérence est importante dans tous les aspects de la programmation. Elle s'applique aux noms de variables, méthodes, structures, interfaces utilisateur, gestions des erreurs, documentations, etc.

5 – L'apprentissage

Le développeur apprend constamment. « Avant d’intégrer une nouvelle fonctionnalité, il doit comprendre ce qu'elle est censée faire. Avant de modifier un code existant, il doit comprendre le fonctionnement de celui-ci, pour adapter ce qui doit être ajouté », explique Warne, pour qui l'apprentissage rapide rend un développeur plus efficace.

Au vu de l'évolution des plateformes et des langages, Warne conclut que la vie d'un programmeur n'est jamais ennuyeuse. Une situation qui convient parfaitement au geek qu'il est.

Source : blog Henrik Warne

Et vous ?

Selon vous, qu'est-ce qui fait un bon programmeur ? Êtes-vous d'accord avec Warne ?

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

Avatar de tatayo
Expert éminent https://www.developpez.com
Le 05/07/2014 à 8:38
Le mauvais développeur, il prends son cahier des charges, l'analyse, puis développe. OK.

Le bon développeur, il prends son cahier des charges, l'analyse, puis développe. Mais c'est pas pareil...

34  0 
Avatar de Potomac
Membre habitué https://www.developpez.com
Le 05/07/2014 à 17:06
oui ce genre d'article oublie souvent que les développeurs sont avant tout au service de l'entreprise, avec des contraintes, un contexte qui fait que tous ces bons conseils ne sont pas toujours applicables dans la vie réelle
9  0 
Avatar de Heptaeon
Membre habitué https://www.developpez.com
Le 05/07/2014 à 14:50
J'entends toujours qu'un bon code est modulaire, lisible, testé, optimisé, mais le meilleur n'est il pas le code suffisant ? Il y à la théorie de la bonne programmation et les moyens qu'elle nécessite. N'avons nous pas toujours des contraintes matériels au delà de ce qu'est théoriquement un "bon code".

Je crois qu'on a tous déjà fait de petits projets dans l'urgence "mal codé". Souvent on ne les retouchent pas pendant des années, car ils font ce qu'on leur demande. Au final on ne les change que quand les technologies ont évolué d'une manière qu'on aurait pas pu prévoir (breaking change, faillite d'une techno, etc...).

Les développeurs ne se perdent ils pas trop dans des considération technique ? Alors que ce qu'on leur demande la plupart du temps c'est de répondre "rapidement" a un besoin ? Je ne dit pas de faire de très gros projet en free-style non plus => la notion de "suffisant". Parfois ne faut il pas "mal programmer" pour être un "bon programmeur" ?

Selon Warne, l'objectif de la programmation est de résoudre des problèmes.
Je suis bien d'accord avec ce point, mais résoudre des problèmes techniques ou ceux de l'entreprise ?
7  0 
Avatar de chiv
Rédacteur https://www.developpez.com
Le 06/07/2014 à 2:06
A mon humble avis, ce qui fait un bon programmeur comme dans toutes les activités, c'est avant tout la passion. Pour devenir vraiment bon dans quelque chose, il faut y prendre du plaisir. Ceux qui prennent du plaisir à faire leur travail ont plus de motivation et d'enthousiasme et surtout l'envie permanente de s'améliorer. Ils fournissent généralement un effort nettement supérieur en auto-formation et veille technologique.
A l'inverse, ceux pour lesquels leur activité n'est qu'un moyen de remplir le frigo n'ont pas de raison de faire du très bon travail. Après tout quand on en fait du bon, voir du moyen, au lieu du très bon on est payé pareil. Ceux là travaillent avec à l'esprit le soucis de faire moins et pas le soucis de faire mieux. Ils se contentent souvent de faire "du code qui marche", ce qui n'est pas du tout la même chose que "du code de qualité".
9  2 
Avatar de pmithrandir
Expert confirmé https://www.developpez.com
Le 07/07/2014 à 14:56
Citation Envoyé par Farid63 Voir le message
C'est moi ou ce type d'article revient tous les mois pour dire exactement la même chose ? (Nommage, analyser le problème, apprentissage constant...)

Une chose appréciable serait que les blogueurs qui pondent se genre d'article chacun leur tour nous donnent quelques conseils pour les mettre en application.

Le nommage. Comment bien nommer une variable ? numeroDeTelephone, numTel, ndt, phoneNumber ?

Pour la personne qui dit qu'il faut avant tout être passionné,
Pourquoi est-ce qu'un développeur doit être passionné pour bien faire son travail?
Est-ce qu'on en ai encore à se dire que le meilleur c'est celui qui code toute la nuit et qui à 15 projets perso en cours?
Un déménageur peut parfaitement faire son boulot sans être passionné, pourquoi ça ne pourrait pas être le cas dans le développement informatique?
Je pense que la programmation demande une part importante de créativité.
On trouve peu de personne qui n'aiment pas leur métier et qui continu à faire preuve de créativité.
7  0 
Avatar de Zefling
Membre expert https://www.developpez.com
Le 05/07/2014 à 9:47
Citation Envoyé par asgard20032 Voir le message
Selon moi, le bon developpeur est celui qui est capable de faire un code auto descriptif et modulaire aisement, et qui met plus l'emphase sur la qualiter du code que sur son optimisation, lorsque loptimisation est negligable.
Oui, ça serait vrai sur du code fait par une seule personne. Dans la réalité c'est rarement le cas. T'as 10 personnes qui sont passées sur le code que le dév doit modifier et t'as rarement le temps de tout remettre en ordre. De plus, tout le monde n'a pas la maîtrise parfaite de n frameworks utilisés sur l'ensemble des projets.

J'ai l'impression que le type décrit un dév parfait dans un monde parfait. Sauf que le monde ne l'est pas, et je dirais que une bonne qualité, c'est de savoir demander de l'aide quand on sait pas ou que l'on ne comprend pas plutôt que de faire n'importe quoi.

En tout cas, le point 2 me semble utopiste. Personne peux tout prévoir, sinon c'est un dieu. Et une très grande modularité du code prend énormément de temps que l'on a rarement sauf si on fait de la R&D, et encore ça ne sera jamais parfait.
5  0 
Avatar de SylvainPV
Rédacteur/Modérateur https://www.developpez.com
Le 07/07/2014 à 0:18
Un bon programmeur est un programmeur qui cherche à savoir ce qui fait du programmeur un bon programmeur.
NB: cela s'applique également aux bûcherons
5  0 
Avatar de Pergos
Membre habitué https://www.developpez.com
Le 08/07/2014 à 18:21
Pour moi, un bon développeur est aussi un "bon fainéant" qui sait où il passe son temps.

Par exemple, sur de vieilles applications, casser un bout du code, ça a un cout non négligeable en temps de tests, mais un code devenu illisible ou instable, ça a aussi un coût : un bon développeur, en "bon fainéant" qu'il est, est capable de savoir quand le fait de casser ce bout de code va lui "éviter de perdre trop de temps" sur la maintenance.
Idem pour les noms de variables ou noms de fonctions : se rappeler de tout, ça squatte la mémoire, ça fait passer du temps dans d'autres portions de code pour être sûr qu'on a bien compris à quoi servait la variable/fonction,... Donc renommer intelligemment des variables/fonctions, c'est avoir "moins besoin de monopoliser son cerveau", et passer moins de temps à relire le code.

Bref, un bon développeur est un "fainéant intelligent" !
4  0 
Avatar de Potomac
Membre habitué https://www.developpez.com
Le 05/07/2014 à 0:41
tiens encore une énième variation sur le thème "qu'est-ce un bon développeur/mouton à 5 pattes ?"

la dernière news de ce type remontait à il y a quelques jours :

http://www.developpez.com/actu/72719...us-productifs/

je pense qu'il y a plusieurs échelons à gravir, on ne nait pas "bon développeur" mais on le devient petit à petit, et souvent dans la douleur :

- échelon zéro: le point de départ, décrocher son diplôme en maitrisant certains points : l'algorithmie, les concepts de la programmation objet, un peu de base de données ( SQL ), un peu de web, un peu de UML, ça donne un développeur bac+2,

- échelon un: on a le diplôme, quelques stages et CDD, on est tout content mais on code comme un débutant en faisant plein d'erreurs, et en plus l'entreprise ne fait rien pour nous mettre dans le droit chemin ( c'est même l'inverse qui se produit ! Ah les SSII... ), le code n'est pas optimisé, on se rend compte que l'école ne nous a pas appris à faire des tests unitaires, ni à programmer en modèle-vue-contrôleur ( MVC ), et pire on ne connait pas les principaux framework de développement web, du coup on réinvente sans cesse la roue

- échelon deux : on a corrigé les manquements de la formation, on ne réinvente plus la roue grâce à la maitrise d'un ou deux framework à la mode, on produit du code plus ou moins optimisé mais on sent qu'on peut encore mieux faire,

- échelon trois : on a découvert l'existence des design pattern, l'extreme programming, ça a été un long chemin de croix pour tout maitriser mais ça va beaucoup mieux, on peut enfin s’auto-proclamer "développeur 5 étoiles"
6  3 
Avatar de asgard20032
Futur Membre du Club https://www.developpez.com
Le 05/07/2014 à 1:54
Selon moi, le bon developpeur est celui qui est capable de faire un code auto descriptif et modulaire aisement, et qui met plus l'emphase sur la qualiter du code que sur son optimisation, lorsque loptimisation est negligable.
3  0