Mehr als ein leitender Software-Ingenieur

Feb 23 2023
Was bedeutet das?
Über einen leitenden Software-Ingenieur hinaus geht die neue Diskussion, wenn wir über die Karriereentwicklung eines Software-Ingenieurs sprechen, aber was bedeutet das? Die Rolle kann je nach Unternehmensgröße oder -stil eine unterschiedliche Gruppe von Aktivitäten ausführen, der wichtigste Beitrag ist jedoch die Auswirkung auf das Unternehmen. Bevor ich mit meinen Gedanken beginne, habe ich nicht die Absicht, meine folgenden Worte in Regeln oder Richtlinien umzuwandeln.
Bild erhalten von https://www.tecmundo.com.br/

Über einen leitenden Software-Ingenieur hinaus geht die neue Diskussion, wenn wir über die Karriereentwicklung eines Software-Ingenieurs sprechen, aber was bedeutet das?

Die Rolle kann je nach Unternehmensgröße oder -stil eine unterschiedliche Gruppe von Aktivitäten ausführen, der wichtigste Beitrag ist jedoch die Auswirkung auf das Unternehmen.

Bevor ich mit meinen Gedanken beginne, habe ich nicht die Absicht, meine folgenden Worte in Regeln oder Richtlinien umzuwandeln. Ich würde einfach gerne mehr darüber nachdenken.

Am Anfang

Seit vielen Jahren bereite ich mich darauf vor, meine Fähigkeiten zu verbessern, und nachdem ich viele Bücher und Artikel gelesen und Erfahrungen mit Kollegen und Führungskräften ausgetauscht habe, ist mir diese Frage aufgrund der Komplexität der Antwort immer noch offen. Es ist nicht einfach zu verstehen, was Sie tun müssen, um sich für eine Position wie „Principal/Staff Software Engineer“ oder andere häufig auf LinkedIn zu findende Positionsbezeichnungen anzumelden.

Kein Wunder, dass das Bild, das ich für das Banner ausgewählt habe, ein Rückansichtsbild eines Autos ist, und es ist wichtig, es zu erklären. Was sind Ihre Referenzen in Ihrer Karriere? Wo haben Sie gearbeitet? Welchen Herausforderungen waren Sie ausgesetzt? Wie haben Sie sich gefühlt, als Ihnen klar wurde, dass die Herausforderung Sie aus Ihrer Komfortzone gebracht hat?

Die Rückansicht des Autos zeigt uns, wohin Sie gegangen sind, aber wenn wir nur zurückblicken, vergessen wir, wohin wir wollen. Die Referenzen sind wichtig, um das nächste Level zu verbessern, aber behalten Sie sie nicht bei. Konzentrieren Sie sich weiterhin auf das Ziel. Vorausschauen.

Ich weiß, das ist philosophisch, aber wenn Sie auf Ihre Karriere zurückblicken, verfügen Sie wahrscheinlich über gute Referenzen im Bereich Hard-Skills. Wenn Sie etwa in den 2000er Jahren mit der Arbeit begonnen haben, haben wir mit Java, C# und .Net programmiert. Stellen Sie Ihre Software wahrscheinlich in Tomcat, JBoss, WebLogic oder IIS bereit.

Viele dieser Technologien haben Ihre Hard Skills geprägt und bringen Sie hierher, aber wenn Sie sich nicht anpassen und neue Technologien erlernen würden, würden Sie heute nicht als Softwareentwickler arbeiten.

Sicherlich haben wir viele Geschichten über Rechenzentren und Mitternachtsbereitstellungen (und Rollbacks). Wenn Sie (wie ich) in Java programmiert haben, ändern Sie unbedingt eine Eigenschaftsdatei in der Produktion und vergessen Sie die Version in Ihrem CVS (vielleicht SVN für jüngere), und wenn Sie Ihre Karriere mit Git begonnen haben, haben Sie noch viel Zeit vor sich Deine Karriere).

Die Anhäufung dieser Gefühle festigt Ihre harten Fähigkeiten und bringt Sie zu einem leitenden Softwareentwickler.

Um auf die nächste Ebene zu gelangen, müssen wir diese Erfahrungen gemacht haben, aber die Übernahme einer Position als leitender Software-Ingenieur ist dasselbe, um ein Plateau in Ihrer Karriere zu erreichen.

Wenn Sie mindestens zehn Jahre mit Software gearbeitet haben, sollten Sie diese Gefühle manchmal gespürt haben.

