Qu’est-ce que je fais pour devenir un meilleur programmeur ?

Je reprends et j’enrichis ici une réponse que j’ai posté sur Quora, à la question « Que faites-vous tous les jours pour devenir un meilleur programmeur ».

La programmation est une superbe discipline à la fois intuitive et théorique. C’est aussi une activité qui demande à rester alerte sur les technologies, les langages et les usages.

Je pratique régulièrement les activités suivantes (ou presque) pour entretenir mes connaissances et parce que je pense qu’elles sont une partie de mon métier.

Concernant la pratique :

  • Coder ! C’est le meilleur conseil que je puisse donner. Coder entraîne beaucoup de questions et en essayant d’y répondre on progresse énormément. Ça peut être au travail, sur des projets personnels, sur des librairies open-source… On peut choisir volontairement un nouveau langage pour progresser et apprendre.
  • Lire du code. C’est très instructif. Il vaut mieux lire du bon code 🙂 surtout au début d’un nouveau langage ou nouvelle technologie. L’open-source est encore une fois une bonne idée. La plupart des langages viennent avec des librairies intégrées dont le code est accessible. C’est instructif de le lire (parfois pour combler une lacune dans la documentation). Lire le code de ses pairs donne des idées ou fait découvrir des nouvelles librairies ou subtilités d’un langage. Cela permet aussi de connaître et suivre les bonnes pratiques.
  • Coder avec un bon IDE. L’IDE (Integrated Development Environment) est un logiciel dans lequel le programmeur code. La plupart des IDE sont gratuits. Il a l’avantage de détecter les erreurs au moment du code et de les expliquer. C’est un vrai professeur au début. Il permet aussi de résoudre des dépendances et de mieux comprendre la stack technique d’un langage.
  • Se faire relire son code (en anglais : code review). C’est une pratique courante voire obligatoire dans les entreprises ou dans l’open-source. Il ne faut pas être trop susceptible et accepter que quelqu’un mette le point sur des choses qui peuvent être améliorées ou ne sont pas claires. On peut ne pas être d’accord, mais il faut élaborer.
  • Documenter son code (ou le code des autres). En documentant on tente de synthétiser et d’expliquer au mieux. C’est une qualité utile à développer pour coder, et surtout partager son code, ce qui arrive souvent.
  • Lire la documentation. Que ce soit du code ou du langage de programmation lire la documentation nous fait prendre conscience du paradigme dans lequel on se trouve et au passage fait gagner beaucoup de temps. Si les programmeurs lisaient vraiment la documentation complète d’un langage (pas forcément d’un coup) il seraient tous bien meilleurs dans ce langage. Aussi un langage vient avec beaucoup de briques autour qui constituent l’environnement, et il est difficile de comprendre cet environnement sans lire la documentation. Stackoverflow peut aussi être une documentation (ciblée).
  • Participer à des concours ou des exercices. Les sites ne manquent pas et c’est un moyen ludique de progresser. Quelques idées ici pour des exercices et ici pour des compétitions. Les concours ne sont pas orientés sur les langages, mais sur des problèmes à résoudre. En tentant de les résoudre on veut tirer profit au mieux des technologies, et rapidement, ce qui fait progresser.
  • Répondre à des questions Stackoverflow ou consort. En répondant, vous savez déjà à priori la réponse (ou vous pouvez la chercher), mais vous devrez souvent creuser un peu pour être sûr et ainsi progresser. Les remarques des autres développeurs vous attireront sur des points utiles.
  • Faire de la veille. La communauté tech est riche d’actualité, que ce soit des nouvelles versions, des sorties de grosses librairies, d’arrêt de support de versions et plus généralement sur les acteurs du secteur (rachats, créations de startups…). J’utilise feedly pour suivre des flux RSS. Si vous ne savez pas par quoi commencer vous pouvez suivre ZDnet et 01net pour les francophones. En anglais Hacker News est un classique et reddit ou Product Hunt peuvent être intéressants.
  • Apprendre l’anglais. Ça ne vous a pas échappé, le code, la documentation, les vidéos, les cours, les livres et la communauté en général est souvent anglophone. En étant objectivement limite  en anglais (écrit ou oral), on se prive de beaucoup de sources d’information concernant la programmation.

