it-swarm.com.de

Welche Fähigkeiten sollte ich entwickeln, um ein Entwicklungs- / technischer Leiter zu werden?

Ich bin derzeit ein professioneller Programmierer. Ich möchte meine Fähigkeiten erweitern, aber ich möchte auch die Karriere zum Entwickler als Teil eines Teams machen. Ich weiß, dass es viel zu lernen gibt (und das wird nicht sofort geschehen), aber ich denke, ich bin klug genug, es zu tun, und ich bin der Herausforderung gewachsen.

Ich bin sicher, dass viele der Mitglieder hier dies wahrscheinlich selbst durchgemacht haben und nun erfolgreiche Entwickler-Leads sind. Obwohl ich einige persönliche Bereiche kenne, die ich verbessern möchte (Tiefe des Wissens, Breite des Wissens, Fähigkeiten usw.), bin ich mir leider nicht sicher, wie ich so etwas anfangen würde.

Welche Schritte sollte ich als Programmierer unternehmen, um dieses Ziel zu erreichen? Was soll ich priorisieren?

84
lunchmeat317

Um ein technischer Leiter zu werden, sind die folgenden wesentlich

  • Die Fähigkeit, Mitarbeiter auf allen Ebenen des Dienstalters zu betreuen, von jemandem, der seit 3 ​​Monaten nicht mehr an der Uni ist, bis zu einer Person, die seit 30 Jahren programmiert

  • Gute Kenntnisse Ihrer Entwicklungsdomäne. Dies umfasst: Sprachen, Frameworks, Dienstprogramme, Entwicklungsumgebungen

  • Ein solides Verständnis für Issue-Management-Systeme, Projektmanagement-Fähigkeiten und Versionskontrolle

  • Sei der richtige Bug-Killer

  • Wissen, wie man zeitnahe Codeüberprüfungen durchführt, worauf zu achten ist und wie man die Zeit minimiert, die sie benötigen, um Änderungen vorzunehmen

  • Bleiben Sie über die Entwicklungen in Ihrer Entwicklungsdomäne auf dem Laufenden. Wenn Sie beispielsweise keine neuen Frameworks oder Technologien aus .NET 2 gelernt haben, würden Sie die Dinge heute ziemlich rückwärts machen.

  • Wie Sie Unit-Tests und Mocks schreiben und Ihre Entwickler dazu bringen, sie auch zu schreiben

  • Wissen, was Designmuster sind und wann sie verwendet werden müssen

  • Wissen darüber, was Code-Gerüche sind und wie sie gemindert werden können

  • Kontinuierliche Integration

  • Die Fähigkeit, Projekte und Releases zu planen

Abhängig von Ihrer Organisation und davon, ob Sie Architekten als Mitarbeiter haben, müssten Sie wahrscheinlich Folgendes wissen:

  • Die Fähigkeit, Ihre Projekte zu komponieren und in funktionale Teile zu zerlegen

  • Ein gründliches Verständnis der Sicherheit, einschließlich des richtigen Umgangs mit Passwörtern, der Trennung von Systemen, der Sicherung von Daten usw.

  • Unternehmenskonzepte wie Servicebusse, Nachrichtenwarteschlangen, BizTalk

  • Unternehmensdesignmuster

  • Servicearchitekturen/RPC wie SOAP und REST

  • ORM-Frameworks wie Hibernate, Entity Framework, Doctrine

  • Kontinuierliche Bereitstellung

  • Die Wolke

  • Die Fähigkeit, die richtigen Technologien für ein Projekt zu empfehlen. Dies kann schwierig sein, wenn Ihr Team/Shop nur .NET, PHP oder Java verwendet.

  • Entwerfen Sie die Anwendung so, dass zukünftige Verbesserungen problemlos berücksichtigt werden können

Wenn Sie Entwicklungsmanager werden, benötigen Sie außerdem:

  • Interviewfähigkeiten und wie man die richtigen Mitarbeiter findet
  • Wie Sie mit Problemen Ihrer Mitarbeiter umgehen können
  • Verwalten von Geschäftsrichtlinien/-zielen und Konvertieren relevanter Richtlinien in Informationen für Ihre Entwickler
  • Die Fähigkeit, die Zeit für Programmierer mit unterschiedlichen Fähigkeiten abzuschätzen
  • Die Fähigkeit, Aufgaben den richtigen Entwicklern basierend auf ihren Fähigkeiten und Fertigkeiten zuzuweisen

Und schließlich noch einige andere empfohlene Punkte:

  • Lernen Sie außerhalb Ihrer Entwicklungsdomäne

  • Lernen Sie, NEIN zu sagen, wenn Dinge nicht möglich sind oder außerhalb des Geltungsbereichs liegen oder mit Einschränkungen wie Budget oder Zeit in Konflikt stehen.

