Quelles sont les habitudes de programmation qui peuvent faire de vous un bon développeur ?
Expliquez les avantages que vous en avez tirés

Le , par Michael Guilloux, Chroniqueur Actualités
Quelles sont les habitudes de programmation qui caractérisent un bon développeur ?
Dans chaque projet de développement informatique, il y a une finalité, celle de livrer une solution fonctionnelle qui répond au moins aux exigences définies dès le départ ou ajoutées au cours du développement. L’atteinte de cet objectif dépend, entre autres éléments, des compétences développées et de l’expérience acquise au fil de temps. Chaque développeur peut se caractériser par une manière singulière de travailler qui inclut de petites astuces, pratiques ou habitudes qui lui permettent d’aller plus ou moins vite et de livrer un travail d’une certaine qualité.

En fonction de ses habitudes de programmation, un développeur peut gagner plus ou moins en efficacité et en productivité. La liste est certainement plus longue, mais on peut citer entre autres les habitudes suivantes :

  • coder intensivement ;
  • écrire du code simple et être à l’affût de simplifications ;
  • ne pas chercher à optimiser le code au début : écrire d’abord un code fonctionnel et l’optimiser quand cela sera nécessaire. Ne pas chercher à préoptimiser le code en vue de faire face à toutes sortes de scénarios qui pourraient se produire ;
  • se concentrer sur la tâche la plus importante ;
  • tout documenter et commenter ;
  • faire des pauses régulièrement ;
  • maîtriser parfaitement ses outils : les outils que vous utilisez régulièrement ne doivent pas avoir de secret pour vous ;
  • utiliser les lignes de commandes plutôt que les interfaces graphiques (GUI) ;
  • écrire du code lisible et compréhensible, cela inclut par exemple la définition et le respect de règles de nommage ;
  • lire les sources des projets : vous pouvez commencer à résoudre des problèmes simplement en vous souvenant d’une solution que vous avez vue ailleurs. Vous pouvez donc profiter de la disponibilité des codes source des projets GNU/Linux pour les télécharger afin de pouvoir y jeter un coup d’œil ;
  • utiliser un IDE performant ;
  • corriger les bogues avant d’ajouter de nouvelles fonctionnalités ;
  • écrire des tests unitaires ;
  • taper sur Google et être actif sur les forums techniques ;
  • veille technologique : suivre régulièrement les technologies utilisées et leurs alternatives ;
  • parcourir toutes les documentations : il ne s’agit pas d’apprendre des choses en profondeur, mais se faire juste une idée de ce qui est possible. Ainsi, lorsque vous êtes face à un problème, vous pouvez déjà avoir une piste sur les solutions possibles et retourner dès ce moment à la documentation pour plus de détails sur la mise en œuvre de la solution.


Il s’agit d’un sondage à choix multiples dont le but est de savoir quelles sont les petites habitudes qui permettent le plus à un développeur d’être plus efficace et plus productif. Nous nous intéressons également aux avantages que celles-ci apportent aux développeurs. Mais n’hésitez pas non plus à dire dans les commentaires, si vous l’estimez, pourquoi l’un des éléments cités ci-haut ne permet pas aux développeurs d’être plus efficaces et plus productifs.

Et vous ?

Quelles sont les petites habitudes de programmation qui peuvent faire de vous un bon développeur ?
Expliquez les avantages que vous en avez tirés.


Vous avez aimé cette actualité ? Alors partagez-la avec vos amis en cliquant sur les boutons ci-dessous :


 Poster une réponse

Avatar de Pyramidev Pyramidev - Membre chevronné https://www.developpez.com
le 11/06/2016 à 15:52
Bonjour,

