Was ist die Verantwortung des Hauptentwicklers

Dieser großartige Artikel von John Olspau trägt den Titel "Being a Lead Engineer". Das erste Mal, dass ich es vor ungefähr vier Jahren gelesen habe, als ich gerade zu meinem jetzigen Job gewechselt bin, hat es die Ideen über diesen Bereich meiner Karriere wirklich beeinflusst.

Nach dem erneuten Lesen scheint eines dort wirklich interessant zu sein: Einfühlungsvermögen und die Unterstützung des Teams sind ein wichtiger Teil der Arbeit des Senioren. Was natürlich wahr ist!

Aber jetzt sehe ich, dass die meisten oder alle führenden Ingenieure, die ich kenne, neben ihrer persönlichen Programmierarbeit auch anderen Mitarbeitern erhebliche Hilfe leisten. Jetzt scheint es mir, dass meine Kollegen und ich nicht so sehr mit dem Problem „Was? Müssen Sie mit Menschen sprechen? UNGLAUBLICH “, wie viel mit einem anderen Problem:„ Wie kann man all diese Führungsarbeit mit Ihrem individuellen Input / Ihrer Programmierung in Einklang bringen? Wie viel und welche Art von Arbeit soll ich tun? “ Anstatt über die Zeichen des Seigneurs aus dem Olspau-Artikel zu sprechen (dem ich voll und ganz zustimme), möchte ich daher über die Arbeit sprechen, die wir leisten .

Worum geht es in diesem Artikel?


"Was ein leitender Ingenieur tut" ist ein großes Thema, aber hier ist nur ein kleiner Artikel, daher sollten Sie Folgendes beachten:

  • Es gibt nur eine mögliche Beschreibung dessen, was ein führender Ingenieur tun kann. Es gibt viele Arbeitsansätze, und dies sollte kein Dogma sein.
  • Ich habe hauptsächlich nur in einer Firma gearbeitet, daher sind meine Erfahrungen und Ansichten offensichtlich ziemlich begrenzt.
  • Offensichtlich gibt es viele Ebenen von "Senior". Es geht um die P3 / P4-Ebene in der Mozilla-Hierarchie (Senior Engineer / Staff Engineer), vielleicht etwas näher an der "Staff" -Ebene.

Was sind die Verantwortlichkeiten


Dies sind Dinge, die ich mehr als die Arbeit eines leitenden Ingenieurs und weniger als die Arbeit eines Managers sehe (obwohl Manager definitiv einige der oben genannten Aufgaben ausführen, insbesondere das Erstellen neuer Projekte und das Verknüpfen von Projekten mit Geschäftsprioritäten).

