Das Forschungsteam und ich haben lange Zeit in verschiedenen Bereichen der IT gearbeitet und alle möglichen Probleme, Entwickler zu werden, sowie alle Ursachen und Folgen ihres Mangels beobachtet. Wir waren interessiert an: Warum entwickelt sich ein Programmierer so lange zu einem
Senior- Spezialisten oder wird er überhaupt nicht? Woher kamen die ungerechtfertigten Erwartungen auf beiden Seiten? Und vor allem: Was sollte ein Entwickler auf jeder Ebene tun, um in die privilegierte Kaste der Senioren, Architekten, Teamleiter und Führungskräfte einzutreten?
Wir haben eine umfassende Studie unter Programmierern und ihren Führungskräften durchgeführt. Wir haben die Anforderungen an
leitende Entwickler von Top-Unternehmen, Möglichkeiten und Möglichkeiten zur Entwicklung auf diesem Niveau gesammelt, alle Arten von Erkenntnissen und Life-Hacks generiert und in diesen Artikel umgewandelt. All dies wird weiter diskutiert.

Senior, wer zum Teufel ist Alice Senior?
Eine Analyse der Stellenbeschreibungen zu hh und der Anforderungen, die Manager in persönlichen Gesprächen teilten, ergab, dass es keinen einheitlichen Ansatz für die Bestimmung der
Führungsebene gibt . In einem Unternehmen ist dies derjenige, der in der Lage ist, ein komplexes Modul selbst zu entwerfen, in einem anderen - um sich mit der Verfeinerung einzelner Lösungen zu verbinden, in dem dritten - derjenige, der einfach cooler ist als die anderen.
Innerhalb der Unternehmen selbst unterscheiden sich die Anforderungen auch erheblich zwischen Managern, Teamleitern, Personal und Programmierern.
Infolgedessen haben Entwickler eine Reihe von Problemen: Ohne eine angemessene Definition der Anforderungen gibt es keine klare Vision eines Karrierewegs und von Entwicklungsschritten. Fragen: „Welches Level habe ich jetzt? Verdiene ich im Verhältnis zu ihm? Wie viel muss ich auf das nächste Level upgraden? “ - Wir hören überall.
Anstelle einer systematischen Entwicklung ist es notwendig, Standardaufgaben zu lösen, auf die Aufmerksamkeit des Managements zu warten, Rahmenbedingungen zu lernen und nicht zu erkennen, ob sie eine Karriere vorantreiben werden. Wir empfehlen: Wenn Sie in das Unternehmen eintreten oder gerade jetzt - lernen Sie die Anforderungen nicht nur auf dem aktuellen Niveau, sondern auch auf höchstem Niveau kennen. So erhalten Sie eine perspektivische Vision der Entwicklung und können sich bei jedem Schritt darauf beziehen.
Bewertung des Programmierers - die Arbeit des Programmierers?

Ihre Entwicklung hängt davon ab, in welchem Stadium Sie sich gerade befinden. Aber wie bewertet man das? Dies ist das zweite Problem.
Aus den Umfragen gingen mehrere Erkenntnisse hervor: 70% der
Junior- Middle- Programmierer versuchen, sich selbst zu bewerten. Paradox: Je niedriger das Niveau des Bewerteten, desto mehr arbeitet er mit seinen eigenen Ideen.
In der Anfangsphase gibt es keine Tiefe des Wissens und keine Breite des Horizonts - das Bild ist sehr begrenzt. Und eine solche Einschätzung überschätzt in 86% der Fälle die Vorstellung von ihrem Niveau.
Wir empfehlen: Wechseln Sie so früh wie möglich von „internen“ Bewertungsmethoden (Ihre eigene Meinung, Erfahrung) zu „externen“ - fragen Sie den Leiter selbst nach Feedback, greifen Sie die erfahrensten Kollegen an, vergleichen Sie Aufgaben und Lösungsmethoden, führen Sie Interviews mit Top-Unternehmen, bei denen die Ebene Die Anforderungen sind höher und die Testbasis ist besser usw. Die Einschätzung des Managers muss durch die Ergebnisse aus alternativen Quellen objektiviert werden, um nicht in die Falle der Einschränkungen der aktuellen Fähigkeiten und Anforderungen des Unternehmens / der Abteilung / des Projekts zu geraten.
Aber es gibt einen kürzeren Weg. Wir haben selbst eine Liste der Anforderungen von Top-Unternehmen an
leitende Angestellte zusammengestellt. Und sie entdeckten eine ernsthafte Verzögerung, die sich zwischen der
mittleren und der
höheren Ebene bildet.
Wenn Sie nicht wissen, wohin Sie gehen, befinden Sie sich höchstwahrscheinlich am falschen Ort.

