Trouvez-vous souvent le code des autres mauvais ? Une développeuse décrit l'évolution de sa perception et prône l'humilité

Le 07/09/2010, par Idelways, Responsable Actualités


Sara est une développeuse .NET qui se décrit comme une « Gerd » (Nerd au féminin).

Son blog est plutôt flashy mais le fond y est sérieux (pas triste, juste sérieux). Elle y parle de son expérience quotidienne du développement. Et parmi ses billets, l'un d'eux est particulièrement pertinent. Sara y décrit l'évolution de sa perception du code sources des autres.

Une expérience que de nombreux développeurs (et développeuses donc) ont déjà vécue.

Au départ, avoue Sara, elle trouvait systématiquement le travail des autres mauvais. Elle reprenait le code « from scratch » dès le premier coup d'œil.

Mais bien souvent, une fois le travail refait, son premier jugement devait être modéré. Ce n'est qu'après avoir tout ré-écrit qu'elle arrive à comprendre quelles contraintes ont obligé ses prédécesseurs à coder d'une manière qu'elle avait, au premier abord, qualifiée de mauvaise.

Avec l'expérience, nous dit-elle, elle a appris à ne jamais critiquer le travail des autres. Tout du moins pas avant de comprendre le projet en entier et en cerner toutes les contraintes.

Cette modération a du bon. Elle évite par exemple de se demander qui a bien pu coder ce « truc horrible ». Avant de réaliser que c'est soi-même, quelques mois plus tôt.

Elle permet également de ne pas trop « avoir les chevilles qui gonflent » en se trouvant systématiquement meilleur que ses confrères.

Une modération qui se ferait (trop) rare ?

Et vous ?

Votre travail a-t-il été injustement critiqué par un tiers ? Comment faites-vous pour protéger votre réputation en livrant vos sources ?

Trouvez-vous souvent (systématiquement) le code source des autres mauvais ? Ou en tout cas moins bon que ce que vous auriez pu faire ?
Comment expliquez-vous ce phénomène ? Est-il lié au genre (homme-femme) ou pas du tout ?

Source : Your code sucks

En collaboration avec Gordon Fowler

Les rubriques (actu, forums, tutos) de Développez :
 ASP
 C
 C++
 CSS
 PHP


Les derniers commentaires postés :
Réponse Retrouver la discussion sur le forum

Avatar de smoufid smoufid
Membre du Club
le 28/10/2010
bonjour,
il faut etre humble et accepter le travail des autres.
Avatar de duboisa duboisa
Membre du Club
le 21/11/2010
je suis assez s'accord avec _skip
c'est vrai qu'un code écrit par un débutant peut être difficile à lire (et à valider) idem par un débutant + 2 (qui essaie de factoriser à mort)
mais avec l'expérience on reconnait le genre d'auteur, et on s'adapte.
la revue de code est un exercice.
Avatar de atc666 atc666
Membre du Club
le 10/04/2011
quand je lit vos commentaires je me dit que pour vous la chose la plus importante c est que ça soit facile a lire ...
donc si je vous comprend bien , si le code est lent et totalement dépourvu de toutes formes d optimisation , mais qu'il est facile a lire et simple a comprendre c est top ?
j ai vu parmi vos commentaires quelqu’un qui écrit que si il trouve un code qui est top rapide mais difficile a comprendre , elle le jetterai a la tête de celui qui l as "pondu" ... mais pourquoi ne pas au contraire justement faire l'effort de comprendre ce code et d en tirer des leçons pour améliorer la vitesse de son propre code ?
je pense que beaucoup se place uniquement de leur point de vue et jamais de celui du client.
le code "spaghetti" je comprend qu on aime pas ca car c est rarement rapide comme code voir meme je pense jamais
Avatar de ymoreau ymoreau
Modérateur
le 11/04/2011
C'est un vaste débat que tu ouvres, mais je dirais que dans l'opinion générale le cout de développement est bien plus cher que le cout d'exécution. Avec les machines qu'on a de nos jours les optimisations au niveau code (et pas au niveau architecture ou conception) sont, je pense, négligeables en gain d'exécution. Alors que la compréhension du code peut faire gagner beaucoup temps pour ceux qui devront le faire évoluer, et ce temps là coute cher (au client aussi d'ailleurs).
Avatar de Klaim Klaim
Membre Expert
le 11/04/2011
L'explication requiert en fait un peu plus de bon sens basé sur l'expérience et des faits :

