Optionen für einen Hauptprogrammierer, der lieber programmiert als führt? [geschlossen]

19

Anfang dieses Jahres wurde ich zu einem leitenden Entwickler befördert, nachdem der leitende Entwickler unseres Teams in eine andere Abteilung gewechselt war. Ich habe ungefähr 5 Jahre Berufserfahrung und aufgrund der Verfügbarkeit und der Leistung in der Vergangenheit war ich die erste Wahl des Managements für die Leitung des Projekts. Ich war ein wenig besorgt, entschied aber, dass dies eine gute Gelegenheit für den beruflichen Aufstieg und die Berufserfahrung war, und nahm an.

Mein Fazit ist jedoch, dass ich nicht annähernd so viel Spaß daran habe wie in meiner vorherigen Position als Entwickler. Obwohl ich ein Team von 5 Entwicklern erfolgreich durch mehrere Releases geführt habe, berühre ich fast nie einen Code. Stattdessen führe ich Planung, Design und Team-Management sowie Code-Reviews durch. Die Notwendigkeit, viel mehr Dinge im Auge zu behalten und Aufgaben zu planen, damit sie dem Team zugewiesen werden können, bereitet mir buchstäblich jeden Tag die meisten Kopfschmerzen. Obwohl ich selten Überstunden mache, fühle ich mich jeden Tag am meisten ausgebrannt, wenn ich die Arbeit verlasse, und denke nicht, dass ich infolgedessen auch die Freizeit genossen habe.

Also meine Frage: Wie würden Sie mit einer solchen Situation umgehen oder wie sind Sie damit umgegangen? Haben Sie für Menschen in ähnlichen Situationen Möglichkeiten gefunden, Ihr Team, Ihre Aufgaben und Ihre Zeit besser zu verwalten, damit Sie Spaß an der Arbeit haben? Oder haben Sie einen Weg gefunden, in eine entwicklungsorientiertere Position zurückzukehren? Ich weiß, dass leitende Entwicklerpositionen fast immer ein höheres Gehalt beziehen, aber ich sehe mich an einem Punkt, an dem mir Geld und Beförderungen weniger am Herzen liegen als die Freude an meinem aktuellen Job.

Ich habe dies mit niemandem im Management besprochen, da ich dachte, ich sollte versuchen, mich für mindestens ein Jahr anzupassen.

William Fontaine
quelle
"Ich habe das mit niemandem im Management besprochen". Warum um alles in der Welt nicht? Laufen, nicht gehen, zum Management und erklären. Ein gutes Unternehmen / ein guter Manager versteht und ordnet die Dinge zu Gunsten aller - Ihrer und ihrer. Sie wollen sowieso nicht in einer anderen Firma arbeiten
Mawg

Antworten:

16

Die Antwort, die ich hier gebe, ist meine beste Vermutung, was möglicherweise funktionieren könnte, aber ich habe nicht gesehen, wie es funktioniert, da ich selbst versuche, aus einer ähnlichen Situation herauszukommen, in der Sie sich befinden. Das Ganze ist immer noch eine Lernerfahrung für mich, aber ich sehe einen positiven Trend in meinem Team.

In meiner Firma wurde ich zum Teamleiter befördert (sie nennen es "Designleiter"). Aufgrund des Mangels an Leuten, die das Produkt kennen und über genügend Erfahrung verfügen, habe ich mich freiwillig gemeldet, zwei verschiedene Teams zu leiten. Vor ein paar Monaten hat das Management die Größe dieser beiden Teams verdoppelt, um den Zeitplan zu vereinfachen.