Zu verstehen, wann Sie loslassen und Ihren Geist öffnen müssen, um sich einer neuen Herausforderung (die nicht mit einem neuen Job zusammenhängt) anzupassen, ist ein guter Parameter für Ihre Karriere. Wenn Sie anhand von Fakten und Daten zu diesem Schluss kommen, schalten Sie eine wichtige Fähigkeit frei, die Sie auf das nächste Level bringt. Sie haben gelernt, bekannte Techniken loszulassen und zu verstehen, dass das Problem neu ist und sich etwas ändern muss.

Aber wenn Sie immer noch die Rückansicht des Autos betrachten, bei welchen Herausforderungen haben Sie Ihrem Team geholfen, die nichts mit der Software zu tun haben? Wann versuchen Sie, ein nicht technisches Problem zu lösen? Hatten Sie Gelegenheit dazu? Hast du es gefunden?

… Leere deinen Geist, um formlos zu sein, formlos wie Wasser. (Bruce Lee)

Für Maschinen wird keine Software geliefert. Software nutzt Maschinen. Software wird für Menschen geschaffen.

Hier ist es der schwierigste Teil, weil so viele Leute in den Software-Lebenszyklus involviert sind. In einigen populären Büchern haben wir Fachbegriffe gefunden, die diese Personen als Stakeholder bezeichnen.

Der Fachmann, der näher an den Menschen ist und die Erwartungen von Kunden, Ingenieuren und Investoren (Stakeholdern) verwaltet, wurde zum Projektmanager ernannt (denken Sie daran, dass wir weiterhin auf die Rückansicht des Autos schauen).

Der Projektmanager ist ein Fachmann mit umfassenden Kenntnissen in den Techniken, die den Beginn, die Ausführung und die Lieferung des Projekts ermöglichen. Wie viele Gantt-Diagramme sehen Sie? Wie viele Schätzungen zum Fälligkeitstermin Ihrer Aufgabe haben Sie erhalten?

Auch die Art und Weise, wie Software bereitgestellt wird, ändert sich mit der Zeit. Wir haben begonnen, das Wasserfallmodell zu verwenden, und seit kurzem verwenden wir Agile und verbessern weiterhin die Art und Weise, wie Software bereitgestellt wird. Die Software-Community (jeder, der mit Software arbeitet) hat viel darüber diskutiert, wie Software besser bereitgestellt werden kann.

Die Bereitstellung von Software entwickelt sich weiter und auch die Art und Weise, wie wir die Beziehung zwischen Software und Unternehmen verstehen, verändert sich. Heute bezeichnen wir Software als Produkt (oder digitales Produkt. Wir werden viele Namen finden).

Achten Sie auf diese Veränderungen bei der Verwaltung von Projekten zur Bereitstellung von Software? Was hast du gelernt?

Das Wichtigste, worauf Sie in dieser Zeitleiste achten sollten, ist die Reise . Es ist nicht möglich, über die Qualifikation eines leitenden Softwareentwicklers hinauszugehen, wenn nicht jede Änderung in diesem Zeitplan Ihre Karriere beeinflusst und Ihre Fähigkeiten nicht verbessert hat.

Zeit ist eine wichtige Variable, bietet aber allein nichts Besonderes. Viele Jahre Ihrer Karriere, in denen Sie diese Reise nicht genutzt haben, bieten Ihnen nicht die nötige Kompetenz, um voranzukommen. Wir müssen Ihre Karriere nutzen.

Wie oft haben Sie tatsächlich über eine Rückmeldung nachgedacht? Wie viel Wissen haben Sie von den Menschen um Sie herum gelernt? Was waren die wahren Gründe für einen Jobwechsel?

Nach einiger Zeit….

Im Laufe der Jahre habe ich beobachtet, dass Software-Ingenieure aus einem ganz anderen Grund, der hier nicht im Mittelpunkt steht, Angst davor haben, ihre Karriere voranzutreiben, aber dies führte dazu, dass unreife (professionelle) Software-Ingenieure schnell befördert wurden, um einer Verknappung des Marktes entgegenzuwirken (Ein weiterer Punkt, den wir hier nicht gerne erforschen und dabei den Fokus verlieren).

Ich möchte nicht sagen, dass wir über zehn, fünfzehn oder zwanzig Jahre Erfahrung verfügen müssen, um uns über die Position eines leitenden Softwareentwicklers hinaus anzumelden. Aber es gibt zwei Variablen, die nicht alleine funktionieren, und diese Variablen sind Zeit und Erfahrung .

Um in kurzer Zeit schnell reifer zu werden, müssen Sie sich vielen Herausforderungen stellen, die Sie mit Sicherheit in einen Burnout stürzen werden. Wenn Sie hingegen eine lange Karriere hinter sich haben und sich keiner Herausforderung gestellt haben, wie ich bereits sagte, hat die Zeit allein nichts Besonderes.

