Modifier

Et si vous deveniez un sportif du code ?

Commit strip - Si les codeurs étaient des footballeurs

Le codeur est un être qui ne fait pas de sport.

Ne trouvez-vous que cette phrase fait un peu cliché ? Le temps où le codeur passait son temps devant son écran et ne pratiquait pas de sport est révolu. Aujourd'hui, beaucoup d'entre nous ont une activité sportive pour se maintenir en forme. Moi-même, je pratique un sport (de l'ultimate frisbee, c'est cool, vous devriez essayer) et même si je ne suis pas très régulier, cela me fait du bien d'en faire.

Même si on n'est pas sportif professionnel, il est admis par la majorité qu'il faut s'entrainer pour pouvoir pratiquer un sport. Au début, on apprend les bases, puis on se perfectionne. Et on continue à s'entrainer de manière régulière pour progresser.

Ça, c'est quand on est sportif amateur. Mais d'après-vous, que font les sportifs professionnels ? Ils s’entraînent encore plus. Pour avoir le meilleur niveau possible, ils peuvent passer des journées à s'entrainer. L'objectif dans tout ça, c'est de donner le meilleur d'eux-même lorsqu'ils sont en compétition.

Comment vous entraînez-vous ?

Si je veux apprendre le Judo, je vais m’inscrire au dojo du coin et y passer une heure par semaine pendant deux ans, au bout de quoi j’aurai peut-être envie de pratiquer plus assidûment. Si je veux apprendre la programmation objet, mon employeur va me trouver une formation de trois jours à Java dans le catalogue 2004. Cherchez l’erreur. Laurent Bossavit

