Il y a beaucoup de débats sur ce qu'il vaut la peine d'apprendre un langage de programmation pour faire carrière dans le domaine du développement. Mais je suis profondément convaincu que le langage de l'ensemble de connaissances requis n'est pas limité. Malheureusement, tout le monde ne comprend pas cela.

Dans les discussions sur les tâches, les entreprises et les développeurs parlent différentes langues.
Du point de vue des affaires, peu importe dans quelle langue leur tâche sera résolue. Les entreprises ne pensent pas et ne connaissent peut-être même pas le java, le go, le rubis et les autres langages et technologies. C'est génial pour les développeurs, bien sûr, quand un projet à grande échelle et intéressant démarre à partir de zéro et que la pile technologique est sélectionnée par l'équipe. Mais dans le monde réel, bien plus souvent ce n'est pas le cas. Habituellement, une entreprise possède déjà une expertise dans une certaine pile, ce que les responsables informatiques ne veulent pas refuser. Les raisons peuvent être complètement différentes, de l'interdiction du «zoo de la technologie» aux préférences personnelles des décideurs. Il existe des facteurs supplémentaires, tels que le besoin de technologies intéressantes pour les équipes, afin d'attirer et de retenir du personnel qualifié.
De leur côté, les développeurs expriment souvent une volonté de se développer dans une certaine pile technologique. Cette intention est renforcée par la grande différence entre les salaires pour certaines langues. Il y a donc des gens qui vivent dur, par exemple, dans le cadre de Java ou Python (Go, Kotlin, Scala ... la liste s'allonge indéfiniment) et même Delphi, sans chercher à voir ce qu'il y a d'autre.
À mon avis, le désir d'aller plus loin est méritoire. Mais parfois «la forêt se perd derrière les arbres» - au cours de cette plongée, le spécialiste oublie simplement que la technologie n'est qu'un outil pour résoudre ses problèmes pour l'entreprise. Par conséquent, la cécité sur une pile technologique complète avec un perfectionnisme congénital («refactorisons pendant six mois un projet qui n'a pas de plans de développement sérieux, simplement parce qu'il sera beau») ne reflète pas de la meilleure façon la qualité des décisions prises.
Mon point est qu'un langage de programmation particulier est secondaire. La compréhension primaire des principes de développement et la capacité de résoudre des problèmes commerciaux sont primaires - la connaissance des approches et des modèles qui aident à systématiser le travail global, l'expérience de l'utilisation de diverses techniques, y compris celles en équipe. Avec un tel bagage, une autre langue qui est nécessaire dans ce projet particulier n'est pas difficile à maîtriser. Sous mes yeux, il y a beaucoup d'exemples de la façon dont les gens se recyclent vers d'autres piles au cours du mois - deux entraînements intensifs. Bien sûr, il est plus difficile de basculer entre des langues avec des paradigmes différents, par exemple, de fonctionnel à orienté objet, mais même ici, il n'y a rien d'impossible si une personne ne s'oppose pas à un tel changement "au niveau de la foi".
Connaissant plusieurs langues, pour chaque tâche métier spécifique, vous pouvez choisir votre propre approche de résolution - celle qui est non seulement appropriée, mais sera optimale dans ce cas particulier. Et plus l'arsenal du développeur a une base de ces approches (langages), plus le problème est large et plus la pile sélectionnée est motivée. C'est exactement ce dont l'entreprise a besoin - pour obtenir la solution la plus adaptée à ses tâches.
Mais avec une connaissance approfondie d'une langue, mais sans la capacité de résoudre des problèmes commerciaux, un spécialiste bénéficiera loin de toute équipe. Bien entendu, dans les projets individuels, une connaissance approfondie des «puces» de la langue permet à l'équipe dans son ensemble d'atteindre de meilleures performances. Mais le plus souvent, un membre de l'équipe qui connaît une langue, mais qui n'est pas capable d'écouter les affaires, ne fera que ralentir ses collègues. Et en passant, un tel «guide de marche vers des opportunités non évidentes» n'est souvent, si nécessaire dans une équipe particulière, qu'une seule (nous tirons des conclusions sur la demande de spécialistes aussi étroits sur le marché du travail).
La capacité de résoudre des problèmes commerciaux fait en fait partie d'une essence plus globale - une expérience de travail complète. Vous pouvez l'obtenir à la fois avec l'employeur et dans le cadre de projets à domicile. Certes, à mon avis, seuls les projets d'entreprise (où il y a des clients, des budgets, des délais) peuvent donner des retours si nécessaires dans de telles situations, évaluer la qualité de la solution. À savoir, cela détermine la profondeur de l'expérience acquise. Il n'y a tout simplement personne pour obtenir un tel retour des projets à domicile: vous faites vous-même quelque chose et à un certain moment décidez par vous-même que vous avez bien fait. C'est là que tout se termine. Mais lorsque le projet sera mis en œuvre pour les entreprises, une solution insuffisamment développée sera envoyée pour révision,
puis encore et encore, si nécessaire. Et au cours de ces itérations, vous apprendrez inévitablement plusieurs approches du problème - vous gagnerez une compréhension d'un niveau supérieur.
L'une des composantes de la capacité de résoudre des problèmes commerciaux est de comprendre cette tâche. Et puisque très souvent les développeurs russes participent à des projets à l'étranger, la connaissance de la langue anglaise est nécessaire à cette compréhension. À cet égard, vous ne pouvez pas toujours compter sur l'analyse commerciale, car il n'y a pas suffisamment de bons spécialistes dans ce domaine sur le marché.
Une meilleure compréhension de l'entreprise aide à l'immersion dans une industrie. Lorsque vous ne faites pas seulement un module abstrait qui reçoit, traite et envoie des paquets de données vers une destination inconnue, mais implémentez, par exemple, une partie d'un système de facturation ou d'un système bancaire complexe, où il existe différents types d'utilisateurs, de normes et d'autres fonctionnalités. Connaître ces détails est très précieux. Une telle immersion vous apprend à vous intéresser à ce qui se passe autour de votre partie de la tâche. Cela aide à trouver la meilleure solution. Je connais des spécialistes qui n'iront jamais travailler sur une tâche dont la raison n'est pas claire. Et dans certains domaines du développement des affaires pour les développeurs, une formation interne obligatoire est fournie, car sans immersion, en principe, un travail efficace ne fonctionnera pas.
Comme petit ajout à une meilleure compréhension des questions commerciales, je recommande d'assister à des conférences spécifiques à l'industrie. Là, les conférenciers partagent leurs expériences sur la façon dont ils ont résolu un problème commercial en utilisant la technologie informatique. Souvent, à partir de là, vous pouvez obtenir des informations utiles sur la direction à suivre. Bien sûr, personne n'a besoin de répéter en détail l'expérience des autres.
Je ne dis pas que chaque développeur devrait s'occuper des tâches métier. June n'entre que dans ce cercle, au stade initial, il faut trop de temps pour communiquer avec des collègues et apprendre à résoudre un problème spécifique. Il n'y a pas de temps pour élargir ses horizons. Mais à partir du milieu, l'expérience précédente permet de comprendre de quel côté aborder les tâches d'un certain type. À ce stade, les questions sur l'écosystème de développement ne se posent plus - quand et quels statuts définir, comment répondre aux revues de code, etc. Le spécialiste commence à faire face même aux tâches inconnues plus rapidement - c'est le moment de «tirer vers le haut» la composante commerciale. En fait, le senior du milieu se distingue par cette compréhension des approches pour résoudre les problèmes commerciaux courants. Et le désir d'une telle compréhension aide à passer au niveau supérieur plus rapidement.
C'est pourquoi j'exhorte à fixer simultanément des objectifs de développement dans deux directions. D'une part, apprenez des langues et, d'autre part, acquérez de l'expérience dans la résolution de problèmes commerciaux spécifiques. Et dans ce développement, il est nécessaire de maintenir un équilibre, sinon il sera assez difficile de trouver une place dans le monde des seniors. Mais où exactement se développer - vers un architecte, un développeur ou un chef d'équipe très fort - dépend des ambitions et des qualités personnelles (travail d'équipe, responsabilité, sociabilité, etc.) d'un spécialiste particulier.
Qu'en pensez-vous?
Auteur de l'article: Sergey Marina
PS Nous publions nos articles sur plusieurs sites du Runet. Abonnez-vous à nos pages sur les
chaînes VK ,
FB ou
Telegram pour découvrir toutes nos publications et autres actualités Maxilect.