Mes remarques point par point :
  • coder intensivement
    Selon le dictionnaire de l'Académie française, 9e édition, intensif signifie Dont l'importance, le rendement, l'efficacité sont portés au-delà de la mesure ordinaire par des efforts, des moyens particuliers. Tautologiquement, oui, coder efficacement en faisant des efforts est efficace, mais ce n'est pas une information. Donc je n'ai pas coché ce point.
  • écrire du code simple et être à l’affût de simplifications
    C'est une bonne pratique. Le code sera plus vite compris donc plus facilement maintenu.
  • ne pas chercher à optimiser le code au début : écrire d’abord un code fonctionnel et l’optimiser quand cela sera nécessaire. Ne pas chercher à préoptimiser le code en vue de faire face à toutes sortes de scénarios qui pourraient se produire
    Ça dépend de quelles optimisations on parle. Je suis pour les optimisations quand elles ne gênent ni la compréhension, ni la maintenance. J'ai vu trop souvent des vector là où la bonne structure de données aurait été une table de hachage.
  • se concentrer sur la tâche la plus importante
    Je l'aurais reformulé en savoir prioriser les tâches. Quand on n'a pas le temps de tout faire dans les temps, c'est une compétence utile. Mais ce choix n'appartient pas toujours aux développeurs. La hiérarchie impose ses priorités.
  • tout documenter et commenter
    C'est dommage que le mot tout apparaisse car cela incite moins à cocher ce point. Je le coche quand même parce que j'ai vu trop souvent des développeurs qui ne documentaient rien et qui ne commentaient presque jamais alors qu'ils en avaient l'occasion, même si la hiérarchie avait en partie une responsabilité là dessus en favorisant l'augmentation de la dette technique.
  • faire des pauses régulièrement
    Cela dépend du rythme de travail et de la personne.
  • maîtriser parfaitement ses outils : les outils que vous utilisez régulièrement ne doivent pas avoir de secret pour vous
    Il me semble important de bien connaître le langage de programmation que l'on utilise et de savoir ce que permettent de faire les bibliothèques que l'on utilise.
    Mais les outils au sens large peuvent avoir beaucoup de fonctionnalités qu'on n'utilise pas, donc je n'ai pas coché ce point.
  • utiliser les lignes de commandes plutôt que les interfaces graphiques (GUI)
    Gné ? A quoi ça sert ?
  • écrire du code lisible et compréhensible, cela inclut par exemple la définition et le respect de règles de nommage
    Oui. Le code sera plus vite compris donc plus facilement maintenu. Déjà évoqué ci-dessus.
  • utiliser un IDE performant
    Ce choix n'appartient pas toujours au développeur. Par exemple, j'ai déjà subi C++ Builder.
  • lire les sources des projets : vous pouvez commencer à résoudre des problèmes simplement en vous souvenant d’une solution que vous avez vue ailleurs. Vous pouvez donc profiter de la disponibilité des codes source des projets GNU/Linux pour les télécharger afin de pouvoir y jeter un coup d’œil
    Je n'ai pas lu attentivement de code source de projets open source, donc je ne me prononcerai pas sur ce point.
  • corriger les bogues avant d’ajouter de nouvelles fonctionnalités
    Oui. Mais ce choix n'appartient pas toujours aux développeurs. La hiérarchie impose ses priorités.
  • écrire des tests unitaires
    Oui. D'ailleurs, j'ai vu trop souvent des développeurs ne pas savoir ce qu'étaient des tests unitaires. Mais, personnellement, je pense que c'est moins prioritaire que la documentation.
  • taper sur Google et être actif sur les forums techniques
    Google n'est pas le seul moteur de recherche et les forums techniques ne sont qu'une source de savoir parmi d'autres. Donc je n'ai pas coché ce point. J'aurais reformulé ce point en se former continuellement. Dans ce cas, j'aurais coché.
  • veille technologique : suivre régulièrement les technologies utilisées et leurs alternatives
    Oui.
  • parcourir toutes les documentations : il ne s’agit pas d’apprendre des choses en profondeur, mais se faire juste une idée de ce qui est possible. Ainsi, lorsque vous êtes face à un problème, vous pouvez déjà avoir une piste sur les solutions possibles et retourner dès ce moment à la documentation pour plus de détails sur la mise en œuvre de la solution.
    Il y a encore le mot toutes qui me gêne. Dans mon expérience, oui, lire le peu de doc existant était une bonne idée. Il y a plusieurs fois où on m'a demandé de développer un truc alors qu'il était déjà implémenté.


J'ajoute aussi :
  • chercher activement des informations sur le besoin
    Sinon, on risque d'implémenter un truc qui ne correspond pas au besoin.
  • limiter la taille des fonctions
    J'ai vu plusieurs fonctions qui dépassaient les 1000 lignes et il était difficile de les analyser.
  • factoriser le code
    Et éviter les copier-collers. Par exemple, une fois, j'ai vu un copié-collé d'une fonction de 1500 lignes.
    De plus, dans une même entreprise, quand plusieurs applications sont écrites dans le même langage, il vaut mieux qu'il existe un code commun plutôt que chaque application réimplémente la même chose à sa sauce. Cela demande de la communication entre développeurs.
  • communiquer avec les autres développeurs
    Voir le point précédent.
  • écrire du code facile à déboguer pas à pas
    Par exemple, en C++, le code
    Code : Sélectionner tout
    1
    2
    3
    4
    5
    int entier1 = uneFonctionQuiRetourneUnEntier(param1);
    int entier2 = uneFonctionQuiRetourneUnEntier(param2);
    int entier3 = uneFonctionQuiRetourneUnEntier(param3);
    if(entier1 + entier2 < entier3)
        doSomething();
    sera plus facile à déboguer pas à pas que :
    Code : Sélectionner tout
    1
    2
    if(uneFonctionQuiRetourneUnEntier(param1) + uneFonctionQuiRetourneUnEntier(param2) < uneFonctionQuiRetourneUnEntier(param3))
        doSomething();