Die Führung eines Teams ist eine herausfordernde Aufgabe. Sie müssen die Person sein, die jede Frage beantworten kann, Sie müssen die richtigen Technologien kennen (es sei denn, Sie haben einen Architekten), Sie müssen über Fähigkeiten im Bereich Personalmanagement verfügen und ansprechbar sein von Ihren Mitarbeitern (Übernahme einer Führungsposition). Darüber hinaus benötigen Sie genaue Schätzfähigkeiten, um die Rentabilität des Projekts sicherzustellen, und Sie müssen in der Lage sein, sich mit dem Code eines anderen die Hände schmutzig zu machen, um Probleme zu lokalisieren und schnell zu beheben. Sie müssen vermeiden, alles selbst tun zu wollen, und eine Teamumgebung fördern, die nicht giftig ist. Sie müssen stets den Überblick über Ihren Technologie-Stack behalten und die neuesten Entwicklungen und Techniken sowie breitere branchenweite Trends kennenlernen.

Sie sollten auch mindestens eine Datenbankplattform wirklich kennen und gut kennen. Erfahren Sie, wie Sie Replikationen durchführen, gespeicherte Prozeduren ausführen, wie der Abfrageoptimierer funktioniert, wie Sie ein Schema richtig entwerfen und welche Felder indiziert werden sollen.

Unabhängig von der genauen Position erfordert jede Führungsrolle, dass Sie in der Lage sind, effektiv zu kommunizieren. Wenn Sie kein selbstbewusster Redner sind, sollten Sie etwas wie Toast Masters (öffentliche Rede) machen. Lernen Sie , wie Augenkontakt hergestellt und gehalten wird. Sei zuversichtlich. Kleide dich passend zur Position. Mit gutem Beispiel vorangehen.

90
Sam

Nach meiner Erfahrung hat der Lead etwas weniger mit der schmutzigen Arbeit der praktischen Programmierung zu tun als vielmehr mit dem Management. Zu diesem Zweck würde ich Folgendes empfehlen

  1. Investiere mehr Zeit in Design und architektonische Aktivitäten und Entwicklung. Als Führungskraft wird sich Ihre Funktion darauf konzentrieren, Ihrem Team technische Anleitung und Anleitung zu geben. Sie müssen mehr verstehen, wie Teile eines Ganzen zusammenpassen, und weniger, wie die Installation funktioniert. Verstehen Sie mich nicht falsch, Sie benötigen solide technische Kenntnisse, um einen effektiven und sachkundigen Vorsprung zu haben, aber eine übergeordnete Sicht auf das, was vor sich geht und wie es funktionieren wird, wird hier von entscheidender Bedeutung sein. Sie sollten mehr Best-Practice-Entwurfsmuster und effektive Codierungspraktiken kennen

  2. Lernen Sie Multitasking und Zeitmanagement. Wenn Sie jetzt gut darin sind, ist das schön: Entwickeln Sie mehr. Als Entwickler müssen Sie sich nur um Ihre aktuelle Aufgabe/Ihr aktuelles Projekt kümmern. Als Führung haben Sie

    • An mehr Meetings teilnehmen, als Sie möchten. Dies ist vielleicht der nervenaufreibendste Teil der Teamführung
    • Arbeiten Sie an der Ressourcenzuweisung. Wenn Sie Glück haben, werden die Ressourcen knapp und die Projekte reichlich sein.
    • Übernehmen Sie die Führung bei Projektarchitektur und -design
    • Stellen Sie je nach Größe und Struktur der Organisation eine Vielzahl von Berichten zur Verfügung, die termingerecht und pünktlich sind. Stellen Sie sich den Lead als einen Projektmanager mit niedrigen Mieten vor.
  3. Bereiten Sie sich darauf vor, effektiv zu delegieren. Diese IMO wird am schwierigsten anzupassen sein. Als Entwickler sind Sie es gewohnt, sich die Hände schmutzig zu machen und Dinge zu erledigen. Alle Klempnerarbeiten und Nachforschungen anstellen. Das muss aufhören oder reduziert werden. Die Gigs kommen rein, du gibst es dem Team aus. Sie erhalten einen Teil der Action, nicht nur so viel, wie Sie es gewohnt sind. Und Sie werden sich auf die Zunge beißen, um der Versuchung zu widerstehen, mehr Action für sich selbst in die Enge zu treiben.

  4. Entlang der professionelleren Linie erwägen Sie ein Training, das nicht nur Ihre Fähigkeiten verbessert, sondern auch Ihren Ausblick ändert. Ein Crashkurs in Software-Projektmanagement wird nicht schaden. Lean Six Sigma ist auch ein sehr gutes Trainingsprogramm (ich kann seine Wirksamkeit bezeugen), mit dem Sie die Problemlösung aus einem logischeren Blickwinkel betrachten können. Ganz zu schweigen davon, dass Sie von der Führungsposition aus für noch höhere Positionen bereit sind, die weniger praktische technische Fähigkeiten und mehr Managementfähigkeiten erfordern.

  5. Verbessern Sie Ihre Kommunikations- und zwischenmenschlichen Fähigkeiten. Sie sind der wichtigste Einstiegspunkt für Ihr Team von außen. Ihr Manager oder ein anderer Vorgesetzter wird zuerst zu Ihnen kommen. Andere Einheiten/Teams in Ihrer Organisation werden sich zuerst mit Ihnen in Verbindung setzen, wenn es um das Team geht. Sie werden die schwierigste und unvorhersehbarste Ressource von allen verwalten: Menschen. Sie müssen eine dicke Haut wachsen lassen, lernen, große Mengen an Stolz zu schlucken und Verantwortung für das Versagen Ihres Teams zu übernehmen.