Sur un aspect plus théorique,j’insiste sur le fait que le développement s’inclut dans un grand nombre de techniques et paradigmes qu’il convient d’au moins connaître. Par exemple sur l’architecture d’un logiciel ou d’un système (l’approche microservices, les design patterns), les bases de données (SQL-like ou NoSQL), le fonctionnement global de protocoles (HTTP, les logiques d’API en général), les nouveaux paradigmes (machine learning, conteneurisation), le cycle de vie d’un logiciel (test, intégration continue, méthodologie Agile) et de la théorie plus brute (complexité des algorithmes, preuves de correction d’algorithme, compilation).

  • Lire des livres spécialisés. Il en existe une palanquée. Ils prodiguent de l’information qui ne n’est pas toujours en ligne, et sont aussi une manière d’apprendre différente (pour moi : plus concentrée !). Les bibliothèques techniques en regorgent, on trouve des PDF gratuitement (et légalement) et des ebooks. J’aime bien Packt Publishing par exemple. Le prix est parfois prohibitif, plutôt orienté entreprises, mais certaines bibliothèques techniques peuvent les proposer au prêt.
  • Suivre des cours. Souvent les livres sont des véritables cours. On trouve des cours parfois sur le site des écoles / universités (par exemple le master Data Science DAC), ou sur les MOOC comme Pluralsight ou Coursera. Le Collège de France a trois récentes chaires liées à l’informatique, sous son aspect théorique : Algorithmique, machines et langages, Sciences des données et Sciences du logiciel.
  • Assister à des conférences. Elles sont (souvent) payantes et ça demande un peu de logistique, mais si on choisi bien ça vaut le coup. Et parfois les conférences sont filmées et donc il suffit d’attendre les vidéos (ici AFUP PHP 2018). Par exemple le FOSDEM dont je parle dans mon précédent article est une conférence gratuite à Bruxelles et filmée sur tout ce qui est open-source. Chaque langage a sa ou ses conférences comme PHP ou Python. Les conférences sont aussi un bon moyen de se constituer un réseau et de garder sa motivation alerte.
  • Assister à des meetups. Tout comme les conférences, les meetups permettent de se frotter à la communauté et voir sur quoi les autres développeurs travaillent et quels sont leurs centres d’intérêt. On découvre plus souvent un sujet que ce qu’on apprend. Le site meetup.com est la référence. Certains meetups sont filmés et postés sur Youtube (chercher avec meetup + langage ou techno).
  • Suivre des youtubeurs, twitcheurs, twitters et autres sites pédagogiques, s’inscrire à des newsletters. On a l’impression de connaître ces développeurs petit à petit, et en général ils ne sont pas contre un peu d’interaction. C’est un bon moyen d’apprendre par bribes des choses sur ses sujets préférés.
  • (re)prendre des cours. Je pense que les écoles et universités sont une bonne manière d’apprendre beaucoup et de manière structurée. La plupart sont en trois ans après une prépa ou un IUT ou la fac ; voire en cinq ans (comme j’ai fait à Polytech Paris-Sud). Il existe d’autres formations courtes et pensées pour la formation continue.
  • Partager et enseigner. Il faut bien maîtriser son sujet pour en parler aux autres. Proposer des meetups (parfois les talks durent cinq minutes, ce qui est bien pour se lancer), faire des vidéos, twitcher… pourquoi pas vous ? Et pour ceux qui veulent aller encore plus loin, sachez qu’un CAPES informatique se créé en 2020 en France.

Cette liste n’est pas exhaustive et tous les sujets ne conviennent pas à tout le monde, mais elle peut donner, je l’espère, des idées et des pistes concrètes.

4 réflexions sur “Qu’est-ce que je fais pour devenir un meilleur programmeur ?

  1. Je re-découvre ton blog, je pensais que tu parlais que de musique classique 😀 Je me suis remis à coder un peu pour MyAtlas, sur des briques non critiques vis-à-vis de l’utilisateur directement, et ça me plait toujours autant. Peut-être un jour je reviendrais à mon métier d’origine, mais comme tu le décris, ça demande un travail continu de formation !

    J'aime

    1. Content de te retrouver parmi mes lecteurs 🙂 Je parle assez peu de musique classique, mais un peu quand même ! Sinon de sport, de mes habitudes, du travail, du voyage, …

      J'aime

Votre commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l’aide de votre compte WordPress.com. Déconnexion /  Changer )

Photo Google

Vous commentez à l’aide de votre compte Google. Déconnexion /  Changer )

Image Twitter

Vous commentez à l’aide de votre compte Twitter. Déconnexion /  Changer )

Photo Facebook

Vous commentez à l’aide de votre compte Facebook. Déconnexion /  Changer )

Connexion à %s