Nous avons presque tous une passion, un art qui nous définit et qui nous pousse à nous améliorer chaque jour. Pour certains, c'est un art plus conventionnel: La peinture, le dessin, le sport ou la poésie. Pour d'autres, il s'agit d'un art plus contemporain et moins connu, comme les jeux vidéo ou, comme dans mon cas, la programmation.

Cet article s'adresse à tous, pas juste aux programmeurs. Je me rends compte que la plupart des gens ne savent par ce que les développeurs font comme travail et c'est pourquoi j'ai décidé d'écrire sur les raisons qui me poussent à choisir cette passion et ce métier.

La résolution de problèmes

Je me considère chanceux dans la vie. J'ai eu l'occasion de développer une passion avec laquelle je puisse gagner ma vie aisément. De plus j'ai aussi eu la chance de découvrir ma passion à un âge qui m'a permis d'orienter facilement mes études. Mais l'argent n'est pas la principale raison pour laquelle j'ai choisi cette voie. (D'ailleurs, je ne roule quand même pas sur l'or, hein) Lors de mes études en sciences humaines, j'ai pris un cours complémentaire de programmation qui a changé ma vie. J'ai vécu le sentiment d'euphorie que l'on ressent quand on réussit à résoudre un problème, LE sentiment que je tente de reproduire à chaque jour. Si vous êtes programmeur, j'espère que vous avez vécu ce sentiment, je vous le souhaite. Ce sentiment est ressenti quand, après quelques heures de dur labeur, vous réussissez finalement à résoudre un dur problème de manière efficace et logique. C'est une jubilation quand enfin on s'exclame: « J'AI RÉUSSI! »

J'ai vécu le sentiment d'euphorie que l'on ressent quand on réussit à résoudre un problème, LE sentiment que je tente de reproduire à chaque jour.

Quand on commence à programmer, on se rend vite compte que la compétence la plus importante de ce métier est la capacité à décomposer les problèmes à leur plus simples formes, puis de les recomposer une étape à la fois. C'est pourquoi il est essentiel de bien comprendre la racine du problème. Si vous avez eu l'occasion de travailler avec des développeurs, c'est la raison pour laquelle nous posons autant de questions: nous devons connaître en détail vos méthodes et vos processus afin des les répliquer. Soyez patients avec nous, c'est vraiment la raison pour laquelle nous sommes si énervants avec nos questions et nos remises en question. C'est aussi la raison pour laquelle nous disons non quand le problème est trop complexe. Cela rend la décomposition du problème presque impossible et cela augmente drastiquement le risque de bogues ou de régressions dans le code.

Pour moi, résoudre un problème informatique, c'est un peu comme prendre une boule de verre et la lancer sur un mur de brique de toute ses forces. Elle se brise alors en plus petits morceaux. Parfois, ce n'est pas encore assez. Il faut alors prendre les plus gros morceaux et les relancer sur le mur jusqu'à obtenir une fine poudre de verre. Puis, le plaisir commencer réellement. À l'aide de colle (c'est-à-dire l'algorithmie), il faut recoller chacun des morceaux un à un. Cela semble être une tâche fastidieuse. Et s'en est une effectivement. C'est comme un charpentier qui travaille son bois, ou un dessinateur qui dessine son portrait un trait à la fois: c'est une passion.

La beauté du code

Il peut être difficile de comprendre comment un code peut être beau. Après tout, ne s'agit-il tout simplement pas que d'un texte concis destiné à faire exécuter une commande à un ordinateur? Je répondrais à cela qu'un langage informatique s'apparente à un langage conventionnel. Oui, il est très simplifié, mais comme tout langage, il a ses subtilités et ses formes. D'ailleurs, qu'est-ce qu'un poème si ce n'est un texte qui utilise ces formes et subtilités pour faire passer un message? De la même manière, un morceau de code peut être élégant, beau et peut faire passer un message de manière efficace. Ce n'est pas tous les développeurs qui voient de la beauté dans le code, tout comme ce n'est pas tous les francophones qui sont capables d'apprécier la beauté d'un poème, encore moins d'en écrire.

Un beau code est concis et clair. Il rayonne de sens dès le moment où l'on pose ses yeux sur le texte. Il est important que cette qualité se dégage d'une ligne de code, car sinon, il faudra utiliser un autre langage, un langage humain, pour décrire le comportement de ce code: il faudra commenter cette ligne de code. Le code qui vieillit mal nécessite des commentaires. Le code qui saura se faire lire par de nombreux développeurs, le code qui saura se faire déboguer facilement sera le code qui aura le plus de chances de survivre à une réingénierie, ce sera le code qui vieillira bien. La concision et la clarté sont aussi les qualités d'un code qu'un développeur n'aura pas honte de montrer à ses pairs.

Un morceau de code peut être élégant, beau et peut faire passer un message de manière efficace.

