Un bon code n'atteindra pas Google

Pendant longtemps travaillant dans différents domaines de l'informatique, l'équipe de recherche et moi avons observé tous les problèmes possibles du développement des développeurs et toutes les causes et conséquences de leur pénurie. Nous nous sommes intéressés: pourquoi un programmeur devient-il si longtemps spécialiste ou n'en devient-il pas un? D'où venaient les attentes injustifiées des deux côtés? Et le plus important - que doit faire un développeur à chaque niveau pour entrer dans la caste privilégiée des seniors, architectes, chefs d'équipe et chefs?

Nous avons mené une étude approfondie auprès des programmeurs et de leurs dirigeants. Nous avons collecté les exigences pour les développeurs seniors des meilleures entreprises, les opportunités et les moyens de développer à ce niveau, généré toutes sortes de perspectives et de hacks de la vie et les avons transformés en cet article. Tout cela sera discuté plus loin.
image

Senior, qui est le f ... est Alice Senior?


Une analyse des descriptions de travail sur hh et les exigences que les gestionnaires ont partagées dans les conversations en face-à-face a montré qu'il n'y a pas d'approche unique pour déterminer le niveau supérieur . Dans une entreprise, c'est celle qui est capable de concevoir un module complexe lui-même, dans une autre - pour se connecter au raffinement des solutions individuelles, dans la troisième - celle qui est juste plus cool que les autres. Au sein des entreprises elles-mêmes, les exigences diffèrent également de manière significative entre les managers, les chefs d'équipe, les RH et les programmeurs eux-mêmes.

En conséquence, les développeurs rencontrent un certain nombre de problèmes: sans une définition adéquate des exigences, il n'y a pas de vision claire d'un cheminement de carrière et des étapes de développement. Questions: «Quel niveau ai-je maintenant? Dois-je gagner en proportion de lui? De combien ai-je besoin pour passer au niveau suivant? » - on entend partout.

Au lieu d'un développement systématique, il est nécessaire de résoudre des tâches standard, d'attendre l'attention de la direction, d'apprendre des cadres, de ne pas réaliser s'ils feront avancer une carrière. Nous vous conseillons: à l'entrée de l'entreprise ou dès maintenant - renseignez-vous sur les exigences non seulement au niveau actuel, mais aussi au plus haut possible. Ainsi, vous obtenez une vision en perspective du développement et pouvez vous y rapporter à chaque étape.

Évaluation du programmeur - le travail du programmeur?




Votre développement dépend du stade où vous en êtes maintenant. Mais comment l'évaluer? C'est le deuxième problème.

Plusieurs aperçus ont été obtenus à partir des sondages: 70% des programmeurs juniors et intermédiaires essaient de s'auto-évaluer. Paradoxe: plus le niveau de l'appréciation est bas, plus il opère avec ses propres idées.
Aux stades initiaux, il n'y a pas de profondeur de connaissances et d'étendue d'horizons - l'image est très limitée. Et une telle évaluation surestime l'idée de leur niveau dans 86% des cas.

Nous recommandons: dès que possible de passer des méthodes d'évaluation «internes» (votre propre opinion, votre expérience) à «externes» - demandez le feedback du leader vous-même, attaquez les collègues les plus expérimentés, comparez les tâches et les méthodes pour les résoudre, rendez-vous pour des entretiens avec les meilleures entreprises, où le niveau les exigences sont plus élevées et la base de test est meilleure, etc. L'évaluation du gestionnaire doit être objectivée par les résultats provenant de sources alternatives, afin de ne pas tomber dans le piège des limites des capacités et des exigences actuelles de l'entreprise / du département / du projet.

Mais il y a un chemin plus court. Nous avons nous-mêmes compilé une liste des exigences des meilleures entreprises pour les professionnels seniors . Et ils ont découvert un sérieux décalage qui se forme entre les niveaux intermédiaire et supérieur .

Si vous ne savez pas où vous allez, vous vous retrouverez très probablement quelque part au mauvais endroit.




Nous avons compilé les exigences et constaté que non seulement un bon code transforme un spécialiste junior en middl . Au niveau junior , un programmeur doit maîtriser toutes les technologies nécessaires et la capacité de résoudre des problèmes typiques en principe, apprendre à écrire du code avec compétence et rapidement. Au niveau du développeur intermédiaire , une culture de code, la capacité de penser plus profondément et plus largement, d'implémenter des tâches plus importantes de manière indépendante et de pouvoir appliquer divers outils de développement sont déjà nécessaires.