Avatar de foetus foetus - Expert confirmé https://www.developpez.com
le 11/06/2016 à 17:58
Citation Envoyé par Pyramidev Voir le message
  • utiliser les lignes de commandes plutôt que les interfaces graphiques (GUI)
    Gné ? A quoi ça sert ?
Il y a 2 approches

La première c'est de coder en "quick and dirty" en loguant (console/ fichier/ réseau) tout un tas de choses.
Par exemple pour un programme réseau, faire une GUI pour afficher les trames réponses et leurs analyses cela demande du temps.
Et en plus, souvent tu ne vas pas pouvoir intégrer cette GUI "debug" dans le "programme final" (si ce dernier est une GUI) (à moins que tu fasses une GUI 2 en 1 avec une très bonne séparation pour passer de l'1 vers l'autre)

La deuxième approche, c'est une amélioration de la première. Parce que tu as tout fait en "quick and dirty", mais tu veux que l'affichage soit plus lisible, tu veux plus d'options, ...
Tu vas greffer une ligne de commande avec des bascules ...
Mais cela demande du temps (à moins que tu l'as déjà fait 1 fois).

Mais quelque soit l'approche, ta ligne de commande sera [quasi] portable (au code O.S. spécifique), un exécutable léger sans dépendance (je sais les courriels font plus de 20 Mo, tout le monde à DropBox, ...).

Et en plus , si tu as bien fait ta ligne de commande (qui doit être la compagnon du code bas niveau), le "programme final" va être la couche au dessus.

Édit: On peut voir cette ligne de commande aussi comme du test, puisque si elle bien faite, elle t'affichera l'erreur ou le problème le plus précisément possible.
Dans le "programme final", souvent on va devoir masquer les erreurs par des erreurs génériques.

Citation Envoyé par Pyramidev Voir le message

Voir le point précédent.
[*]écrire du code facile à déboguer pas à pas
Par exemple, en C++, le code
Code : Sélectionner tout
1
2
3
4
5
int entier1 = uneFonctionQuiRetourneUnEntier(param1);
int entier2 = uneFonctionQuiRetourneUnEntier(param2);
int entier3 = uneFonctionQuiRetourneUnEntier(param3);
if(entier1 + entier2 < entier3)
    doSomething();
sera plus facile à déboguer pas à pas que :
Code : Sélectionner tout
1
2
if(uneFonctionQuiRetourneUnEntier(param1) + uneFonctionQuiRetourneUnEntier(param2) < uneFonctionQuiRetourneUnEntier(param3))
    doSomething();
Pas d'accord dans ton exemple "lisible" tu as une ligne de plus 80 - 100 lignes en omettant les accolades ouvrantes/fermantes (je l'ai met toujours).

Édit: j'ai lu ta remarque à l'envers
Avatar de Pyramidev Pyramidev - Membre chevronné https://www.developpez.com
le 11/06/2016 à 18:16
foetus,
On n'a pas interprété utiliser les lignes de commandes plutôt que les interfaces graphiques (GUI) de la même manière.
Je l'avais compris comme, par exemple, utiliser SVN en ligne de commande au lieu d'utiliser un logiciel comme Tortoise SVN.
Par contre, pour un outil que l'on code soi-même, j'entends qu'on n'a pas toujours le temps de coder une interface graphique, ce qui, de toute façon, n'est pas incompatible avec le fait de pouvoir utiliser l'outil directement en ligne de commande.