- un code facile à comprendre est plus facile à modifier parcequ'on comprends l'intention et donc on peut l'ajuster en maintenant cette intention;
- un code difficile à lire est source de problèmes parcequ'on ne comprends pas facilement l'intention, ce qui est rééllement voulu;
- par conséquent, il est plus facile d'avoir un code lisible au départ et de le rendre illisible pour régler des soucis de performance, si il y en a;
- de plus, la lisibilité du code n'est pas forcément lié à la rapidité de celui-ci : il y a des tas d'exemples de code qui sont plus rapide quand ils sont écrit simplement, parceque comme ils sont plus facile à lire aussi pour le compilateur ou l'interpreteur, il devient plus facile à optimiser (parceque connaitre les intention permet de déterminer ce qu'on considère comme acquis, les invariants).

Donc en gros, l'idée c'est de toujours écrire le plus lisiblement possible, en pensant au mec (qui peut être soit-même) qui reviendra sur ce code dans 3 mois et qui ne saura rien dessus. (Oui, vous aurez oublié).

Comme ça, il aura de meilleures chances de modifer le code dans le bon sens, de rendre potentiellement le code plus performant si c'est le but de la modification.

Et enfin, ceux qui rejettent le code pas clair même si plus performant ont raison sauf si la performance est requise pour le code en question. Cela dit, je n'ai jamais vu de code très performant qui ne pouvait pas être un peu plus clair que sa version "brute". Ya toujours moyen de rendrre plus clair sans changer les instructions finales. Seulement ça requiert certainement plus d'expérience.
Avatar de Paul TOTH Paul TOTH
Expert Confirmé Sénior
le 11/04/2011

Citation:





Envoyé par atc666
Voir le message

quand je lit vos commentaires je me dit que pour vous la chose la plus importante c est que ça soit facile a lire ...
donc si je vous comprend bien , si le code est lent et totalement dépourvu de toutes formes d optimisation , mais qu'il est facile a lire et simple a comprendre c est top ?
j ai vu parmi vos commentaires quelqu’un qui écrit que si il trouve un code qui est top rapide mais difficile a comprendre , elle le jetterai a la tête de celui qui l as "pondu" ... mais pourquoi ne pas au contraire justement faire l'effort de comprendre ce code et d en tirer des leçons pour améliorer la vitesse de son propre code ?
je pense que beaucoup se place uniquement de leur point de vue et jamais de celui du client.
le code "spaghetti" je comprend qu on aime pas ca car c est rarement rapide comme code voir meme je pense jamais



tout dépend du contexte, si c'est pour gagner 1/2 seconde sur une appli de gestion dont la force est dans la gestion de données techniques particulièrement complexes, oui il faut jeter le code ultra optimisé qui rend les choses incompréhensibles.

maintenant si le temps de réaction de l'application est critique, effectivement on sacrifiera la lisibilité pour gagner les précieuses millisecondes dont on a besoin.

mais dans 90% des cas c'est l'algorithme et les hypothèses de départ qui sont à revoir, pas les lignes de code.
Avatar de SirDarken SirDarken
Modérateur
le 11/04/2011
Pour ma part, je suis toujours entrain de raler sur le code que j'ai moi même pondu.

Ca fait deux ans que je code, et pourtant chaque jour j'apprend des trucs, donc je suis plutot cool face au code de mes confrères/consoeurs même si il m'arrive de m'arracher les cheveux à reprendre le code.
Avatar de Klaim Klaim
Membre Expert
le 11/04/2011
Des tas de gens avec 10 ou 20 ans d'experience disent pareil. On finiras pas d'apprendre dans ce métier (et quelque part, tant mieu).
Avatar de zaventem zaventem
Membre Expert
le 12/04/2011

Citation:





Envoyé par atc666
Voir le message

quand je lit vos commentaires je me dit que pour vous la chose la plus importante c est que ça soit facile a lire ...



Ce qui compte, c'est qu'il soit le plus facile à lire possible.


Citation:





Envoyé par atc666
Voir le message

donc si je vous comprend bien , si le code est lent et totalement dépourvu de toutes formes d optimisation , mais qu'il est facile a lire et simple a comprendre c est top ?