Eine Sache, die ich versucht habe zu tun ...

  1. Machen Sie allen (einschließlich der Geschäftsführung) klar, dass die Position von mir und allen anderen keine dauerhafte Aufgabe ist. Jeder ist herzlich eingeladen, sich an die Tafel zu setzen, sich ein umfassenderes Bild vom Projekt zu machen und an Architektur- / Designentscheidungen teilzunehmen. Ich werde (vorerst) das letzte Wort haben, wenn es eine Meinungsverschiedenheit ohne Lösung gibt, aber bisher ist das nie passiert.
  2. Konzentrieren Sie sich darauf, anderen Menschen zu helfen, sich zu entwickeln und zu wachsen. Ich habe (fast philosophische) Diskussionen mit verschiedenen Entwicklern zu unterschiedlichen Zeiten über Codierung und Design und verschiedene Herangehensweisen an die Dinge geführt. Einige dieser Diskussionen beziehen sich auf die eigentliche Arbeit, andere sind reine Gedankenübungen. Ich hatte einen Mann mit über 20 Jahren Erfahrung, der zu seinem Bücherregal zurückkehrte und sich ein C ++ - Buch holte, weil er sich für ein paar Dinge interessierte, die ich mit Template-Metaprogrammierung gemacht hatte. Diese Diskussionen sind etwas ansteckend und nachdem Sie diese Themen genügend oft angesprochen haben, beginnen die Leute, selbst über diese Dinge nachzudenken.
  3. Delegiere so viel wie möglich auf andere Leute. Obwohl ich viele Dinge überblicke, nehme ich nicht an jeder einzelnen Codeüberprüfung teil. Stattdessen mache ich Code-Reviews für unsere fortgeschrittenen Jungs und ich lasse diese Jungs Code-Reviews für einige der grüneren Leute machen. Ich betrachte Code-Reviews eher als ein Tool zum Wissenstransfer als als "Vergewissern wir uns, dass wir jede Zeile lesen und jeden möglichen Fehler finden".
  4. Sobald die Schnittstellen definiert sind und das grundlegende Design vorliegt, lasse ich auch den neueren Spielern so viel Freiheit wie möglich, um Interna der Klassen zu codieren. Ja, ein Großteil dieses Codes ist alles andere als perfekt, aber er wird getestet und funktioniert. Wenn es eine bestimmte subjektive Grenze in Bezug auf "Codegeruch" überschreitet und sie es nicht überarbeitet haben, würde ich vorschlagen, dass bestimmte Klassen aufgeteilt oder neu angeordnet werden müssen. Es ist manchmal schmerzhaft, aber wenn ich ein paar Tage später zurückkehre und eine Antwort erhalte: "Ich gebe es nur ungern zu, aber dieser Code sieht jetzt so viel besser aus", entsteht ein warmes, verschwommenes Gefühl.
  5. Fordern Sie Leute heraus. Anstatt dem Produkt nur Features zuzuweisen, bitten Sie es, diese Features hinzuzufügen, ohne jedoch die Anzahl der Funktionen / Datenelemente in vorhandenen Klassen zu erhöhen. Wenn Sie etwas Neues einfügen müssen, müssen Sie etwas Bestehendes herausnehmen und sich die Zeit nehmen, um herauszufinden, was es ist. Jeder kennt sich mit Refactoring aus, aber es scheint, als bräuchten die Leute zu Beginn keine zusätzliche Kraft, um diesen Sprung in die Tat umzusetzen. Zumindest ist es mir ein Anliegen, diesen Punkt bei nahezu jeder Codeüberprüfung zu besuchen.
  6. Alles dreht sich um BALANCE. Sie können nicht die einzige Führungskraft im Team sein, die sich um alle anderen kümmert. Sie können nicht die ganze Woche in Besprechungen und Besprechungen verbringen. Sie können nicht erwarten, dass Sie jeden Fehler, den Ihr Team macht, abfangen. Am Ende des Tages müssen Sie die Zeit für sich selbst als Lead zuweisen, aber Sie müssen auch die Zeit für Entwickler zuweisen. Ich würde verrückt werden, wenn ich nicht codieren könnte. Trotz allem anderen stelle ich sicher, dass ich Zeit habe, Code zu schreiben und nicht nur Code, sondern auch einige wirklich, wirklich raffinierte Dinge. Ich habe gerade Vorlagen-Meta-Programmierbücher in die Hände bekommen und angefangen, in Boost zu graben. Leute, die sich das ausgedacht haben, müssen (auf eine gute Weise) verrückt sein. Wenn Ihr Management Sie nervt, warum nicht alles überprüft wird oder warum ein Noob einen anderen Noobs-Code überprüft, Man muss nur das Ganze erklären und wissen, dass das Team einfach nicht genug erfahrene Leute hat und am Ende des Tages "es ist, was es ist". Wenn Ihr Team hochrangige Mitarbeiter hat, ist es an der Zeit, diese zu befähigen und ihnen die Freiheit zu geben, ihre eigenen Entwürfe / Überprüfungen / Hilfeleistungen für andere zu erstellen und sie nicht einfach als Codegeneratoren zu behandeln. Mit der Ermächtigung kommt die Freiheit und die Menschen lieben die Freiheit. Wenn Sie Entwickler haben, die sich nicht für Freiheit / Ermächtigung interessieren, ist das in Ordnung. Jedes Team benötigt weiterhin reine Programmierer. Achten Sie nur darauf, dass Sie das Gleichgewicht anstreben. Es ist an der Zeit, sie zu befähigen und ihnen die Freiheit zu geben, ihre eigenen Entwürfe / Überprüfungen / Hilfeleistungen zu erbringen, und sie nicht einfach als Codegeneratoren zu behandeln. Mit der Ermächtigung kommt die Freiheit und die Menschen lieben die Freiheit. Wenn Sie Entwickler haben, die sich nicht für Freiheit / Ermächtigung interessieren, ist das in Ordnung. Jedes Team benötigt weiterhin reine Programmierer. Achten Sie nur darauf, dass Sie das Gleichgewicht anstreben. Es ist an der Zeit, sie zu befähigen und ihnen die Freiheit zu geben, ihre eigenen Entwürfe / Überprüfungen / Hilfeleistungen für andere zu erstellen, und sie nicht einfach als Codegeneratoren zu behandeln. Mit der Ermächtigung kommt die Freiheit und die Menschen lieben die Freiheit. Wenn Sie Entwickler haben, die sich nicht für Freiheit / Ermächtigung interessieren, ist das in Ordnung. Jedes Team benötigt weiterhin reine Programmierer. Achten Sie nur darauf, dass Sie das Gleichgewicht anstreben.
  7. Ihre Zeit ist wertvoll. Bitten Sie das Team daher, Ihnen alle nicht zeitkritischen Fragen per E-Mail zu senden, die erst nach einigen Stunden beantwortet werden können. Wenn die Frage gestellt wird, sollte das gesamte Team darauf kopiert werden. Wenn Sie eine Pause in Ihrem Tag haben, können Sie sich das Problem ansehen und der Person helfen. Oft hat Sie jedoch bereits eine andere Person auf die Antwort geschlagen, und Sie müssen nichts tun. Natürlich mache ich mich immer noch verfügbar und mache diese Tatsache deutlich, weil ich glaube, dass es eines meiner Ziele ist, dafür zu sorgen, dass niemand im Team für längere Zeit stecken bleibt, ohne Fortschritte zu machen.
  8. Stellen Sie sicher, dass Ihr Team so viele Tools wie möglich verwendet, um die Kommunikation effektiver zu gestalten. Zum Beispiel haben wir eine Wiki-Site und jedes Mal, wenn dasselbe Problem mehrmals auftritt, frage ich den letzten, dem ich beim Erstellen einer Wiki-Seite geholfen habe.