La différence entre moyen et senior est beaucoup plus mince. C'est ici que les développeurs forment un décalage, que tout le monde ne peut pas surmonter par lui-même. Il s'agit de toute une série de compétences et de qualités personnelles qui sont implicites, mais dont personne ne parle clairement: responsabilité de la majeure partie du système en cours de développement, mentorat, capacité à formuler et proposer de manière indépendante des solutions techniques optimales, compétences en communication, etc.

Alors, qui est super- senior ? Afin de formaliser les exigences, nous avons dû aller le plus loin possible et rassembler tout ce que les entreprises du niveau Yandex, Luxoft, Mail.Ru et même de Google montrent en open source. Et également vérifié ces informations lors de conversations avec les responsables du développement de sociétés éminentes.

Compétences solides

1. Code de propreté;
2. Compétences dures de niveau supérieur:

  • Connaissance des algorithmes et des structures de données (c'est la base, sans laquelle il n'y a nulle part);
  • Connaissance des principes de la POO;
  • Connaissance des cadres modernes (et plus la liste est longue, mieux c'est; la reconstitution régulière est la bienvenue);
  • Compréhension des principes de conception, des architectures de base (conçoit indépendamment un système / module en tant que tête d'affiche de projet ou participe à la conception de grands systèmes; au minimum - résout une tâche volumineuse en tenant compte de l'architecture actuelle du projet)
  • Connaissance des modèles de conception (pour reconnaître et appliquer un vélo dans le temps, et non pour réinventer la roue; au sens large, c'est la communication d'équipe dans une langue pour trouver rapidement une solution ou évaluer la décision de ses collègues);
  • Expérience de l'interaction avec les SGBD relationnels et NoSQL, la création de requêtes pour eux, les compétences d'optimisation et de gestion;
  • Comprendre les principes de l'organisation des tests, connaissance des tests unitaires, idéalement - passer aux tests automatisés au lieu des tests manuels;
  • Possession d'au moins un système de contrôle de version (le plus souvent vous en avez besoin d'un spécifique, selon les besoins de l'entreprise).

Compétences générales et horizons professionnels
Ces mêmes exigences mystérieuses, désespérément sous-estimées par les programmeurs eux-mêmes. Souvent la direction de l'entreprise et les RH opèrent sur les concepts de «travail d'équipe» et de «responsabilité», mais ils ne formalisent ni leurs critères ni leurs manifestations dans la vie. En conséquence, 90% des développeurs n'ont pas mentionné ces aspects comme importants pour le développement.

  • Compréhension des méthodologies de développement flexibles, capacité à travailler avec elles et à les adapter aux spécificités du projet;
  • Mentorat: la capacité de prendre des juniors, des débutants et parfois toute l'équipe en cas de besoin urgent;
  • La capacité de trouver et d'offrir des technologies, des outils pour la meilleure mise en œuvre, une évaluation compétente d'un ensemble de tâches;
  • Compétences en travail d'équipe: élaborer des accords, prendre des décisions d'équipe, maintenir des relations, se concentrer sur les résultats de l'équipe, poursuivre des intérêts communs;
  • Le niveau de responsabilité personnelle est l'acceptation de la responsabilité dans les domaines suivants: objectifs et plans, relations professionnelles, leadership, développement de carrière.

L'idée de nous tester pour la compétence dans tous les blocs énumérés nous a été présentée par la rareté totale des outils pour évaluer autre chose que le niveau de compétence linguistique sur le marché russe. Pour les besoins de notre projet de recherche, nous avons compilé une version d'essai du test en 3 langues, qui permet de naviguer rapidement au niveau actuel, et met également en évidence les forces et les faiblesses.

Pour résumer, il est extrêmement important de vous évaluer correctement en utilisant le maximum de ressources externes. Afin d'éviter le problème classique du marché du travail - «attentes des développeurs contre réalité des entreprises. Lorsque les développeurs évaluent leurs compétences et leur valeur supérieure à ce que les entreprises sont prêtes à faire. Ils espèrent également un décollage et un développement rapides, ce qui ne se produit pas dans cette mesure (pour plus de détails, voir le prochain article).

PS Dans la version initiale de l'article, nous avons proposé de passer le test à tout le monde. Cependant, nous ne nous attendions pas à un afflux aussi puissant de répondants. Et ils ont été obligés de fermer le test afin de pouvoir traiter les réponses et les résultats actuels à ceux qui ont laissé leurs coordonnées. Veuillez remplir le test de patience :)

Source: https://habr.com/ru/post/fr430576/


All Articles