Citation Envoyé par foetus Voir le message
Pas d'accord dans ton exemple "lisible" tu as une ligne de plus
Ce n'est pas une question de lisibilité.
Dans mon exemple avec if(entier1 + entier2 < entier3), quand on arrive à cette ligne, on peut connaître directement la valeur de ces trois entiers, par exemple en passant la souris dessus (avec un bon débogueur).
Par contre, dans mon autre exemple avec if(uneFonctionQuiRetourneUnEntier(param1) + uneFonctionQuiRetourneUnEntier(param2) < uneFonctionQuiRetourneUnEntier(param3)), pour connaître les valeurs des entiers retournés, il faut entrer dans la fonction, ce qui est moins pratique.
Avatar de el_slapper el_slapper - Expert éminent sénior https://www.developpez.com
le 12/06/2016 à 10:09
J'ai voté pour 3 grands classiques, on dirait : coder aussi simple que possible, coder aussi lisible que possible, et faire des tests unitaires. Ce que Kathy Sierra appelle du Girl Code.
Avatar de MikeRowSoft MikeRowSoft - Provisoirement toléré https://www.developpez.com
le 13/06/2016 à 1:48
Citation Envoyé par Michael Guilloux Voir le message
Et vous ?

Quelles sont les petites habitudes de programmation qui peuvent faire de vous un bon développeur ?
Expliquez les avantages que vous en avez tirés.
Ne pas utilisez que des modèles ou méthodes enseignés lors de formations ou études. Chose qui n'est pas apprécié mais ouvre des types d'usages quelques peu différentes.

Exemple d'exploitation de middleware, la liaison entre une base de données et "son interface graphique" via un réseau ou 127.0.0.1, interface généré automatiquement parce que le modèle d'interface est inclus à la base de données avec les modèles informations.

La seule fois où j'ai voulu appliquer, cela j'ai réussi à intrigué les puristes du tutoriel.
Avatar de bclinton bclinton - Membre habitué https://www.developpez.com
le 13/06/2016 à 9:05
Écrire du code simple et compréhensible.

Bien gérer les cas d'erreur (exceptions...).

Écrire des tests unitaires.

Utiliser un gestionnaire d'intégration continue et suivre les indicateurs quotidiennement (sonar, jenkins).

Ne pas hésiter à se remettre en question (refactoring, évolutions techniques)
Avatar de VivienD VivienD - Membre éprouvé https://www.developpez.com
le 13/06/2016 à 9:59
À mon sens, il manque un choix dans la liste, et pourtant! je trouve que c'est LA qualité essentielle à tout développeur: je veux parler de l'organisation. En effet, ça ne sert d'essayer de concevoir ou de coder un projet, si on ne se montre pas un tant soit peu structuré(e) dans son travail; sinon ça part dans tous les sens et une bonne partie des modules, si ce n'est la majorité, reste bloquée à l'état d'ébauche bancale, du moins dans le meilleur des cas.

Malheureusement, il m'arrive de me disperser, donc le fait que ça peut partir dans tous les sens puis en sucette ne m'est pas inconnu, loin s'en faut...
Avatar de Reward Reward - Membre confirmé https://www.developpez.com
le 13/06/2016 à 10:02
Privilégiez d'abord des qualités humaines avant la technique: curiosité et communication.

Car un projet informatique est avant tout une discussion entre humain avant d'être une discussion entre ordinateurs...

Sans ça, même avec un bagage technique conséquent, vous pouvez toucher une cible oui. Mais sera-t-elle la bonne cible ?
Avatar de RyzenOC RyzenOC - Membre confirmé https://www.developpez.com
le 13/06/2016 à 10:04
En utilisant un coding standard avec la concertation de l'équipe.

L'inconvénient d'un bon développeur c'est qu'il est facilement remplaçable, une personne programmant et indentant n'importe comment et sans commentaire, créant ces propres outils maisons/bibliothèques au lieu d'utiliser des bibliothèques existante et "universelle", c'est plus facile ensuite pour négocier une augmentation

utiliser un IDE performant
Je dirais plutôt utiliser un ordinateur performant, Visual Studio et mon IDE préférer mais je dirais pas qu'il est performant, il est très lourd (plus de 15Go) et peut être long à démarrer si t'as pas un I5, 8Go de ram et un SSD.
Les développeurs avec de mauvais outils (un Pentium ou un celeron avec 2-4Go de ram) sa existe encore malheureusement.
Avatar de vinmar vinmar - Membre confirmé https://www.developpez.com
le 13/06/2016 à 10:05
Le bon développeur, il va coder, il va tester unitairement et il va commiter. Le mauvais développeur... il va coder, il va tester et il va commiter... mais c'est un mauvais développeur.

Donc :
1. Ecrire du code simple et lisible et être à l’affût de simplifications (+commentaires, etc).
2. Ecrire des tests unitaires.
3. Avoir un environnement d'intégration continue.
Contacter le responsable de la rubrique Accueil