Welche Fähigkeiten sollte ich ausbauen, um ein Entwicklungs- / Technikführer zu werden? [geschlossen]

82

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

Ich bin mir sicher, dass viele der Mitglieder hier das wahrscheinlich selbst durchgemacht haben und nun erfolgreiche Entwickler 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 soll.

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

lunchmeat317
quelle
Gibt es in Ihrem derzeitigen Unternehmen Möglichkeiten, zum Teamleiter befördert zu werden? Ohne Erfahrung als Teamleiter frage ich mich, ob zu viele Unternehmen nur von innen einstellen.
JeffO
@JeffO Ich habe gerade den Job gewechselt. Ich weiß nicht, ob ich hier die Gelegenheit haben werde - ich denke, es gibt eine Möglichkeit, aber es ist ein kleines Startup und ich denke, es wird immer nur einen Entwickler auf einmal führen.
lunchmeat317
2
Nur eine Fähigkeit: Fähigkeit, eine Person, die diese Position einnehmen kann, davon zu überzeugen, Ihnen diese Position einzuräumen.
Vortexwolf
1
Wie sich herausstellt, gibt es eine ganz bestimmte Möglichkeit, dass ich dafür nicht geeignet bin. So sehr ich meine Karriere in diese Richtung vorantreiben möchte, denke ich, dass ich mehr auf die Entwicklerseite der Dinge falle - ich möchte nur manchmal meinen Kopf senken und Code schreiben. Ich denke immer noch über die Möglichkeiten nach, aber jetzt mit Vorsicht.
lunchmeat317

Antworten:

90

Um ein technischer Vorsprung zu werden, sind die folgenden Punkte unerlässlich

  • Die Fähigkeit, Mitarbeiter aller Dienstalterstufen zu betreuen, von jemandem, der seit 3 ​​Monaten nicht mehr in der Uni ist, bis zu einer Person, die seit 30 Jahren programmiert

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

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

  • Seien Sie der Mörder der Insekten

  • Wissen, wie Sie zeitnahe Codeüberprüfungen durchführen, wonach Sie suchen und wie Sie den Zeitaufwand minimieren, den sie für die Speicherung und die durchzuführenden Änderungen benötigen

  • Bleiben Sie über die Entwicklungen in Ihrem Entwicklungsbereich auf dem Laufenden. Wenn Sie beispielsweise in .NET 2 keine neuen Frameworks oder Technologien kennengelernt hätten, würden Sie die Dinge heute ziemlich rückwärts machen.

  • Wie man Unit-Tests und Mocks schreibt und Ihre Entwickler dazu bringt, sie auch zu schreiben

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

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

  • Kontinuierliche Integration

  • Die Fähigkeit, Projekte und Veröffentlichungen 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 unterteilen und in funktionale Teile zu zerlegen

  • Ein gründliches Verständnis der Sicherheit, einschließlich der korrekten Handhabung von Passwörtern, der Trennung von Systemen, der Sicherung von Daten usw

  • Unternehmenskonzepte wie Servicebusse, Nachrichtenwarteschlangen und BizTalk

  • Enterprise-Design-Muster

  • Dienstarchitekturen / 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 unterstützt.

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

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

  • Interviewfähigkeiten und wie man die richtigen Mitarbeiter findet
  • Wie Sie mit Problemen mit Ihren Teammitgliedern umgehen
  • Geschäftsanweisungen / -ziele verwalten und relevante in Informationen für Ihre Entwickler umwandeln
  • Die Fähigkeit, die Zeit für Programmierer mit unterschiedlichen Fähigkeiten abzuschätzen
  • Die Fähigkeit, den richtigen Entwicklern Aufgaben zuzuweisen, basierend auf ihren Fähigkeiten und Fertigkeiten

Und zum Schluss 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 Rahmens liegen oder mit Einschränkungen wie Budget oder Zeit in Konflikt stehen.

