Der Autor des Buches über den Aufbau einer Karriere, Roman Zhikharev, spricht mit dem technischen Direktor der G-Core Labs , Vasily Mikhaleny, darüber, was moderne IT-Unternehmen von ihren Mitarbeitern erwarten.- Wie sieht Ihrer Meinung nach das Konzept des Entwicklerwerts aus?Um Ihren Wert zu steigern, müssen Sie drei Dinge tun:
- Untersuchung der heute und morgen auf dem Markt geforderten Technologien.
- Entwickeln Sie universelle Fähigkeiten (Soft Skills).
- Übernehmen Sie mehr Verantwortung.
- Beginnen wir mit dem einfachsten. Welche Technologien zu beherrschen?Die heutigen Trends ändern sich unglaublich schnell. Daher möchte ich einige allgemeine Prinzipien aussprechen, anstatt Trends zu beschreiben oder Vorhersagen zu treffen. Als ideale Konfiguration von Erfahrung und Fähigkeiten betrachte ich eine Person mit T-förmigem Fachwissen (T-förmige Personen). Das Wesentliche des Begriffs ist, dass er als Experte auf einem bestimmten technischen Gebiet eine Vorstellung davon haben sollte, was in den Nachbarländern geschieht.
Als Backend-Entwickler müssen Sie beispielsweise neben umfassenden Kenntnissen der Funktionen der Sprache (z. B. Python) und der gängigen Frameworks unbedingt den Test-, Assembly- und Bereitstellungsprozess kennen und vorzugsweise in der Lage sein, diesen zu erstellen (CI / CD-Pipeline, z. B. in Jenkins). Er sollte die Merkmale der Umgebung kennen, in der der Code funktioniert, und wissen, wie die Fehlertoleranz darin sichergestellt werden kann. Um beispielsweise mit AWS / Azure / GCE oder der lokalen Installation von k8s fertig zu werden, müssen Sie den Fehler in den in golang geschriebenen Bereitstellungstools korrigieren.
In einigen Bereichen erhöht der Wert die Verfügbarkeit von Zertifikaten. Bei der Einstellung ist Ihr Portfolio wichtig. Es ist am einfachsten, Ihre Fähigkeiten und Ihren Code zu demonstrieren, indem Sie an Open-Source-Projekten teilnehmen oder Ihre Haustierprojekte auf github veröffentlichen.
- Sie haben mehrere beliebte technologische Lösungen erwähnt. Es stellt sich heraus, dass wir lernen müssen, was im Trend ist?Nicht unbedingt. Sie können auf dem Markt einen Hype machen oder in die entgegengesetzte Richtung gehen. Wenn Sie an seltener Technologie interessiert sind und nicht der Mode nachlaufen möchten, besteht die Möglichkeit, Ihren Wert aufgrund des einzigartigen Wissens zu steigern.
Moderne Technologieriesen sind flexibel genug und können es sich leisten, ihre Systeme erfolgreich zu aktualisieren. Und soweit man beurteilen kann, verfügen Yandex und Google nicht über ein beeindruckendes Erbe an Lösungen, die auf veralteten Technologien basieren.
Es gibt jedoch konservativere Sektoren:
internationale Banken , Industrie- und Energieriesen sowie die Verteidigungsindustrie. Es ist sehr schwierig für sie, Spezialisten auf ihrem eigenen Stapel zu finden, und sie sind bereit, gutes Geld zu bezahlen. Ein gutes Beispiel ist die Verwendung des "sterbenden" Perl auf booking.com und mail.ru. Oder
COBOL , entwickelt in den 60er Jahren und immer noch in einigen US-Finanzinstituten eingesetzt.
- Und was ist dann mit universellen Fähigkeiten gemeint?Die Fähigkeit, mit anderen Menschen zu kommunizieren, erhöht den Wert des Entwicklers für das Unternehmen erheblich. In der Praxis bedeutet dies, dass eine Person ein Problem ansprechen, ihre Meinung begründen, eine Lösung vorschlagen, Stakeholder korrekt identifizieren, wissen kann, wie man effektiv mit verschiedenen Personen interagiert (Flexibilität), Konflikte konstruktiv löst, verhandelt, trainiert, betreut und coacht. Und sogar öffentlich sprechen oder präsentieren.
Dies beinhaltet auch die Fähigkeit, dieselbe Sprache wie der Designer zu sprechen und die Motive seines Führers zu verstehen. Ich denke über Englischkenntnisse nach und so ist alles klar.
- Was bedeutet es, mehr Verantwortung zu übernehmen?Wir bemühen uns, Mitarbeiter einzustellen, die etwas weiter als ihr Arbeitsgerät (Technologie) schauen und sich auf Werte für den Endbenutzer konzentrieren. Zum Beispiel suchen diejenigen, die Optionen zur Optimierung von Entwicklungsprozessen anbieten, nach Lösungen für das Problem eines Kunden und sind bereit, Anstrengungen zu unternehmen, um Änderungen zu diskutieren und umzusetzen.
Leider sieht man oft Entwickler, die um ihre Tools einen Kult kreieren. Sie müssen jedoch verstehen, dass die Qualität oder die verwendeten Tools keine Rolle spielen, wenn der Code nicht rechtzeitig in Produktion geht. Dieser Code brachte dem Unternehmen keinen Gewinn.
"Es erinnert mich an agile Werte." Gibt es eine Verbindung?Ja Es gibt eine Reihe von
Praktiken namens DevOps, die agile Werte entwickeln. Es hilft dem Unternehmen, seinen Fokus von der Formalisierung von Prozessen auf die interne Interaktion zu verlagern, um Werte zu schaffen. Dies ist jedoch unmöglich, ohne die Verantwortung für das Endergebnis aller Teammitglieder zu übernehmen.
Ein guter Entwickler versteht die DevOps-Kultur und weiß, wie man sie in seinem Team und im Idealfall im Unternehmen anwendet. Oder sogar pflanzen. Eine der Praktiken von DevOps ist beispielsweise CI / CD (die häufigsten Versionen). Und wenn Sie wirklich häufige Releases (mindestens einmal am Tag) erstellen möchten, können Sie dies nicht tun, wenn die Integration und das Testen, die Automatisierung und Stabilisierung des Bereitstellungsprozesses, die Trennung des Releases von der Bereitstellung (Feature-Umschaltung) nicht automatisiert sind. Dies funktioniert und ist für die Überwachung und die Bewahrungsentwickler klar Abwärtskompatibilität, Rollback-Mechanismus ändern usw. Es wird Ihnen klar, dass die Verantwortung eines guten Entwicklers nicht endet, wenn Sie die Aufgabe an die QS-Abteilung übertragen.
Der Wert häufiger Veröffentlichungen scheint für alle offensichtlich zu sein.
Anti-DevOps ist eine Aufteilung des Produktionsprozesses in zwei oder mehr Funktionsbereiche: Entwicklung, Test, Betrieb, Sicherheit. Infolgedessen löst jede Funktion nur ihre eigenen Probleme.
Der allgemeine Sinn ist, dass das Team die Verantwortung für die Qualität des Produkts, den Wert der Funktionen für den Kunden, das Timing und in viel geringerem Maße die formale Einhaltung der Anforderungen in der Aufgabenbeschreibung übernehmen sollte. Der Entwickler sollte keine Vorurteile haben, seine Haftung einzuschränken: „Ich habe die Aufgabe bereits auf das Testen übertragen. Ich kann nichts anderes helfen. "
Je mehr Verantwortung, desto größer die Auswirkung auf die Unternehmensergebnisse. In einem guten Unternehmen steigen Menschen, die das Wachstum beeinflussen, die Karriereleiter nach oben.
Teamverantwortung erfordert gute Kommunikation. All dies ohne die Fähigkeiten einer konstruktiven Kommunikation und Teamarbeit aufzubauen, ist fast unmöglich.
- Überall so?In einem großen Unternehmen mit bereits festgelegten ausgereiften Prozessen bedeutet die Übernahme von Verantwortung, etwas zu tun, das über die Arbeit an Ihrem Projekt hinausgeht: Organisation von Meetings, technischen Gesprächen, Hackathons; Teilnahme an Vorverkaufs- oder Praktikantenschulungen.
- Schlussfolgerungen?Zusammenfassend können wir sagen, dass die
optimalste Strategie für die persönliche Entwicklung darin besteht
, Kommunikationsfähigkeiten zu
erwerben ,
um die Verantwortungsgrenzen für das, was mit Ihrem Produkt und in Ihrem Team oder Unternehmen geschieht, effektiver zu
erweitern .