Avertissement: Cet article a été écrit par Skillbox en collaboration avec Egor Yakovishen, développeur principal de Setka Editor et tracker IIDF.
De nos jours, apprendre à programmer à un niveau de base est relativement facile. Par exemple, le sans-abri américain Leo Grand, qui n'avait qu'une éducation primaire, a pu en trois mois
créer sa propre application mobile, appelée Trees for Cars.
Pourquoi même apprendre la programmation? Il peut y avoir de nombreuses réponses, du désir de se développer et se terminant par le désir de gagner beaucoup d'argent. Mais supposons que nous ayons appris à coder et atteint un certain niveau. Il y a du travail, l'argent semble aussi être là, la satisfaction de la vie (partielle ou totale) est disponible. Il semblerait que vous puissiez vous arrêter et simplement profiter de vos réalisations. En fait, ne vous arrêtez pas. Pourquoi? Nous en parlerons.
Pourquoi s'améliorer du tout?
Si vous ne vous améliorez pas dans la spécialité que vous avez choisie, après un certain temps, vous pouvez vous retrouver comme un troglodyte, enfermé dans une grotte, qui est entourée de bâtiments en lévitation d'un avenir lointain. Hmm, eh bien, ou imaginez une «civilisation» avec une IA qui possède déjà des armes nucléaires et un joueur qui se bat toujours à l'aide de mousquets.
Pour un programmeur, une telle comparaison est très pertinente, car littéralement chaque jour de nouvelles plates-formes, frameworks, matériels apparaissent, pour lesquels vous devez écrire quelque chose de nouveau. Si vous êtes engagé dans la même entreprise depuis plusieurs années, des difficultés d'emploi peuvent survenir et la satisfaction même de la vie dont nous avons parlé plus haut.
Même si nous prenons des tâches relativement simples - par exemple, l'automatisation locale des processus en créant des scripts sur VBScript pour Microsoft Office - nous ne nous arrêterons pas non plus dans ce cas: le package Office est modifié, certaines fonctions sont ajoutées et supprimées, VBScript lui-même est modifié. Quelques années - et les solutions d'aujourd'hui ne conviennent pas. Que dire des langages de programmation comme Ruby ou JavaScript, qui sont à la pointe du développement technologique.
Afin de suivre les nouvelles technologies (ou, si vous êtes débutant, faites immédiatement quelque chose de pertinent et ne pas apprendre de solutions mourantes) - inscrivez-vous à l'un des cours de programmation de Skillbox. Cependant, le reste de nos domaines peut également vous être utile pour pomper des compétences connexes et commencer à mieux comprendre vos collègues et vos processus de travail.