Das Führen eines Teams ist eine herausfordernde Aufgabe. Sie müssen die Person sein, die alle Fragen beantworten kann. Sie müssen die richtigen Technologien für den Einsatz kennen (es sei denn, Sie haben einen Architekten). Sie müssen über Fähigkeiten zum Personalmanagement verfügen und zugänglich sein durch Ihre Mitarbeiter (Übernahme einer Führungsposition). Darüber hinaus müssen Sie über genaue Schätzfähigkeiten verfügen, um die Rentabilität des Projekts sicherzustellen, und Sie müssen in der Lage sein, sich mit dem Code eines beliebigen Benutzers zu beschmutzen, um Probleme zu lokalisieren und schnell zu beheben. Sie müssen vermeiden, alles selbst tun zu wollen und eine Teamumgebung zu fördern, die nicht giftig ist. Sie müssen stets den Überblick über Ihre Technologie behalten und sich über die neuesten Entwicklungen und Techniken sowie über allgemeine Branchentrends informieren.

Sie sollten auch wirklich mindestens eine Datenbankplattform kennen und diese gut kennen. Kenntnisse über die Replikation, gespeicherte Prozeduren, die Funktionsweise des Abfrageoptimierungsprogramms, das ordnungsgemäße Entwerfen eines Schemas und die zu indizierenden Felder.

Unabhängig von der genauen Position erfordert jede leitende Position, dass Sie in der Lage sind, effektiv zu kommunizieren. Wenn Sie kein selbstbewusster Redner sind, versuchen Sie, etwas wie Toast Masters (öffentliche Rede) zu machen. Erfahren Sie, wie Sie Augenkontakt herstellen und halten. Sei zuversichtlich. Kleide dich passend für die Position. Mit gutem Beispiel vorangehen.

Sam
quelle
2
Ich habe gerade ein paar Ideen entworfen, die mir schnell einfallen könnten. Ich werde später noch einmal darauf zurückkommen und mehr hinzufügen. Gute Frage.
Sam
Ich kann die Vorteile von Toastmasters unterstützen. Das hat mir in meiner Karriere sehr geholfen. Es ist von unschätzbarem Wert, in der Lage zu sein, Ihre Gedanken (insbesondere technische Gedanken nichttechnischen Personen) klar mitzuteilen.
Jason Swett
27

Meiner Erfahrung nach hat der Lead ein bisschen weniger mit der schmutzigen Arbeit der praktischen Programmierung zu tun als vielmehr mit dem Management. Zu diesem Zweck würde ich Folgendes empfehlen

  1. Investieren Sie mehr Zeit in Design, Architektur und Entwicklung . Ihre Aufgabe wird es sein, 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 Fachkenntnisse, um eine effektive und sachkundige Führung zu gewährleisten, aber eine bessere Sicht auf das, was vor sich geht und wie es funktionieren wird, wird hier von entscheidender Bedeutung sein. Sie sollten mehr über bewährte Entwurfsmuster und effektive Codierungsmethoden wissen

  2. Lernen Sie, mehrere Aufgaben zu erledigen und die Zeit zu managen . 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 Vorbote haben Sie

    • Um an mehr Meetings teilzunehmen, 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 es gibt viele Projekte.
    • Übernehmen Sie die Führung in Bezug auf Projektarchitektur und -design
    • Stellen Sie je nach Größe und Struktur der Organisation eine Vielzahl von Berichten pünktlich und termingerecht zur Verfügung. Stellen Sie sich den Lead als Projektmanager mit niedrigen Mieten vor.
  3. Bereiten Sie sich darauf vor, effektiv zu delegieren . Diese IMO wird das schwierigste Stück sein, an das man sich anpassen kann. Als Entwickler sind Sie es gewohnt, sich die Hände schmutzig zu machen und Dinge zu erledigen. Ich kümmere mich um alle Klempnerarbeiten und Nachforschungen. Das muss aufhören oder reduziert werden. Die Gigs kommen rein, du verteilst sie an das Team. Sie werden ein Stück der Action mitbekommen, nicht so sehr, wie Sie es gewohnt sind. Und Sie beißen sich auf die Zunge, um der Versuchung zu widerstehen, mehr Action für sich selbst zu erzielen.

  4. Erwägen Sie ein Training, das nicht nur Ihre Fähigkeiten steigert, sondern auch Ihre Einstellung ändert . Ein Crash-Kurs in sagen, 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 noch mehr Führungspositionen innehaben müssen, die weniger praktische technische Fähigkeiten und mehr Managementfähigkeiten erfordern.

  5. Verbessern Sie Ihre Kommunikationsfähigkeiten und Ihre 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 Bezug auf alles, was das Team betrifft, in Verbindung setzen. 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.