Étrangement, tous les codes lents et non-optimisés que j'ai vu étaient tout sauf clairs, structurés et faciles à comprendre. Les codes faciles à comprendre sont (en règle générale) issus d'une vraie réflexion sur les algorithmes utilisés, sur une bonne compréhension de la problématique et lorsqu'un passage plus tricky est nécessaire des quelques mots de commentaires qui disent ce que fait le code et pourquoi.
Retrouvez la suite de la discussion

Réponse

Publicité

Best Of

Actualités les plus lues

Semaine
Mois
Année
  1. Index Tiobe : Java recule encore, mais demeure toujours numéro 1, suivi de près par C, Visual Basic cède des parts à VB.NET 427
  2. Chrome 17 disponible en version finale : plus rapide et sécurisé avec des correctifs pour 20 vulnérabilités dont une critique 23
  3. Microsoft ouvre aux autres compilateurs C++ AMP, la spécification pour la conception d'applications parallèles C++ utilisant le GPU 22
  4. Android : Counterclank ne serait pas un cheval de troie, Symantec se rétracte et rejoint l'avis de Lookout 10
  5. Les données des logs Web pourraient identifier l'activité des machines et menacer la vie privée, selon les chercheurs de Microsoft 87
  6. RIM : « 13% des développeurs ont gagné plus de 100.000 $ sur l'AppWord », Qt et open-source au menu du BlackBerry DevCon Europe 0
  7. Des disques durs 100 fois plus rapides bientôt disponibles ? Des chercheurs accélèrent la vitesse de stockage avec la chaleur 19
  8. Accenture recrute des développeurs et des ingénieurs d'études SAP, Siebel, Java J2EE..., stagiaires, jeunes diplômés et expérimentés 3
  9. Canonical stoppe le financement de Kubuntu, l'avenir de l'OS désormais entre les mains de sa communauté 12
  10. Firefox : Mozilla travaille sur un système de notifications Push pour son navigateur, le futur remplaçant du RSS ? 4
Page suivante
  1. Index Tiobe : Java recule encore, mais demeure toujours numéro 1, suivi de près par C, Visual Basic cède des parts à VB.NET 427
  2. Free Mobile prendrait les français « pour des cons » et détruirait le modèle social, d'après un syndicat d'Orange 113
  3. Le SDK Kinect pour Windows disponible en version finale 19
  4. Windows 8 : les modifications apportées à la gestion des fichiers suite aux retours des utilisateurs 39
  5. Chat du Club : nouvelle version avec envoi de fichiers et messages privés améliorés 148
  6. Megaupload : le point sur la première "cyber-guerre" de 2012, quelle technologie voyez-vous succéder au DDL et au streaming ? 127
  7. Megaupload : deux semaines de plus avant la suppression des fichiers des utilisateurs, L'EFF lance MegaRetrieval pour aider ceux-ci 490
  8. Sortie de la 6ème Release Candidate de PHP 5.4.0, avec plusieurs corrections de bogues 9
  9. NetBeans 7.1 disponible en français grace à la traduction de sa communauté. 33
  10. Brevets : jugement préliminaire en faveur de Motorola dans la bataille avec Apple pour violation de brevets dans Android 87
Page suivante
  1. jQuery Mobile fin prêt pour la production, la version 1.0 finale de l'UI pour appareils mobiles est 30 à 50 % plus rapide depuis la RC2 4
  2. LimeOS : le fork de Chrome OS disponible avec 11 mois de retard, mais avec les mises à jour automatiques 211
  3. Index Tiobe : Java recule encore, mais demeure toujours numéro 1, suivi de près par C, Visual Basic cède des parts à VB.NET 427
  4. Comment prendre en compte l'utilisateur dans vos applications ? Pour un développeur, « 90 % des utilisateurs sont des idiots » 225
  5. Quels sont vos hébergeurs Web préférés ? 84
  6. Firefox 4 déjà téléchargé plus de 15 millions de fois, le navigateur de Mozilla connaît un beau succès 337
  7. Google Chrome arrache la deuxième place à Firefox en terme de parts de marché des navigateurs 328
  8. Quel est LE livre que tout développeur doit lire absolument ? Celui qui vous a le plus marqué et inspiré 96
  9. Android 3.0 : SDK et API en versions finales 69
  10. Quelles règles les programmeurs débutants devraient-ils toujours respecter ? Un développeur expérimenté livre ses 7 règles d'or 177
Page suivante

Developpez.com

Communauté

Formez-vous

Evénements

Décideurs

Téléchargez

 
 
 
 
Partenaires

Hébergement Web