Die Balance zwischen Zeit und Erfahrung liegt in der direkten Verantwortung des Fachmanns. Die Verwaltung Ihrer Karriere liegt in Ihrer Verantwortung . Sie müssen einen Plan erstellen, um dorthin zu gelangen, wo Sie möchten.

Nutzen Sie alle Chancen, die sich Ihnen in Ihrer Karriere bieten, und fordern Sie sich innerhalb Ihrer Grenzen heraus. Selbsterkenntnis ist eine Fähigkeit, die wir Tag für Tag weiterentwickeln müssen. Es gibt keine korrekte Uhrzeit. Schritt für Schritt werden wir verstehen, dass Ihnen die Herausforderung in der Vergangenheit unangenehm war, jetzt ist nur noch ein normaler Arbeitstag mehr. Das ist großartig!

Nach diesen Gedanken wiederhole ich noch einmal: Genieße die Reise!

Hat Ihnen die Reise gefallen?

Bisher denken wir über die Zeit und Erfahrungen nach. Wir redeten viel über die Zeit, gingen aber noch nicht auf die Erlebnisse ein. Welche Erfahrungen lassen mich vorankommen?

Ich hoffe, ich habe deutlich gemacht, dass die kontinuierliche Erforschung von Hard Skills von entscheidender Bedeutung ist, um die technische Analyse robust und modern zu gestalten.

Aber die Herausforderung besteht darin, starke technische Fähigkeiten aufzubauen, um die Roadmap der Organisation zu beeinflussen. Wir müssen harte Fähigkeiten mit dem Geschäft verbinden. Dafür müssen wir unsere Vision verstärken und uns mit den richtigen Möglichkeiten zur Unterstützung des Unternehmens verbinden.

Obwohl sich diese Gelegenheit nicht bietet, ist es wichtig, die neue Ära der Softwareprojekte rund um das digitale Produkt , das Management von Arbeitswissen und, was meiner Meinung nach am wichtigsten ist, die Priorisierung besser zu verstehen .

Jedes dieser Merkmale erfordert eine spezifische Untersuchung, aber der wichtigste Punkt, den ich hervorheben möchte, ist:

Wir müssen die Kultur aktualisieren und verstehen, dass der frühere Prozess zur Softwareverwaltung heute nicht mehr derselbe ist. Aber mit den altmodischen Techniken, die wir zuvor gelernt haben, werden wir unsere Argumente durch die Bereitstellung von Fakten und Daten untermauern, um unseren Vorschlag zu untermauern.

Wissen geht nie verloren und entwickelt sich ständig weiter.

Wenn man mehr über die Parallelen zwischen Alt und Neu nachdenkt, ist die Auseinandersetzung mit dem Wort Technologie ein wichtiger Punkt.

Technologie ist kein Synonym für jung. Die wichtigste von Menschen entwickelte Technologie ist meiner Meinung nach das Schreiben. Ohne die Schrift wäre es für die Menschheit nicht möglich, hierher zu gelangen.

Aber das Schreiben hat sich weiterentwickelt und heute schreibt der Mensch nicht mehr in den Fels, um Informationen weiterzugeben.

Wissen geht nie verloren und entwickelt sich ständig weiter.

Ich denke, um eine geschäftliche Herausforderung mit Technologie zu lösen, müssen wir unsere Toolbox öffnen und prüfen, ob das Tool, das wir haben (Stack), das Problem löst oder ob wir mit Technologie ein weiteres Problem schaffen.

Seien Sie pragmatisch und lassen Sie sich nicht nur durch zu neue Frameworks oder Stacks beeinflussen. Verbinden Sie stets geschäftliche Herausforderungen und passen Sie die Technologie an.

Wenn Ihnen die Reise gefallen hat, wir einige Fehler gemacht haben oder an einigen Projekten arbeiten, haben wir schwächere Auswirkungen auf diese Art von Entscheidung.

Wenn das Ziel Ihres Unternehmens nicht darin besteht, die Technologie als Produkt für Ihre Kunden anzubieten, wird die richtige Abstimmung zu erfreulichen Ergebnissen führen.

Bevor Sie ein Abzeichen erhalten, müssen wir an einem Wettbewerb teilnehmen. Die Bedeutung des Wettbewerbs hat hier nichts mit einer Abwertung zu tun, aber wir müssen verstehen, dass wir uns, um einen Wettbewerb zu gewinnen, darauf vorbereiten müssen, unser Wissen einer Validierung zu unterziehen. Denken Sie daran, wir sprechen über Ihre Konkurrenz und nicht zwischen (direkten) Menschen.

Niemand wird eine Medaille erhalten, ohne sie zu erobern.