Des cas? Je les ai
L'un des exemples les plus brillants de ce qui peut arriver à une personne qui travaille dans le même domaine depuis des années sans se développer est la situation avec les développeurs Flash et ceux qui ont décidé de choisir Flex, un langage de programmation interactif basé sur Flash. Pendant longtemps, ils étaient «à cheval» - très demandés et recevant des sommes substantielles (en tout cas plus que de nombreux autres informaticiens). Bon travail, respect des collègues - de quoi d'autre a-t-il besoin pour être heureuse?
Mais après un certain temps, avec l'avènement de l'iPhone et la proclamation par Steve Jobs du slogan «Flash que nous ne prendrons pas en charge», cette technologie a été progressivement abandonnée. Au fil du temps, Apple a emboîté le pas et les développeurs pour d'autres plates-formes.
Il est clair que tout cela ne s'est pas fait très rapidement, mais les flasheurs ont senti le changement. Quelqu'un a presque immédiatement commencé à chercher de nouveaux domaines de travail et à apprendre d'autres langages de programmation. Eh bien, quelqu'un a continué à faire ce à quoi il était habitué et est finalement resté sans travail, car il n'y avait pas de temps pour se recycler.
Un problème similaire peut survenir chez les spécialistes CMS Bitrix qui créent des sites du même type basés sur ce système et ne progressent pas dans ce qu'ils ont initialement été formés à la programmation. Si quelque chose se produit et que Bitrix n'est plus si populaire, alors les anciens "programmeurs" resteront sans travail, car ils n'ont pas développé leurs compétences en développement, mais ont fait de même pendant longtemps.
Programmeur polyglotte ou spécialiste des profils étroits?
Lorsqu'un programmeur a atteint un certain niveau de compétence, la question se pose: où passer? Certains, ayant acquis une certaine expérience dans l'un des langages de programmation, commencent à étudier le deuxième, puis le troisième et ainsi de suite.
Mais le problème est que notre époque est une ère de spécialisation étroite. La quantité d'informations qui doivent être apprises dans l'un des langages de programmation est si grande qu'il est très difficile de devenir un spécialiste dans autre chose - il se peut tout simplement qu'il n'y ait pas assez de temps. Pour commencer à écrire relativement bien dans l'une des langues, il faut trois ans (quelqu'un parle de 10 000 heures). Mais pour devenir un pro cool dans un domaine choisi, cela prend plus, beaucoup plus de temps.
Cela ne signifie pas du tout qu'il n'y a pas de programmeurs polyglottes qui connaissent 2, 3, 5 langues ou plus. Ils le sont, mais ces personnes sont assez rares. De plus, la connaissance de plusieurs langues n'est pas une garantie qu'une personne comprendra parfaitement tout. Pas du tout: dans la plupart des cas, le programmeur se «reprend tout simplement» et se considérera comme un universel cool. Mais donnez-lui une tâche spécifique - et ses connaissances ne suffiront peut-être tout simplement pas à la résoudre.
Il vaut mieux s'en tenir au juste milieu - c'est très bien de comprendre l'un des langages de programmation, principalement, et si vous voulez en apprendre un peu d'autres, juste pour le développement général. Les compétences supplémentaires n'ont encore fait de mal à personne.
Que choisir exactement?

Afin de choisir la bonne direction pour le développement et l'amélioration, vous devez être un peu visionnaire. En d'autres termes, vous devez comprendre quelles technologies et quels langages de programmation leur seront associés dans un avenir proche.
Il est préférable de choisir un domaine où il n'y a pas beaucoup de professionnels aujourd'hui et de commencer à se développer, en acquérant l'expérience et les connaissances nécessaires en tant que pro avant même qu'il ne devienne courant.
JavaScript en est un exemple. Maintenant, cette langue est très populaire, elle est littéralement sur toutes les lèvres. Mais au début de son développement, JS était un produit de niche. Ceux qui ont immédiatement commencé à se développer dans ce domaine sont devenus des spécialistes sympas et recherchés qui (oui, non sans cela) en reçoivent beaucoup. Maintenant, tout y est écrit: frontend, backend, même les applications mobiles. Ce langage suffit à lui seul pour écrire des applications de la complexité la plus variée pour résoudre presque toutes les tâches.
Un bon moyen de saisir les tendances dans les langages de programmation, les frameworks, etc. - suivre l'utilisation de certains outils dans les produits des grandes entreprises. Si une entreprise commence à se lancer dans un produit de niche, en l'introduisant dans ses produits, alors il vaut la peine de se demander pourquoi. Si ce n'est pas un accident, il est très probable que cela devienne rapidement un courant dominant dans la programmation.
Trois baleines de programmation moderne: JavaScript, Python, Java
Si nous parlons déjà du choix, alors il vaut la peine de donner des exemples spécifiques. Ainsi, les langages Java Script et Python sont actuellement l'un des plus prometteurs. Le premier est parce qu'il est universel. La seconde est parce que c'est l'un des langages de mastering les plus simples (relativement) et en même temps à la mode: des projets du domaine du machine learning, des réseaux de neurones, de l'IA y sont écrits. En Python, écrit en tout ou en partie, divers produits de Dropbox, Google et Yandex.
Java reste également un langage universel utilisé notamment pour l'écriture d'applications pour Android.
Comment devenir gourou?
En principe, ce n'est pas si difficile. L'essentiel est une compréhension des bases, un esprit flexible, la persévérance et la PRATIQUE. Oui, c'est capital. Le fait est qu'aucune théorie, quelle que soit la manière dont vous l'étudiez, n'aidera à devenir un professionnel s'il n'y a pas d'expérience pratique. C’est comme dans les langues parlées: vous pouvez mémoriser des centaines de mots étrangers, lire les règles de grammaire, mais si vous ne parlez pas et n’écrivez pas, tout cela passe dans la passivité, et avec le temps, il est complètement oublié.
Par conséquent, il y a deux recommandations principales pour ceux qui souhaitent s'améliorer dans leur domaine choisi:
- Lisez le code de quelqu'un d'autre.
- Écrivez votre code.
Ces conseils peuvent être utilisés dans n'importe quel ordre - il n'y aura aucun mal, seulement des avantages. Pourquoi? Plus vous créez de produits, plus vous écrivez de code, plus vous pratiquez. Certains problèmes sont résolus, des principes de travail sont élaborés et des compétences se forment. Dans ce cas, vous devez analyser le code de quelqu'un d'autre. Pour un débutant, cela est nécessaire simplement parce qu'il sait peu de choses et, en lisant ce que les autres ont écrit, junior pourra comprendre quoi et comment cela fonctionne. Pour le milieu, l'analyse du code de quelqu'un d'autre vous permet de trouver des solutions efficaces au problème qui se pose lors du développement d'un produit spécifique. Eh bien, pour les seniors, c'est, d'une part, la recherche d'erreurs dans le code de quelqu'un d'autre et l'aide avec eux, et d'autre part, l'auto-amélioration. «Il y aura toujours un Asiatique qui fera quelque chose de mieux que vous» est un mème célèbre, mais il est juste, et pas seulement en ce qui concerne les Asiatiques. En étudiant le code de quelqu'un d'autre, vous pouvez trouver une solution élégante à tout problème pour lequel vous avez dû utiliser des «béquilles» auparavant.

Il existe maintenant des services qui peuvent être appelés Twitch pour les programmeurs. L'un d'eux est livecoding.tv. Les programmeurs inscrits sur la ressource écrivent leurs propres programmes avec une démonstration du code en temps réel.
Et, bien sûr, nous avons également besoin d'une théorie. Pour reconstituer les réserves de connaissances, vous devez lire beaucoup, et pas seulement en programmation, mais aussi dans des disciplines connexes.
En conclusion, nous pouvons nous rappeler la citation de «Alice au pays des merveilles» (même les enfants d'âge préscolaire le savent, oui, mais cela ne nie pas la valeur de la déclaration): «Nous devons courir aussi vite juste pour rester en place, mais pour arriver quelque part, nous devons courir au moins deux fois plus vite! " En fait, dans le monde de la technologie en évolution rapide, vous devez faire un effort solide pour rester un bon programmeur. Et pour aller mieux, vous devez travailler et étudier deux fois, sinon trois fois plus.