Cette citation, bien que vieille, est régulièrement utilisée sur les sites qui pratiquent les coding dojo (le fait de se retrouver entre développeurs pour s'entrainer, je vous invite vivement à en pratiquer).

Elle résume l'état de l'apprentissage dans notre métier. La plupart d'entre nous ne s’entraînent pas à l'art de la programmation. Et pourtant, tous les jours, nous jouons des matchs de plusieurs heures. Rien que pour cet exploit, nous devrions tous recevoir une médaille. Mais est-ce une bonne chose ?

Les inconvénients de ne pas s'entrainer

Je n'ai pas le temps de m’entraîner...

C'est la réponse que la plupart d'entre nous répondent à cette question (si nous nous la sommes déjà posée). Effectivement, il faut rendre le projet au plus vite et pour cela, nous n'avons pas le temps d'effectuer des exercices.

On ne s’entraîne pas en plein milieu d'un match

Je développe toute la journée, n'est-ce pas de l’entraînement ?

Effectivement, toute la journée, nous travaillons sur nos projets et effectivement, cela nous apprend des choses. Mais imaginez que vous êtes en plein milieu d'un match de foot et vous souhaitez apprendre à faire un retourné acrobatique. Croyez-vous que ce soit le bon moment d'essayer d'en faire un ? Non, car vous allez vous vautrer dans l'herbe et l'équipe adverse en profitera pour marquer un but.

Nous n'avons pas le droit à l'erreur. Le code en production, c'est celui que nous envoyons chez nos clients. Nous n'avons pas le droit d'en faire n'importe quoi. Il doit continuer à fonctionner en permanence, sinon, nous perdons le match. La moindre tentative peut créer un bug, réduire la qualité du code, rendre le code incompréhensible pour nos collègues. J'en sais quelque chose, certains de mes projets en ont fait les frais.

On a besoin de répéter les gestes pour s'améliorer

L'objectif de l’entraînement est d'acquérir des réflexes rapides et précis. Si nous ne nous entraînons pas à coder, nous n'apprenons rien.

  • Vous souhaitez apprendre la POO ? Créez des objets par centaines !
  • Vous souhaitez apprendre TDD ? Créez des tests, faites les passer au rouge puis au vert et recommencez !

Dans un projet, nous faisons tout notre possible pour éviter de répéter le même code. Nous sommes donc devenus des professionnels de la non-répétition. Et c'est tant mieux, la répétition (ou duplication) en programmation, c'est dangereux.

Notre expérience et notre connaissance viennent de la répétition que nous avons fait sur l'ensemble des projets réalisés jusqu'à aujourd'hui. Analysez votre niveau et imaginez si vous aviez employé 1/10ème de ce temps pour vous entraîner.

Les avantages de s'entrainer

Imaginez si vous aviez passé 4 heures par semaine à apprendre la programmation, à effectuer des exercices, à découvrir de nouvelles techniques. Votre niveau actuel n'aurait rien à voir avec celui que vous avez aujourd'hui :

  • vous coderiez mieux ;
  • vous coderiez plus vite ;
  • vous passeriez moins de temps à réfléchir ;
  • vous connaîtriez plus de technologies.

Coder mieux

J'ai effectué un kata de programmation (voir l'article Un pas en avant, deux pas ... en avant, c'est la politique de TDD pour en savoir plus) environ une dizaine de fois.

Au début, c'était compliqué, je réfléchissais à la meilleure méthode et mon code n'était pas génial. Puis à force de répéter cet exercice, j'ai fini par trouver deux ou trois manières de le résoudre. Mon code est plus concis et plus efficace. Le fait de répéter encore et encore m'a permis d'améliorer une des compétences clés de notre métier : le refactoring. A chaque fois que je refais l'exercice, ma manière de faire le refactoring s'améliore.

Coder plus vite

En m’entraînant, j'ai maîtrisé des techniques de développement qui permettent réellement de développer plus vite. Dont TDD. Cette technique est très compliquée à maîtriser, mais elle peut faire des miracles.

A force de répéter les exercices, j'ai aussi une meilleure maîtrise des langages que j'utilise. C'est moins de temps à aller chercher dans la documentation. Moins de question à se poser. Plus de temps à coder...

A l'instar du marathonien qui réalisera un meilleur temps à force de s'entrainer, le développeur ira plus vite à force de s'exercer.

Comment s'entrainer ?

Ce n'est pas compliqué, il suffit d'allouer du temps à l’entraînement. Vous pouvez soit le faire chez vous, soit le faire sur votre lieu de travail. L'idéal étant que votre chef vous donne le feu vert pour pratiquer.

Patron, si vous me lisez, imposez à vos développeurs de prendre du temps pour s'entrainer. A terme, ils feront moins d'erreur, coderont mieux et plus vite. Ils arrêteront de pourrir la base de code existante parce qu'ils ont voulu tester quelque chose. Vous serez gagnants, croyez-moi !

Pour vous entraîner, voici quelques conseils :

Faites des exercices

Vous trouverez sur Internet des exercices. Pour cela, vous devez simplement rechercher sur les mots clés kata et programmation. Vous trouverez des exercices dans la plupart des langages (malheureusement, le wLangage n'y est pas).

Faîtes ces exercices. Répétez-les jusqu'à ce que vous puissiez les faire les yeux fermés.

Exercez-vous en équipe

Vous connaissez des choses que vos collègues ignorent, et inversement. Le travail d'équipe vous permet de partager cette expérience. Les méthodes que je connais sont le pair-programming et le mob-programming. N'hésitez-pas à les pratiquer.

Trouvez un mentor

Recherchez une personne qui connaisse votre langage sur le bout des doigts, il pourra vous apprendre énormément de choses. Pour ma part, j'ai trouvé mon mentor sur Internet. Il répond à certaines de mes questions et aborde des sujets qui me font avancer énormément.

Conclusion

S'entrainer peut donner l'impression de perdre du temps, mais au contraire, très rapidement, vous en gagnerez.

Si vous pratiquez déjà ou si vous songez à vous y mettre, n'hésitez pas à laisser un commentaire pour parler un peu de vous.

Quoiqu'il en soit, n'attendez pas.

Cherchez des exercices ! Demandez à votre chef de vous allouer du temps (montrez lui cet article)! Pratiquez ! Et surtout, devenez un meilleur codeur !

Merci pour votre lecture.

The only way to go fast is to go well. Robert C. Martin

Article précédent

Blog Comments powered by Disqus.