Bereiten Sie sich also darauf vor, etwas zu haben, bevor Sie es haben. Wenn Sie vor der Umsetzung Erwartungen an Rollen haben, die über die Position eines leitenden Software-Ingenieurs hinausgehen, ist die Wahrscheinlichkeit groß, dass sie entmutigt werden. Denken Sie daran, dass wir Ihr Wissen validieren müssen.

Was muss man in der Rolle neben einem leitenden Software-Ingenieur tun?

Sicherlich muss diese Rolle Auswirkungen auf das Unternehmen haben . Ich weiß, es ist zu abstrakt. Mein Mantra lautet: Keep it simple!

Wir können das Geschäft beeinflussen, indem wir einfache Aufgaben in unserer Routine erledigen. Beeinflussen Sie das Team, alle Aufgaben vor Beginn zu verfeinern, und zeigen Sie uns, wann sie diese aufteilen müssen.

Zeigen Sie dem Team, dass Ihre Hauptaufgabe darin besteht, das Geschäft voranzutreiben, und dass sich die grundlegenden Verantwortlichkeiten auf eine gute Testabdeckung, eine gute Codeüberprüfung, die Gesunderhaltung der Codebasis und das Zeigen, dass das kurze Refactoring dazu gehört, konzentrieren müssen die Aufgaben.

Erklären Sie, wie wichtig es ist, Beobachtbarkeitsmetriken zu erstellen, um das Verhalten Ihres Produkts in der realen Welt genau zu verstehen.

Beginnen Sie mit den einfachen Dingen, um diese Aktivitäten in die Routine eines beliebigen Teams zu integrieren. Wenn Sie diese Beziehung zum Team aufbauen, ermöglichen Sie sich, voranzukommen.

Beeinflussen Sie anschließend die anderen Führungskräfte und Teams, um dieses Verhalten zu skalieren. Wir beginnen, Einfluss auf die Organisation zu nehmen.

Ich denke immer, dass Software-Engineering dasselbe ist wie der Aufbau einer langen Leiter. Das Erreichen der zehnten Sprosse einer Leiter ist nicht möglich, wenn nicht die vorherigen Sprossen aufgebaut werden. Es ist akzeptabel, ein gewisses Risiko einzugehen und die Leiter bei zwei zu erklimmen, aber vielleicht nicht bei drei oder vier auf einmal.

Wenn wir auf diese Situation stoßen, ist der richtige Zeitpunkt, die Organisation bei der Priorisierung zu beeinflussen . Und wieder fanden wir eine weitere abstrakte Herausforderung.

Priorisierung ist eine Kunst im Software-Engineering . Es ist völlig normal, dass der Softwareentwickler entspannt über Bits und Bytes spricht, aber wie viel Wert bringen diese Bits und Bytes derzeit für das Unternehmen?

Hier müssen wir eine allgegenwärtige Sprache zwischen Technik, Produkt und Geschäft finden . Die größte Herausforderung für eine Position, die über die Position eines leitenden Softwareentwicklers hinausgeht, besteht darin, diese allgegenwärtige Sprache zu implementieren und den richtigen Prozess zu etablieren, um den Wert Ihrer Aktivitäten und den Wert, den wir Aufgabe für Aufgabe für das Unternehmen liefern, zu demonstrieren.

Seien Sie vorsichtig, wenn Sie über den Wert sprechen, und schaffen Sie keine weitere Abstraktion in Ihren Ergebnissen. Wenn Sie Schwierigkeiten haben, die Verbesserung nachzuweisen, verwenden Sie lieber quantitative als qualitative Kennzahlen. Qualitätskennzahlen können, wenn sie nicht gut begründet sind, in die Irre führen.

Hier möchte ich kein Management-Framework der Kategorie a oder b empfehlen, aber wenn Sie als Software-Ingenieur die Aufgabe haben, Einfluss auf die Organisation zu nehmen, müssen Sie sich einige neue Tools für Ihre Toolbox besorgen.

Einpacken

Wenn Sie bis hierhin gelesen haben, vielen Dank, dass Sie gemeinsam mit mir über dieses Thema nachgedacht haben.

Ich möchte nur die Schlüssel reparieren:

  • Sei geduldig
  • Teilen Sie Erfahrungen mit allen Menschen, bei denen wir das Privileg haben, eine gesunde Diskussion zu führen
  • Seien Sie vorsichtig, wenn Sie sich sicher sind
  • Vernetzen Sie sich mit Ihrem Team
  • Verlieren Sie nicht die Liebe zum Lernen
  • Ihre Ergebnisse sind die Präsentation Ihrer Arbeit. Arbeiten Sie in erster Linie für Sie und in zweiter Linie für Ihr Unternehmen/Ihren Kunden oder Partner.