DXM
quelle
1
+1 ausgezeichnete Antwort, viele praktische Ratschläge. Delegation und Balancing sind äußerst wichtige Fähigkeiten, die ständig weiterentwickelt und verfeinert werden müssen.
Péter Török
Exzellente Beratung. +1 speziell für # 4; Ich habe Leute gesehen, die zu viel Zeit verschwendet haben, weil sie nicht so gedacht haben.
DarenW
Ich bin fasziniert von Ihrer Idee, Features hinzuzufügen, ohne neue Klassenmitglieder hinzuzufügen. Finden Sie, dass diese Strategie gut funktioniert?
Maxpm 30.01.12
@Maxpm: Außerhalb der Arbeit arbeite ich gerne an Autos. Ich habe auch versucht, mich mit Elektronik und Hardware zu beschäftigen. Ich bringe viel mit nach Hause. Meine Herangehensweise an den Unterricht ist die Herangehensweise meiner Frau: "Wenn Sie etwas einbringen, müssen Sie etwas herausnehmen". Ich sage nicht, niemals eine neue Variable oder Methode hinzuzufügen, aber es gibt einen bestimmten Schwellenwert, über den Sie nicht einfach hinzufügen können. Wenn Ihr Code groß wird, können Sie wahrscheinlich einen großen Teil in eine oder mehrere eigenständige Einheiten aufteilen. Dann haben Sie anstelle eines großen Monolithen Bausteine, die Sie nach Bedarf verschieben und neu anordnen können
DXM
@Maxpm: vergessen hinzuzufügen ... Ja, diese Strategie funktioniert sehr gut und bildet den Kern der SOLID-Prinzipien, die ich jedem empfehlen würde, sich mit ihnen vertraut zu machen. Es ist schon eine Weile her, dass ich mich in meinem Code mit Fäulnis befassen musste.
DXM
4