Kolossus
quelle
2
Tolle Antworten, ich mag, wie Sie all die Dinge notiert haben, von denen Sie als Entwickler im Allgemeinen keine Ahnung haben - insbesondere die Delegation. Letzte Aufgabe Ich habe alles delegiert, was ich konnte, und hatte immer noch einen Berg von Dingen, um mich zu beschäftigen. Dann mache ich in den (seltenen) freien Momenten das "langweilige" Angebot, um kleinere Fehler und Dokumentationen zu beheben. Muss von vorne führen.
Rocklan
2
+1 für die Hervorhebung, dass "Lead" -Rollen oft viel mehr Management als technische Fähigkeiten beinhalten
Krease
Dies ist eine hervorragende Antwort und fängt wirklich das Wesentliche der Rolle ein. Gut gemacht.
Lloyd Moore
14

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

  • Wie man Sachen spezifiziert und anderen Entwicklern Arbeit gibt. Ein Teil Ihrer Aufgabe ist es, die anderen Entwickler zu 100% auszunutzen. Das Schreiben von Spezifikationen, die eindeutig sind, ist sehr wichtig.

  • So erstellen Sie eine Skelett- / Prototyp-Anwendung, der alle anderen folgen sollten

  • Wie man die Moral eines guten Teams fördert

  • An Meetings teilnehmen, Meetings leiten und Aktionen dokumentieren

  • Wie Sie einen Projektplan schätzen, schreiben und den Projektplan aktualisieren

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

  • Wie spricht man mit dem Management? Sie sprechen eine andere Sprache zu uns. Gib ihnen Lösungen, keine Probleme. Sagen Sie ihnen, was das Technische für sie bedeutet.

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

Rocklan
quelle
Ich denke, viele Ihrer Stücke gehen in den Architect- oder PM-Eimer. Aber ja, manchmal muss der Entwicklerleiter das tun.
SandRock
11

All dies sind nach dem Buch und gute Antworten. Gestatten Sie mir, Sie von der Realität zu treffen.
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 kann es nicht in gegebener Zeitlinie oder gelöst werden
  • auch wie unwichtig 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. zB erwägen Sie, P = NP dem 6-Jährigen zu erklären. Leider gibt es dafür keine formelle Ausbildung, und Sie müssen es selbst lernen.

Dies ist auch die Position, an der politische Scheiße auf dich losgeht. Der Manager fordert Sie auf, eine Person zu bevorzugen, weil sie den Prozess befolgt. Sie wissen jedoch, dass diese Person aus verschiedenen Gründen von keinem Nutzen für Ihr Team ist, vom Mangel an technischen Fähigkeiten bis hin zu einem nicht guten Teammitglied. 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 gute Fähigkeiten und ein sehr effektives Teammitglied hat, aber nicht weiß, wie man das Management zufrieden stellt und daher weniger Bewertungen erhält.
Dann gibt es nutzlose Meetings, die von einem hochrangigen Mitarbeiter von einem entfernten Standort aus abgehalten werden und über die effektiven Prozesse und darüber, wie die neueste Prozessvariante die Produktivität steigern wird, referieren. Sie müssen wissen, wie Sie Ihr langweiliges Gesicht verstecken und energisch aussehen.

Manoj R
quelle
1
"Muss wissen, wie man sein langweiliges Gesicht versteckt und energisch aussieht" hahaha
Adrien Be
Ich fühle mich immer langweilig, wenn diese Besprechung beginnt, außer dass etwas im Zusammenhang mit technischen
Fragen