Styles

jeudi 28 août 2008

La lecture plaisante de code source, ou comment éviter de perdre son temps

Vous n'avez pas l'impression que l'informatique tourne en rond en ce moment, qu'elle ne cherche plus à innover mais simplement à recréer ce qu'elle a déjà oublié ?

Pourquoi recréer le client lourd dans le navigateur Web quand justement, on n'était sorti du client lourd sous Windows ? Pourquoi tant d'effort déployé par des myriades de passionnés d'informatique pour produire des outils permettant uniquement de créer d'autres outils, etc ?

Quand on voit le nombre de frameworks redondants, d'applications Web reproduites à l'identique en des milliers d'exemplaires différents mais pourtant bien semblables tel que les CMS... on peut se demander d'où vient le problème.

A mon avis, c'est que le développeur de base, chez lui, le passionné d'informatique s'imagine capable de créer un monde à son image quand il se met à développer un nouveau logiciel "from scratch".

Le problème c'est que quand il décide de partir de zéro pour créer un nouveau logiciel, dans 90% des cas, son effort est négatif pour la communauté opensource.

En effet, l'effort qu'il pourrait passer à améliorer un logiciel déjà existant, ce passionné le passe à recréer entièrement un logiciel et tout ce qui va avec, toutes les fonctionnalités communes à tous les même type de logiciel, bref à recréer la roue.

Traduction pour le nerd moyen : La création d'une nouvelle itération d'un logiciel déjà existant n'a pour résultat que de diviser l'effort qui pourrait être mis sur une seule itération, sur un seul logiciel.

Développer un nouveau logiciel à partir de rien pourrait sembler intéressant dans un premier temps, mais quand on y pense, cela est vain. A quoi bon recréer toutes les routines de support de l'application alors qu'elles existent déjà sous d'autres formes dans des logiciels similaires ?

Il est pourtant beaucoup plus intéressant d'essayer d'améliorer les logiciels existants. Pour un développeur qui cherche de la reconnaissance par son travail de programmation, la contribution à des projets largement établis sur le Web est beaucoup plus valorisant et instructif que de recommencer dans son coin un bout de code.

La difficulté première, c'est que la plupart des développeurs n'aiment pas lire : que ce soit des livres ou du code source. Or tout est là : c'est dans la capacité à comprendre le code source de logiciels complexes que la productivité d'un développeur peut augmenter.

Lire du code source est extrêmement instructif, il permet de se confronter personnellement à des schémas de pensés contradictoires, à s'immiscer dans la logique profonde d'un autre développeur, voire, plusieurs développeurs.

Au delà du langage de programmation, c'est toute l'intelligence d'un être humain qui apparaît à travers le code source. On peut y voir comment un développeur met en œuvre des outils limités pour obtenir le comportement réellement souhaité.

La lecture du code source est très instructive car elle permet de s'apercevoir que même pour des problèmes en apparence simple, le programmeur doit déployer toute son intelligence pour aboutir à une solution élégante.

L'élégance est affaire de bon goût mais dans le cas de la programmation, chaque développeur y apposera son échelle de valeur. Alors que certains vont chercher l'optimisation à tout prix, d'autres, rechercherons la robustesse, d'autres la maintenabilité, etc. C'est par l'appréciation de toutes ces caractéristiques, qu'un développeur peut sentir l'élégance d'une construction.

Aucun commentaire: