Hintergrund:
Ich habe in einem indischen Startup gearbeitet, wo der Engineering VP direkt die Kontrolle über sein Team von 11 Mitgliedern hatte. Selbst wenn er Teamleiter ernannte, hatten sie als Leiter nie Entscheidungsbefugnisse oder wirkliche Verantwortung. Er gab Leuten mehr als ein Jahr lang „hervorragende“ Bewertungen, und wenn er dieselbe Person feuern wollte, gab er ihnen eine schlechte Bewertung und setzte sie auf einen Leistungsverbesserungsplan und feuerte sie. Er war weniger qualifiziert als seine Untergebenen und kannte gute Softwarepraktiken nicht. Er mochte es nicht, wenn das Produktteam versuchte, herumzustöbern, warum unsere Implementierung 9 Monate dauerte, obwohl es 3 Monate hätte dauern sollen, und er Details vor ihnen verheimlichte. Giftige Kultur. Ich ging weg.
Jetzt wurde ich als Berater von einem Unternehmen eingestellt, das fast aus dem Startup-Modus herausgekommen ist und ein bewährtes Produkt hat. Das Problem ist, dass der Manager, dem ich unterstellt bin, dem früheren VP ähnlich ist. Gute Softwarepraktiken wie Design Patterns kennt er nicht. Code ist willkürlich geschrieben. Es werden kaum Testfälle geschrieben. Keine Codeüberprüfungen, daher schreiben Entwickler Code, bei dem eine einzelne Funktion 400 Zeilen umfassen und Variablennamen wie "lki" haben kann. Anstatt die IDE zu verwenden, führen sie weiterhin Programme über die Befehlszeile aus. Der Manager trifft alle Entscheidungen. Seine Teamleiter wissen nicht alle Details über die Arbeit, die sie selbst tun (obwohl sie dort seit mehr als 5 Jahren tätig sind). Er erwartet, dass jeder nur dem folgt, was er sagt. Dieses Unternehmen ist sehr speziell in Bezug auf Regeln und Audits usw. Das ließ mich denken, dass die Dinge gut organisiert wären. Aber wenn ich den Code sehe, sehe ich, dass es ein Albtraum ist.
Vor seinem Beitritt hatte ich erwähnt, dass ich bei besseren Softwarepraktiken helfen könnte, und er stimmte zu. Aber jetzt sagt er, ich werde diese Chance " später " bekommen. Im Moment möchte er nur, dass ich den Code so verwende, wie er ist, weil sie Fristen einhalten müssen. Das Produkt soll ein Jahr später ausgeliefert werden.
Meine Fragen:
Ist das in den meisten Unternehmen so? Wo die Position "Teamleiter" nur zum Namensgeber vergeben wird und die Manager keine Anstrengungen unternehmen, um sicherzustellen, dass der Mitarbeiter lernt und ein besserer Softwareentwickler oder -manager wird? Ist in solchen Unternehmen (in denen die Teamleiter nur Marionetten sind und die Manager selbst keine guten Softwarepraktiken kennen) das Versprechen „später“ nur ein Zuckerbrot am Stiel?
Ich frage, weil ich herausfinden muss, ob ich bleiben und "einfach arbeiten" soll, unabhängig davon, wie der Code strukturiert ist, oder ob ich hoffen könnte, nach Unternehmen zu suchen, in denen die Dinge besser implementiert sind und ich eine Chance dazu habe in Bezug auf Wissen und Managementfähigkeiten wachsen.
Ist das in den meisten Unternehmen so?
Nein, ist es nicht. Die meisten Unternehmen arbeiten viel besser als diese. Was Sie beschreiben, ist ein dysfunktionales und nicht nachhaltiges Modell. Der "Engineering Manager" kann nicht jedes Stück Code im Detail verfolgen, und das bedeutet, dass er schlechte Entscheidungen treffen wird, aber sein Team wird ihnen folgen, selbst wenn sie wissen, dass sie falsch liegen (weil es ihnen gesagt wurde). ) Mit zunehmender Größe des Unternehmens wird dies scheitern. Der Manager wird zum Engpass, da die Entwickler darauf warten, dass er eine Entscheidung darüber trifft, was sie tun sollen, aber er ist zu beschäftigt, um die Entscheidung zu treffen. Diese Probleme können bereits bei 20 Entwicklern beginnen.
Allerdings ist es leider kein extrem seltener Ansatz. Wenn Sie sich in Unternehmen bewegen, werden Sie wahrscheinlich irgendwann jemanden wie diesen finden.
Ihre implizite Frage:
Wird sich das ändern?
Wahrscheinlich nicht. Das Problem ist nicht die Stabilität des Produkts, das Problem ist der Manager selbst. Er ist eindeutig eine kontrollierende Persönlichkeit und es ist unwahrscheinlich, dass er sich im Laufe der Zeit ändert, selbst wenn er unter Druck gesetzt oder befohlen wird. Ich begegnete einem solchen Manager, und das Unternehmen erkannte, dass es ein Problem gab. Sie versuchten, das Problem zu lösen, indem sie ihn zum "Vizepräsidenten für Entwicklung" beförderten und eine andere Person mit der täglichen technischen Leitung betrauten, aber es funktionierte nicht. Er bestand darauf, alle Entscheidungen selbst zu treffen. Schließlich entließ ihn die Firma. Ich gehe davon aus, dass sich das Unternehmen nur so ändern wird.
Ich muss mir überlegen, ob ich bleiben und „einfach arbeiten“ soll, unabhängig davon, wie der Code strukturiert ist, oder ob ich hoffen kann, nach Unternehmen zu suchen, in denen die Dinge besser implementiert sind
Wenn es Ihnen nichts ausmacht, in einem dysfunktionalen Unternehmen zu arbeiten und zu riskieren, dass es scheitert, dann bleiben Sie dabei. Aber eine solche Umgebung kann sich sehr nachteilig auf Ihre Produktivität auswirken, und während Sie dort sind, lernen Sie keine guten Entwicklungsmethoden. Es wird leicht sein, ein Unternehmen zu finden, in dem dies nicht der Fall ist. Versuchen Sie es buchstäblich woanders. Wenn Sie bei zwei Versuchen - wahrscheinlich bei einem - keinen finden, werde ich sehr überrascht sein.
NEIN.
Es gibt Unternehmen, die dies nicht tun. Erwägen Sie, sich über die Arbeit und das technische Umfeld zu erkundigen, bevor Sie bei zukünftigen Unternehmen anstellen; dieser wird sich nicht ändern.
DJ Clayworth
Julia
Julia
Peter W