Fast alle diese Arbeiten sind im Wesentlichen technisch : Jemandem bei der Bewältigung eines komplexen Projekts zu helfen, ist eindeutig eine menschliche Interaktion, aber die Probleme, mit denen wir zusammenarbeiten, sind normalerweise technisch! („Wenn wir das Design vereinfachen, können wir vielleicht schneller zurechtkommen!“).

  • Schreiben Sie Code (offensichtlich).
  • Machen Sie eine Codeüberprüfung (offensichtlich).
  • Schreiben und überprüfen Sie die Konstruktionsdokumentation . Wie bei anderen Bewertungen kann ein Look von Drittanbietern dazu beitragen, das Design zu verbessern.
  • Helfen Sie Kollegen, wenn sie nicht weiterkommen . Manchmal bleiben Leute bei einem Projekt hängen und es ist wichtig, ihnen zu helfen! Ich denke darüber nach, nicht so sehr über "Fallschirmspringen vom Himmel und Vermittlung Ihres magischen Wissens an Menschen", sondern darüber, "zusammenzuarbeiten, um das Problem zu verstehen und zu sehen, ob zwei Gehirne schneller als eines zurechtkommen" :). Es bedeutet auch, zusammenzuarbeiten und kein Problem anstelle einer anderen Person zu lösen.
  • Halten Sie Ihre Kollegen hoch . Für verschiedene Personen hat „Level“ unterschiedliche Bedeutungen (für mein Team bedeutet dies Zuverlässigkeit / Sicherheit / Komfort des Produkts). Wenn jemand eine Entscheidung trifft, die mir nicht gefällt, bedeutet dies, dass ich entweder etwas weiß, das er nicht weiß, oder dass er etwas weiß, das ich nicht weiß! Daher müssen Sie nicht sagen: "Hey, Sie haben es falsch gemacht, Sie müssen stattdessen X machen", aber es ist besser, ihnen nur zusätzliche Informationen zu geben, die sie nicht hatten, und oft löst dies das Problem. Und ziemlich oft stellt sich heraus, dass mir etwas fehlte, und tatsächlich war ihre Lösung ziemlich vernünftig! In der Vergangenheit habe ich manchmal gesehen, wie führende Ingenieure versuchten, Qualitätsstandards aufrechtzuerhalten, indem sie ihre Meinungen lauter wiederholten, weil sie der Meinung waren, dass ihre Meinung richtig ist. Persönlich fand ich einen solchen Ansatz nicht nützlich.
  • Erstellen Sie neue Projekte . Das Softwareentwicklungsteam ist kein Nullsummenplatz! Die besten Ingenieure, die ich kenne, überlassen die interessanteste Arbeit nicht sich selbst, sie schaffen neue interessante / wichtige Projekte und schaffen einen Raum für andere, um diese Arbeit zu erledigen. Zum Beispiel hat jemand aus meinem Team begonnen, unser Bereitstellungssystem neu zu schreiben. Das Projekt erwies sich als sehr erfolgreich und jetzt arbeitet das gesamte Team an neuen Funktionen, die einfacher zu implementieren sind!
  • Planen Sie die Arbeit Ihrer Projekte . Es geht darum, eine Roadmap für die Projekte, an denen Sie arbeiten, aufzuschreiben / zu melden und sicherzustellen, dass die Leute den Plan verstehen.
  • Projektrisiken im Voraus melden . Es ist sehr wichtig zu erkennen, wenn etwas nicht sehr gut läuft, andere Ingenieure / Manager darüber zu informieren und zu entscheiden, was zu tun ist.
  • Erfolg melden!
  • Projekte von Drittanbietern durchführen, die dem Team / Unternehmen zugute kommen . Ich sehe, dass viele Senioren manchmal kleine, aber wichtige Projekte durchführen (z. B. Entwicklungstools erstellen / Richtlinien festlegen), die letztendlich vielen Menschen helfen, ihre Arbeit viel besser zu machen.
  • Seien Sie sich bewusst, wie Projekte mit Geschäftsprioritäten zusammenhängen.
  • Entscheiden Sie, wann das Projekt gestoppt werden soll . Es stellt sich heraus, dass es überraschend schwer zu verstehen ist, wann Sie die Arbeit an etwas stoppen / nicht starten müssen. :) :)

Ich habe an erster Stelle „Code schreiben“ gesetzt, weil diese Aufgabe in Wirklichkeit leicht in der Prioritätenliste nach unten rutscht. :) :)

Die Liste enthält keinen Punkt "Schätzungen / Prognosen erstellen". Ich bin hier noch nicht sehr gut, aber ich denke, dass es sich eines Tages lohnt, mehr Zeit damit zu verbringen.

Die Liste scheint groß zu sein. Es scheint, dass wenn Sie all diese Dinge tun, sie alle Ihre intellektuellen Ressourcen absorbieren. Ich denke, dass es im Allgemeinen sinnvoll ist, einen Teil zu isolieren und zu entscheiden: „Im Moment werde ich mich auf X, Y und Z konzentrieren. Ich denke, mein Gehirn wird explodieren, wenn ich versuche, B und C zu machen.“

Was ist keine Pflicht


Das ist etwas komplizierter. Ich sage nicht, dass Sie mit solchen Dingen nicht kategorisch umgehen können. Die meisten der führenden Ingenieure, die ich kenne, verbringen viel Zeit damit, über diese Probleme nachzudenken, und arbeiten ein wenig in diese Richtung.

Es scheint mir jedoch sinnvoll, eine bestimmte Grenze zu ziehen, da manche Menschen ein hohes Verantwortungsbewusstsein für das Team und das Unternehmen haben - und bereit sind, alles zu übernehmen, wodurch sie mit Arbeit überlastet werden und keinen technischen Beitrag leisten können, der eigentlich ihr ist Hauptgeschäft. Die Festlegung bestimmter Grenzen hilft daher zu bestimmen, in welchen Fragen es sinnvoll ist, um Hilfe zu bitten, wenn die Situation turbulent wird. Ihre tatsächlichen Grenzen liegen bei Ihnen / Ihrem Team. :) :)