27
kolossus

Dinge, die Sam nicht gesagt hat, sind auch wichtig:

  • Wie man Dinge spezifiziert und anderen Entwicklern Arbeit gibt. Ein Teil Ihrer Aufgabe ist es, die anderen Entwickler zu 100% ausgelastet zu halten. Das Schreiben eindeutiger Spezifikationen ist sehr wichtig.

  • Erstellen einer Skelett-/Prototyp-Anwendung, der alle anderen folgen sollten

  • Wie man eine gute Teammoral fördert

  • Wie man an Meetings teilnimmt, diese leitet und leitet, wie man Aktionselemente dokumentiert

  • Wie man schätzt, einen Projektplan schreibt und den Projektplan aktualisiert

  • So blicken Sie in die Zukunft - Wenn in 3 Monaten ein Problem auftritt, sollten Sie versuchen, es so früh wie möglich zu beheben. Wenn ein Entwickler 7 Wochen in den Urlaub fährt, müssen Sie jetzt mit der Planung beginnen.

  • Wie man mit dem Management spricht. Sie sprechen eine andere Sprache als wir. Gib ihnen Lösungen, keine Probleme. Sagen Sie ihnen, was das technische Zeug für sie bedeutet.

Und während Sam dies bereits sagte, ist eines der wichtigsten Dinge lernen, wie man nein sagt. Sie werden dies a lot tun. Die andere Sichtweise ist, yes zu sagen, aber "nur wenn wir mehr Geld/Zeit/Ressourcen bekommen können" - oder "das ist für die zweite Veröffentlichung" :)

14
Rocklan

All dies sind nach dem Buch und guten Antworten. Erlaube mir, dich von der Realität zu schlagen.
Ob Sie es glauben oder nicht, die meiste Zeit werden Sie damit verbringen, Manager zu erklären

  • wie schwer ein Problem zu lösen ist oder
  • warum es nicht in vorgegebener Zeit oder gelöst werden kann
  • auch wie weniger wichtig es ist zu lösen.

Dazu benötigen Sie die Fähigkeit, nicht-technischen Personen technische Dinge in nicht-technischen Begriffen zu erklären. Und es ist sehr schwierig. z.B. Erwägen Sie, P = NP für 6-Jährige zu erklären. Leider gibt es dafür kein formelles Training, und Sie müssen es selbst lernen.

Dies ist auch die Position, in der politische Scheiße dich zu treffen beginnt. Der Manager wird Ihnen sagen, dass Sie eine Person bevorzugen sollen, weil sie dem Prozess folgt. Sie wissen jedoch, dass die Person in Ihrem Team aus verschiedenen Gründen, von mangelnden technischen Fähigkeiten bis hin zu keinem guten Teammitglied, keinen Nutzen hat. Sie müssen also immer noch nicht nur mit dieser Person arbeiten, sondern dieser Person auch gute Bewertungen geben. Das Gegenteil ist die Person, die über gute Fähigkeiten und ein sehr effektives Teammitglied verfügt, aber nicht weiß, wie sie dem Management gefallen soll, und daher weniger Bewertungen erhält.
Dann gibt es nutzlose Besprechungen, die jemand in hoher Position von einem entfernten Standort aus abhält und über die effektiven Prozesse und darüber spricht, wie seine neueste Prozessvariante die Produktivität steigern wird. Sie müssen wissen, wie Sie Ihr langweiliges Gesicht verbergen und energisch aussehen können.

11
Manoj R