Aussi beau que cela sonne, écrire du beau code qui fonctionne bien est excessivement difficile. Cela nécessite plusieurs passages d'écriture, de réécriture et de réflexion. C'est pourquoi il est important de faire des sessions de revue de code et c'est pourquoi il est important de consulter ses collègues pour obtenir leur opinion. Un beau code n'est cependant jamais le résultat d'une masturbation intellectuelle. Un code fonctionnel est le but principal, mais s'il peut être beau, pourquoi ne pas mettre un effort raisonnable à le rendre maintenable et lui donner une chance de survie? Il faut cependant accepter que parfois, le code ne peut pas être une oeuvre magistrale. Il vient un moment où l'on doit se contenter de ce que l'on a. Gardez bien ces barèmes en tête quand vous programmez, sinon, la beauté du code pourrait devenir un plaisir malsain et pourrait même vous empêcher de produire un code fonctionnel. Après tout, si votre code est beau mais qu'il ne fait rien, il n'aura pas grand chance de survivre très longtemps.

La beauté du code pourrait devenir un plaisir malsain.

Se garder à jour

Je pense que de se garder à jour est un autre aspect important de cette passion à la programmation. Je connais peu de compétences qui nécessitent autant de se mettre-à-jour que celle-ci. Ce qui est une bonne pratique un jour peut rapidement en devenir une moins bonne assez rapidement. Les besoins évoluent vite, donc la technologie évolue encore plus vite afin de prendre les devants. Le meilleur exemple de pourrait bien être l'évolution d'ASP.NET, le framework signé Microsoft pour faire du développement Web. Celui-ci est passé d'une phase RAD avec WebForms, à une phase beaucoup plus proche du Web avec ASP.NET MVC. La prochaine mise-à-jour avec la version 5 promet encore de nombreux changements afin de faciliter le vie des développeurs, et tout cela en l'espace de 15 ans. Les développeurs Web .NET d'aujourd'hui ne conçoivent plus la plateforme de la même manière du tout. Aujourd'hui, avec la version 5.0, ASP.NET ne conserve de lui-même que le nom. Je vous promets de vous en parler plus en détails dans un futur article.

Cela dit, un développeur qui ne se met pas à jour est vite dépassé et perpétue souvent des mauvaises manières de faire. Uncle Bob recommande de consacrer environ 10 heures de son temps personnel par semaine afin de pratiquer et se mettre-à-jour. Cela semble beaucoup, mais ça peut être aussi simple que de lire un article comme celui-ci, de faire un kata une fois de temps en temps ou de programmer un projet personnel avec une nouvelle technologie. N'oubliez pas qu'il faut environ 10 000 heures de pratique avant de devenir un maître de quelque chose. Et non, en informatique, ce n'est pas à votre employeur de payer pour vous former. S'il le fait, vous êtes chanceux. Sinon, prenez vos responsabilités en main et devenez un maître par vous-même. Votre employeur vous paie pour votre expertise, pas pour votre bon cœur.

Le mot de la fin

Comme vous le comprenez, être passionné de programmation n'est pas nécessairement facile, mais ce n'est pas plus difficile que d'être peintre ou devenir un sportif de haut calibre. Cela prend du temps et beaucoup de passion. Mais rappelez-vous qu'à la fin de la journée, votre passion vous apportera le meilleur des cadeaux: une chance de vous améliorer à chaque jour, une chance de vous coucher le soir en vous disant à quel point votre journée a été fructueuse et combien vous en avez appris ce jour-là.

Un peu de lecture

Je suis un grand fan de Robert C. Martin (Uncle Bob), et je crois que le monsieur connait excessivement bien la programmation et les activités qui l'entourent. C'est pourquoi je vous conseille ses excellents livres.

Si vous êtes intéressés par la création de beau code lisible, testable et réutilisable, je vous conseille la lecture de Clean Code. Ce livre couvre comment produire du code de qualité en établissant des règles claires (qui sont parfois sujet à débat, je vous l'avoue), puis en vous faisant appliquer ces règles afin de nettoyer du code Java. Un excellent exercice qui compte dans vos 10 heures hebdomadaires. Essayez honnêtement de vous y mettre. Je ne code plus de la même manière depuis ce temps-là.

J'ai parlé plus tôt de la chance que j'ai eu de pouvoir pratiquer un métier qui s’arrime à ma passion. Cependant, il ne suffit malheureusement pas d'être passionné pour devenir professionnel. Uncle Bob traite de ce sujet dans Clean Coder, un livre de référence en la matière. Il est petit, léger et rempli d'humour et d’anecdotes. Je vous le conseille vivement. C'est un de mes livres de références favoris.

Commentez

J'aimerais entendre ce que vous pensez sur ce sujet. Utilisez le module de commentaires ci-dessous pour communiquer avec moi sur ce sujet. Voici quelques pistes de discussion.

  • Et vous, que pensez-vous de ce que ça signifie être passionné de programmation?
  • Pensez-vous que 10 heures par semaine soit un but raisonnable et atteignable?
  • Pensez-vous que la passion est vraiment nécessaire dans ce domaine pour devenir bon?