Die meisten der folgenden sind Managementarbeit. Haftungsausschluss: Manager tun viel mehr als hier aufgeführt (z. B. „Neue Projekte erstellen“), und in einigen Unternehmen sind einige der oben genannten Aufgaben möglicherweise die Arbeit eines leitenden Ingenieurs (z. B. Sprint-Management).

  • Um sicherzustellen, dass jeder Mitarbeiter nach seinen Verdiensten für seine Arbeit belohnt wird.
  • Stellen Sie sicher, dass die Arbeit fair verteilt ist.
  • Stellen Sie sicher, dass die Leute gut zusammenarbeiten.
  • Stellen Sie den Zusammenhalt des Teams sicher.
  • Sprechen Sie privat mit jedem Mitarbeiter.
  • Trainieren Sie neue Manager, helfen Sie ihnen zu verstehen, was von ihnen erwartet wird (obwohl ich denke, dass führende Programmierer oft wirklich zu einer solchen Aktivität kommen?).
  • Projekte von Drittanbietern verwalten (bei meiner Arbeit ist dies die Aufgabe eines jeden Ingenieurs, der dieses Projekt leitet).
  • Seien Sie ein Produktmanager.
  • Sprint-Management-Sprint leiten / die Arbeitsphasen für jeden Sprint festlegen / wöchentliche Meetings durchführen.

Es ist nützlich, Grenzen explizit festzulegen


Ich bin kürzlich auf eine interessante Situation gestoßen, als ich meine Verantwortlichkeiten mit dem Manager besprochen habe - und wir haben festgestellt, dass wir sie sehr unterschiedlich gesehen haben! Wir haben die Situation geklärt und jetzt ist alles in Ordnung, aber mir wurde klar, dass es sehr wichtig ist, sich auf die Erwartungen zu einigen. :) :)

Als ich als Ingenieur anfing, war die Arbeit recht einfach: Ich schrieb Code, versuchte, Projekte zu entwickeln, die Sinn machten, und alles war perfekt. Mein Manager hatte immer eine klare Vorstellung von meiner Arbeit, nichts zu kompliziert. Jetzt hat sich die Situation geändert! Deshalb glaube ich jetzt, dass ich die Arbeit bestimmen muss, die:

  • Ich kann / langfristig fit für mich tun.
  • Ich möchte etwas tun, was im Allgemeinen Spaß macht und mit meinen persönlichen Zielen übereinstimmt.
  • Von Wert für das Team / die Organisation.

Der genaue Wortlaut ist für verschiedene Personen unterschiedlich (nicht jeder hat die gleichen Interessen und Stärken, zum Beispiel bin ich nicht so gut in der Codeüberprüfung!). Ich denke aus diesem Grund ist es noch wichtiger, dieses Thema zu diskutieren und sich auf Erwartungen zu einigen.

Geben Sie sich nicht mit Arbeit zufrieden, die Sie nicht tun können / wollen


Ich denke, es ist sehr wichtig, die Arbeit aufzugeben, die ich nicht tun kann oder die auf lange Sicht keine Freude macht! Es scheint verlockend, viel Arbeit zu übernehmen, auch wenn Sie es nicht wirklich mögen ("Oh, das ist gut für das Team!", "Nun, jemand muss es tun!"). Natürlich übernehme ich manchmal Aufgaben nur, weil sie erledigt werden müssen, aber ich denke, dass es für die Gesundheit des Teams wirklich wichtig ist, dass die Mitarbeiter das tun, was sie allgemein mögen und was sie langfristig tun können.

Daher werde ich kleine Aufgaben übernehmen, die nur erledigt werden müssen, aber es ist wichtig, nicht gleichzeitig zu sagen: "Oh, natürlich werde ich die meiste Zeit damit verbringen, was ich schlecht mache und was ich nicht mag, es gibt keine Probleme." :) Und wenn „jemand“ dies tun muss, bedeutet dies möglicherweise nur, dass wir jemanden einstellen / ausbilden müssen, der neu ist, um die Lücke zu schließen. :) :)

Ich muss noch viel lernen!


Ich habe zwar das Gefühl, dass ich allmählich verstehe, was ein „leitender Ingenieur“ ist (bereits 7 Jahre in meiner Karriere), aber ich habe immer noch das Gefühl, dass ich noch viel mehr darüber lernen muss, und ich wäre interessiert zu hören, wie andere Menschen Grenzen definieren deine Arbeit!

Source: https://habr.com/ru/post/de427223/


All Articles