1 Arrêtez de vous plaindre. Préparez-vous pour le long voyage, ou mettez-le de côté et allez faire de l'observation des oiseaux.
Pour ceux qui veulent vraiment devenir un excellent programmeur, qui veulent devenir un expert, qui veulent devenir une figure ultime, si cela vaut vraiment la peine d'être fait, alors y investir dix ans n'est rien, n'est-ce pas ?
La première étape consiste à prendre son mal en patience. Acceptez que ce processus prendra plus de dix ans — c'est une quête de toute une vie. Faites-le uniquement parce que vous voulez le faire. Si une personne n'est pas disposée à faire quelque chose, elle ne deviendra jamais un expert en la matière.
2 Écrivez beaucoup, beaucoup de code
En même temps, écrivez beaucoup, beaucoup de code. Il n’a pas besoin d’être du bon code. Pendant longtemps, le code que vous écrivez ne sera pas du bon code. Le bon code, le bon goût, demande beaucoup de pratique pour être cultivé. Chaque fois qu’un nouvel outil, un nouvel algorithme, un nouveau problème vous intéresse, ou chaque fois que vous rencontrez un problème, écrivez du code pour vous entraîner et essayez de l’utiliser autant que possible.
Le processus d’apprentissage ne s’arrête jamais. Si vous apprenez avec l’attitude d’apprendre autant que possible chaque jour et d’obtenir le maximum de « rendement » possible, vous irez loin. Mettez-vous dans un état où tout jour/semaine/mois sans apprendre quelque chose d’intéressant est un échec. Il y a plein de choses géniales et intéressantes qui vous attendent pour apprendre chaque jour. Même si vous apprenez depuis 15 ans, bien qu’elles deviennent plus difficiles à trouver, elles peuvent encore être trouvées. Personne ne peut maîtriser toutes les connaissances du monde de la programmation, donc si vous sentez qu’il ne reste rien à apprendre, trouvez un nouveau projet et écrivez plus de code.
Pendant que vous faites ces choses, faites attention : cherchez des motifs au milieu de tout cela — des choses qui peuvent être automatisées pour effectuer un travail utile, ou du code que vous avez tellement écrit qu’il peut être extrait dans une bibliothèque partagée, ou d’autres endroits où centraliser. Cherchez des langages de programmation simples pour des tâches spécifiques. Découvrez quels langages de programmation ne sont pas bons pour les mêmes tâches, et réfléchissez à pourquoi certains langages sont plus productifs que d’autres pour ces tâches.
Mais le plus important est d’écrire beaucoup, beaucoup de code. Mais rappelez-vous, si ce que vous faites n’est plus intéressant, il n’est pas nécessaire de continuer, si vous ne pouvez pas apprécier le processus en cours de route.
3 Lisez plus de code
Lorsque vous avez accumulé quelques projets, commencez à lire le code des autres. Au début, c'est très difficile. Ils font beaucoup de choses que vous n'avez jamais faites, ou utilisent des styles auxquels vous n'êtes pas habitué, ou même utilisent des langages de programmation que vous n'avez pas appris. Si vous trouvez cela intéressant, lisez autant de ce code que vous le pouvez. Ne vous inquiétez pas d'analyser en profondeur le code d'un projet donné, du moins pas au début.
Lire du nouveau code peut vous montrer de nouvelles façons de penser, ce qui aide à élargir votre esprit. Élargir votre esprit est très important pour maintenir votre progression. Cela aide à garantir qu'au fur et à mesure que vous avancez, vous pouvez continuer à découvrir de nouvelles choses à apprendre.
Assurez-vous de communiquer avec d'autres programmeurs. Demandez-leur comment et pourquoi ils font ces choses en particulier, s'ils abordent les choses sous un angle différent, et demandez-leur s'ils ont des conseils à vous donner sur votre code. Soyez poli, car les programmeurs expérimentés sont très occupés. Le respect vous mènera loin. C'est une industrie très soudée, et la réputation compte.
4 Apprenez de nombreux langages de programmation. Devenez expert dans certains d'entre eux
Vous n'aurez pas vraiment beaucoup de temps libre, du moins pas assez pour apprendre de nombreux langages en même temps, à moins d'être exceptionnellement chanceux. Vous pouvez donc apprendre de nombreux langages de programmation à un niveau plus superficiel — suffisamment pour comprendre ce qui les rend populaires, ce qui les rend bons dans les domaines où ils sont couramment utilisés, et quels sont leurs défauts. S'ouvrir est important. Ne vous limitez pas à un seul type de langage, comme les langages impératifs ou orientés objet ; diversifiez-vous et apprenez quelques langages fonctionnels ou déclaratifs.
Apprenez un dialecte de Lisp. Vous ne l'utiliserez pas pour votre codage quotidien. Mais l'apprendre et le pratiquer fera de vous un meilleur penseur, et vous apprécierez plus profondément le charme des systèmes récursifs simples. Continuez à l'étudier et à le pratiquer jusqu'au moment où vous ne pourrez pas vous empêcher de vous exclamer « Aha ! » Jusqu'à ce moment, vous le considérerez comme un étrange amas de syntaxe et un usage maladroit. Pour le reste de votre carrière, il deviendra l'un des concepts les plus élégants et à couper le souffle jamais conçus par l'humanité.
Ensuite, apprenez un langage purement fonctionnel. Je recommande Haskell. Il vous force à penser de manière purement fonctionnelle d'une façon que les autres langages fonctionnels, y compris les dialectes de Lisp, ne font pas. Une fois que vous comprendrez l'objectif qui sous-tend la conception des monades, ou que vous aurez d'autres moments « aha », vous accéderez à un niveau supérieur de capacité de réflexion et de conception de systèmes élégants.
Enfin, apprenez un langage déclaratif. SQL en fait partie, bien qu'il soit relativement faible. Prolog est souvent recommandé. Aussi XAML, XSLT et XQuery. Un langage déclaratif est un langage dans lequel vous dites à l'ordinateur ce que vous voulez qu'il fasse, et l'ordinateur détermine comment le faire ; un langage impératif est l'inverse : vous dites à l'ordinateur comment faire quelque chose et espérez qu'il fasse correctement ce que vous voulez ; dans un langage fonctionnel, vous décrivez comment les données et les types sont transformés.
5 Créez votre propre langage de programmation
Il n'a pas besoin d'être complexe, avancé, ni même particulièrement élégant. Il n'a même pas besoin d'être une idée originale. Je recommande souvent d'écrire un interpréteur Lisp (encore mieux s'il est écrit dans un dialecte de Lisp). C'est un excellent moyen pour vous d'apprendre les fondamentaux. En fait, vous pouvez bien vous familiariser avec les bases de la conception des langages de programmation : analyse lexicale, analyse syntaxique, compilation, interprétation, machines virtuelles, et comment des choix de conception fondamentaux influent sur le caractère pratique d'un langage dans divers domaines.
Vous obtiendrez les 3 choses suivantes au cours de ce processus :
1) Vous aurez une compréhension plus approfondie du fonctionnement des outils que vous choisissez, ce qui vous permettra d'écrire du code plus efficace.
2) Vous commencerez à comprendre les raisons qui se cachent derrière les choix de conception des langages et des outils courants. Cela vous aidera à choisir plus efficacement les outils que vous utilisez.
3) Vous entreverrez des possibilités inexplorées qui existent encore dans les outils et les langages, ce qui élargira vos horizons et vous permettra de découvrir des choses nouvelles, intéressantes et géniales à apprendre et à expérimenter.
6 Apprenez des choses que personne d'autre n'a jamais apprises
C'est l'étape la plus difficile et la dernière. Encore dix ans. Gardez votre intérêt et faites des choses intéressantes ; laissez de côté les choses qui ne vous procurent pas de plaisir.
Source en anglais :become-a-good-programmer-in-six-really-hard-steps/