Une conversation a commencé avec des collègues au sujet de l'amélioration constante de soi d'un programmeur dans son temps personnel. Vous devez courir tout le temps pour rester en place. J'adore moi-même ce métier et, malgré la présence de trois enfants, je parviens à aborder de nouveaux concepts. Mais beaucoup de gens sont juste fatigués de ce genre de course, et ils peuvent être compris.
Prenons, par exemple, le monde du frontend. Avec la connaissance de JavaScript il y a cinq ans, vous ne pouvez plus trouver de bon travail. Désormais, RequireJS + Grunt ne fonctionnera pas, vous devez connaître React, Webpack, ES moderne ou TypeScript, etc. Et l'année prochaine, beaucoup deviendront à nouveau obsolètes.
Dans le même temps, il n'est pas toujours possible d'acquérir de nouvelles connaissances au travail, car il y a souvent des tonnes d'héritage (si un produit est coupé pendant longtemps - c'est inévitable) que personne ne copiera «à la mode».
Que faire? Faire des projets pour animaux de compagnie la nuit? Ou essayer de changer la direction du développement pour devenir plus stable dans le temps?
Cette question se pose particulièrement souvent chez les programmeurs avec enfants. Comment rester pertinent sur le marché à long terme sans y consacrer tout son temps personnel?
Accéder au manuel
Avantages:
- Parfois, il suffit de connaître la technologie au sommet (cela dépend du type de leadership, du chef d'équipe, du responsable technique, du CTO, etc. - des responsabilités complètement différentes)
- Vous pouvez choisir vous-même la pile technologique.
Inconvénients
- Il est peut-être possible de ne pas connaître les détails des technologies uniquement à la direction de niveau supérieur. Un simple chef d'équipe doit tout savoir, vous ne pouvez pas aller nulle part. Le responsable technique devrait savoir le mieux.
- Ce travail n'est pas pour beaucoup. La gestion des personnes est une profession complètement distincte qui n'a rien à voir avec la programmation. Beaucoup y aspirent, mais l'ayant à peine essayé, ils reviennent joyeusement au code.
Si l'une des qualités encouragées d'un simple programmeur est la super concentration sur une tâche difficile, alors ici c'est l'inverse: vous jonglez souvent avec des tâches sans vraiment vous plonger dans l'implémentation (il n'y a tout simplement pas de temps pour cela). - Même si vous sélectionnez la pile vous-même, vous n'apporterez pas de modifications radicales au projet (réécriture de PHP vers Rust), car il n'y aura toujours pas de ressources pour cela. Lorsque vous êtes responsable de tous les «aspects techniques», vous le comprenez plus que jamais.
Aller vers des entreprises superstables ou réglementées
Ils disent que jusqu'à présent quelque part dans les banques et l'industrie pétrolière, ils scient à Java 7 et ne connaissent pas le chagrin. Et ce travail là pour 100 ans.
Les inconvénients sont également évidents: ennui, bureaucratie. Eh bien, si soudainement une entreprise stable meurt soudainement, et cela se produit également, alors ce sera difficile sur le marché du travail avec Java 7.
Langues à moitié mortes
Il existe des légendes sur les programmeurs COBOL et leurs salaires inhumains. Je le crois bien: bien que la demande soit faible, il n'y a pas du tout d'offre. Personne n'ira pour apprendre le cobol.
Inconvénients: les langues anciennes sont terribles et les outils pour elles sont terribles. Les perspectives ne sont pas claires, il est fort possible que la langue meure jusqu'au bout.
Développer le cœur d'une base de données ou Linux
Il existe de tels produits pour tous les temps, où les gens ont scié quelque chose en C il y a vingt ans, et scié.
Parmi les lacunes, il convient de noter que l'écriture en toute sécurité en C n'est pas facile, et tout le monde n'aime pas la gestion manuelle de la mémoire. Peut-être qu'un jour, Rust occupera ce créneau, mais certainement pas au cours de la prochaine décennie.
Il n'y a pas tellement de postes vacants en C pur, et cela signifie généralement la présence d'un grand nombre d'autres connaissances en plus du langage.
Changer la mentalité de l'employeur
Cela vient d'une série de rêves de pipe, mais quand même.
Si une personne connaît trois langues et deux bases, combien de temps faut-il pour commencer à écrire dans la quatrième telle? Très peu. Néanmoins, dans les postes vacants, ils écrivent quelque chose comme un mantra: "expérience en java depuis trois ans". Je suggère aux employeurs d'écrire ceci: "expérience en java à partir de trois ans ou l'achèvement d'une tâche de test." Vous devriez y aller, pas les dames.
Je vais jeter un peu sur le ventilateur: un php-shnik avec dix ans d'expérience qui connaît bien la POO et, par exemple, a écrit du texte, peut facilement passer en java. Là, même les mots-clés sont les mêmes: classe, interface, étend, implémente, etc. Les principes de SOLID sont exactement les mêmes.
Et peut-être qu'en 2-3 mois, il n'écrira pas pire qu'un javiste du travail de 3 ans. Parce que vous savez déjà comment écrire des requêtes SQL complexes, vous connaissez la norme HTTP, vous savez comment mettre en page et JavaScript, et plus encore. Bien sûr, il y a 100 500 nuances, le multithreading, etc., mais si vous vous êtes habitué à résoudre des problèmes en 10 ans, vous vous occuperez de tout, laissez-moi parcourir le manuel.
Au début, quelqu'un devrait se battre les mains, mais ce n'est toujours pas comparable à un débutant complet dans la profession.
Changement d'activité
Il y a beaucoup d'activités différentes liées au développement: conseil, promoteur des développeurs et autres. Si la langue est suspendue, alors pourquoi pas.
Vous pouvez démarrer votre propre entreprise et tout faire. La vérité et le risque maximal: 9 de ces initiatives sur 10 s'éteignent généralement. Eh bien, l'auto-développement est généralement également une priorité ici)
Changement constant de travail
Si vous changez de travail une fois par an ou deux, vous serez certainement en demande sur le marché. J'ai étudié React à un poste, Postgres à un autre, etc. Cependant, il existe également de nombreuses lacunes. Une carrière est plus difficile à construire; tout le temps dont vous avez besoin pour travailler avec une nouvelle équipe et de nouveaux patrons; devra expliquer lors des entretiens pourquoi vous êtes un tel "flyer"
Manière de compromis
Si nous ne pouvons pas résoudre le problème, nous pouvons l'affaiblir. Par exemple, pour moderniser au moins une partie du code produit, etc., car parfois vous pouvez trouver des changements qui sont bénéfiques pour l'entreprise. Eh bien, sur les petites choses aussi: passer de Grunt + RequireJS à Webpack + ES Imports est une affaire d'un jour, puis vous pouvez utiliser en toute sécurité le JavaScript moderne.
Gestion du temps
Si apprendre de nouvelles choses est intéressant, mais qu'il n'y a pas de temps, alors vous pouvez souvent trouver quelque chose. Par exemple, j'essaie d'aller à Saint-Pétersbourg en train (j'habite près de Pavlovsk). C'est environ 40 minutes de temps là-bas et autant de retour. Il est tout à fait possible de faire quelques «tomates» sur un sujet intéressant. Eh bien, ou lisez simplement un livre. Maintenant, par exemple, j'écris cet article)
Si je voyage en voiture, j'essaie d'écouter des podcasts thématiques pour élargir mes horizons.
Au lieu de la sortie
Cet article n'est pas une tentative d'enseigner à vivre dans le style d'articles stupides à la "7 façons de devenir riche sans rien faire." Au contraire, j'aimerais apprendre quelque chose d'utile à partir des commentaires. Alors bienvenue!