Wir haben die Anforderungen zusammengestellt und festgestellt, dass nicht nur guter Code einen
Junior- Spezialisten zum
Mittelmaß macht . Auf der
Junior- Ebene muss ein Programmierer alle notwendigen Technologien und die Fähigkeit beherrschen, typische Probleme im Prinzip zu lösen, und lernen, Code kompetent und schnell zu schreiben. Auf der Ebene der
mittleren Entwickler ist bereits eine Codekultur erforderlich, die Fähigkeit, tiefer und umfassender zu denken, größere Aufgaben unabhängig zu implementieren und verschiedene Entwicklungstools anwenden zu können.
Der Unterschied zwischen
Mittel- und
Senioren ist viel geringer. Hier bilden Entwickler eine Verzögerung, die nicht jeder alleine überwinden kann. Dies ist eine ganze Reihe von Fähigkeiten und persönlichen Qualitäten, die impliziert sind, über die aber niemand klar spricht: Verantwortung für den größten Teil des zu entwickelnden Systems, Mentoring, die Fähigkeit, selbständig optimale technische Lösungen zu formulieren und vorzuschlagen, Kommunikationsfähigkeiten usw.
Wer ist also Super-
Senior ? Um die Anforderungen zu formalisieren, mussten wir so weit wie möglich gehen und alles zusammenstellen, was Unternehmen der Yandex-, Luxoft-, Mail.Ru-Gruppe und sogar Google-Ebene in Open Source zeigen. Außerdem wurden diese Informationen in Gesprächen mit den Entwicklungsleitern namhafter Unternehmen überprüft.
Harte Fähigkeiten1. Sauberkeit des Codes;
2. Harte Fähigkeiten der oberen Stufe:
- Kenntnis von Algorithmen und Datenstrukturen (dies ist die Basis, ohne die es nirgendwo gibt);
- Kenntnis der Prinzipien von OOP;
- Kenntnis moderner Rahmenbedingungen (und je länger die Liste, desto besser; regelmäßige Nachschub ist willkommen);
- Verständnis von Entwurfsprinzipien, grundlegenden Architekturen (entwirft unabhängig ein System / Modul als Projekt-Headliner oder beteiligt sich am Entwurf großer Systeme; löst minimal eine umfangreiche Aufgabe unter Berücksichtigung der aktuellen Architektur des Projekts);
- Kenntnis der Entwurfsmuster (um ein Fahrrad rechtzeitig zu erkennen und anzuwenden und das Rad nicht neu zu erfinden; im weiteren Sinne ist es Teamkommunikation in einer Sprache, um schnell eine Lösung zu finden oder die Entscheidung der Kollegen zu bewerten);
- Erfahrung in der Interaktion mit relationalen und NoSQL-DBMS, Erstellen von Abfragen, Optimierungs- und Verwaltungsfähigkeiten;
- Verständnis der Prinzipien der Testorganisation, Kenntnisse über Unit-Tests, idealerweise - Umstellung auf automatisierte Tests anstelle von manuellen Tests;
- Besitz mindestens eines Versionskontrollsystems (meistens benötigen Sie ein bestimmtes, abhängig von den Anforderungen des Unternehmens).
Soft Skills und professionelle HorizonteDieselben mysteriösen Anforderungen, die von den Programmierern selbst verzweifelt unterschätzt wurden. Oft arbeiten die Unternehmensleitung und die Personalabteilung nach den Konzepten „Teamarbeit“ und „Verantwortung“, aber sie formalisieren weder ihre Kriterien noch ihre Manifestationen im Leben. Infolgedessen erwähnten 90% der Entwickler diese Aspekte nicht als wichtig für die Entwicklung.
- Verständnis für flexible Entwicklungsmethoden, die Fähigkeit, mit ihnen zu arbeiten und sie an die Besonderheiten des Projekts anzupassen;
- Mentoring: die Fähigkeit, Junioren, Anfänger und manchmal das gesamte Team in dringenden Fällen aufzunehmen;
- Die Fähigkeit, Technologien, Werkzeuge für die beste Implementierung und eine kompetente Bewertung einer Reihe von Aufgaben zu finden und anzubieten;
- Teamfähigkeit: Vereinbarungen ausarbeiten, Teamentscheidungen treffen, Beziehungen pflegen, sich auf Teamergebnisse konzentrieren, gemeinsame Interessen verfolgen;
- Die Ebene der persönlichen Verantwortung ist die Übernahme von Verantwortung in den Bereichen: Ziele und Pläne, berufliche Beziehungen, Führung, Karriereentwicklung.
Die Idee, uns in allen aufgelisteten Blöcken auf Kenntnisse zu testen, wurde uns durch die völlige Knappheit an Instrumenten zur Bewertung von etwas anderem als dem Niveau der Sprachkenntnisse auf dem russischen Markt präsentiert. Für die Anforderungen unseres Forschungsprojekts haben wir eine Testversion des Tests für 3 Sprachen zusammengestellt, mit deren Hilfe Sie schnell auf dem aktuellen Niveau navigieren und die Stärken und Schwächen hervorheben können.
Zusammenfassend ist es äußerst wichtig, sich anhand der maximalen Menge an externen Ressourcen angemessen zu bewerten. Um das klassische Problem auf dem Arbeitsmarkt zu vermeiden - „Erwartungen der Entwickler vs. Realität der Unternehmen. “ Wenn Entwickler ihre Fähigkeiten und ihren Wert höher bewerten als Unternehmen bereit sind. Sie hoffen auch auf einen schnellen Start und eine schnelle Entwicklung, was insofern nicht der Fall ist (weitere Einzelheiten siehe nächster Artikel).
PS In der ersten Version des Artikels haben wir vorgeschlagen, den Test an alle weiterzugeben. Wir haben jedoch keinen so starken Zustrom von Befragten erwartet. Und sie mussten den Test schließen, um die aktuellen Antworten und Ergebnisse an diejenigen weitergeben zu können, die ihre Kontaktdaten hinterlassen hatten. Bitte füllen Sie den Test für Geduld aus :)