Ich habe das mit niemandem im Management besprochen

Ich denke, Sie wissen, dass dies wahrscheinlich helfen würde. Die Kommunikation Ihres Unbehagens mit einer Position ist nicht unbedingt eine konkrete Angabe. Auf diese Weise erfährt das Management, welche Karten es besitzt, und wenn es sich um ein gutes Management handelt, wird es versuchen, einen Weg zu finden, um Ihr bestes Potenzial auszuschöpfen. Geben Sie sich nicht mit weniger zufrieden.

Ben Lakey
quelle
3

Wenn Ihr Projekt beendet ist, suchen Sie nach einer programmiererorientierteren Position in Ihrem Unternehmen oder außerhalb.

Besprechen Sie mit dem Management, dass Sie weniger Management und mehr technische "praktische" Fähigkeiten wünschen.

Es hört sich so an, als wären Sie in einer PM-Position im Vergleich zu einem leitenden Entwickler. Ich würde meinen, ein leitender Entwickler würde mehr programmieren.

Jon Raynor
quelle
Ja, das würde ich auch. Leider sind einige Projekte so, meine sind einfach nicht so. Es gibt genug technisches Material, um das in 95% der Fälle zu schaffen. Ich werde versuchen, dies in Zukunft zu ändern.
William Fontaine
3

Arbeitgeberperspektive :

Wenn dir der aktuelle Job gefällt und du dort eine gute Vergangenheit hast, würde ich dich gerne auf dem Laufenden halten und einen Platz für dich finden, damit ich mich nicht zu sehr darum kümmere, mit ihnen zu reden.

Ein großartiger Entwickler ist eine wertvolle Sache, aber Sie müssen ihn verkaufen, damit Sie mehr für das Programmieren und vielleicht für das Design tun als für die Jonglage.

Geben Sie ihnen einen Weg, wie Sie sich zurücklehnen können, indem Sie einen Nachfolgeplan aufstellen. Grundsätzlich finden Sie jemanden im aktuellen Team, der daran interessiert ist, die Dinge zu tun, die Ihnen Kopfschmerzen bereiten. In den nächsten 6 bis 9 Monaten trainieren Sie ihn und geben ihm nacheinander Ihre Aufgaben.

Wählen Sie zuerst etwas Leichtes aus, wie beispielsweise wöchentliche Statusaktualisierungen:

  • Setzen Sie sie neben sich, wenn Sie eine Statusaktualisierung durchführen.
  • Setzen Sie sich neben sie, während sie die nächste Statusaktualisierung durchführen.
  • Lassen Sie sie es selbst machen und überprüfen Sie es, bevor es für das Finale herauskommt.

Dann geben Sie ihnen nach und nach die zusätzlichen Aufgaben, bis Sie die Mehrheit Ihrer zusätzlichen Aufgaben übergeben haben.

Der Grund, warum diese weniger begehrenswerten Jobs mehr bezahlt werden, liegt darin, dass sie, wenn sie nicht von niemandem erledigt würden, nicht so schnell bezahlt werden, weil sie ein höheres Maß an Qualifikation erfordern ... Angebot und Nachfrage.

Damit du trotzdem mehr bezahlst ... Wenn ich es wäre, würde ich gerne hören, dass du hier bleibst, du hilfst dieser Person bei Bedarf, bist ein Mentor für die neueren Leute, bist der Designer / das Schlüsselgehirn / Domain-Experte statt Projektleiter. Grundsätzlich ist dies eine wertvolle Position. Jemand anderes kann herumlaufen und jonglieren (für mehr Geld natürlich).

Ich denke, wenn Sie Ihrem Arbeitgeber einen 6-9-Monatsplan vorlegen würden, der besagt

  • Eine gute Erklärung dafür, warum es Ihrer Meinung nach rundherum besser ist, dass Sie sich wieder darauf konzentrieren, die anderen Verantwortlichkeiten zu kontrollieren.
  • Wen man unterteilen kann ... oder muss man jemanden finden ... das wird meiner Meinung nach eine Schlüsselentscheidung sein.
  • Rach Monat für 6 Monate, welche Verantwortung Sie an die neue Person übergeben würden
  • Welche Verantwortung würdest du übernehmen (wie Design, vielleicht in Code Reviews etc.)?
  • Eine Vorstellung von der Senkung der Löhne, die Sie bereit wären (irgendwo zwischen ursprünglich und jetzt), lassen Sie sie dies jedoch zur Sprache bringen.

Wenn Sie das als Plan für mich als Arbeitgeber zusammenstellen, würde ich gerne mit Ihnen zusammenarbeiten, um dies zu erreichen.

Viel Glück.

Robin Vessey
quelle
1

Ich war genau in deiner Situation. Die Antwort hängt von der Beziehung ab, die Sie zu Ihrem Vorgesetzten haben. In meinem Fall war es ein sehr guter Fall, also nahm ich ihn eines Tages beiseite und sagte, dass ich die Arbeit nicht genieße, mich zu gestresst fühle und wieder zur Programmierung übergehen möchte. Es war viel glücklicher, das zu hören, als mich hereinkommen zu lassen und aufzuhören. Also haben wir einen Plan ausgearbeitet, den jemand anderes als Teamleiter übernehmen soll, und ich soll wieder zum Programmieren zurückkehren.

Drekka
quelle
0

2 Fragen, die aus Ihrem Beitrag nicht ersichtlich sind:

  • Arbeiten Sie in einem Unternehmen, das mit der von Ihnen geschriebenen Software (wie Google, Microsoft oder Fog Creek) direkt Geld verdient, oder arbeiten Sie in einer untergeordneten Funktion (wie bei einer Bank oder einem Lebensmittelunternehmen)?

  • Ist der CEO ein Technologe oder jemand, der über Geschäftsrollen aufgewachsen ist?

Machen Sie sich keine Sorgen, wenn Sie eine Softwarefirma mit einem Technologen-CEO sind. Die Unternehmensführung wird wissen, wer die wertvollen Entwickler sind, und alles tun, um sie zu halten. Wenn die Execs alle Leute sind, die ihre Streifen "Verwalten von Menschen" oder "Verwalten von Budgets" haben, seien Sie besorgt. Seien Sie doppelt besorgt, wenn Sie in einer internen IT-Abteilung arbeiten. Wenn dies der Fall ist, müssen Sie akzeptieren, dass eine gute Work-Life-Balance die Belohnung für den Aufenthalt eines Entwicklers ist.

Ein letzter Punkt - mach was dich glücklich macht. Die Ratschläge aller anderen zu solchen Berufswahlen beziehen sich auf das, was sie glücklich machen würde - und auf Sie.

MathAttack
quelle