Das Unternehmen macht jeden Softwareentwickler zu einem 1-jährigen Zeitarbeiter ohne Sozialleistungen. Dies führt zu Kurzfristigkeit im Code

Ich bin vor kurzem (1-2 Monate) als Softwareentwicklungsmanager eingestellt worden. Seit ich angekommen bin, habe ich zwei problematische Praktiken gefunden.

  1. Die meisten Entwickler beginnen mit einem befristeten Jahresvertrag. Marktübliche Bezahlung, aber keine Sozialleistungen, und sie müssen sich jedes Jahr neu für ihre Stelle bewerben. Das Entwicklerteam ist größtenteils entweder jung oder aus familiären Gründen an unsere Stadt gebunden, daher ist die Entwicklerkompetenz immer noch hoch. Die Fluktuation ist jedoch auch ziemlich hoch, da die Leute mit der Jobsuche nach 8 Monaten beginnen (da wir ihnen nicht erlauben, vor dem 11. Monat zu versuchen und zu verlängern). Die meisten werden jedoch verlängert, wenn sie sich bewerben.

  2. Wir verwenden Scrum als Projektmanagement-Tool (es war nicht meine Wahl für alle Scrum-hassenden Entwickler, also kann ich es nicht ändern), komplett mit der Verwendung der Punkte des Scrum Masters, um die Arbeit zu schätzen. Das Problem ist, dass Entwicklerleistungsbewertungen (anscheinend nicht von mir durchgeführt) von unserem Scrum Master unter Verwendung der Punkte durchgeführt werden und Boni auf den Bewertungen basieren. Es hilft nicht, dass unser Scrum Master ein Executive Vice President ist, da das Projekt für unser Unternehmen als extrem hoch angesehen wird.

Diese beiden Praktiken führen zu einer Kohorte von Entwicklern, die sich hauptsächlich darauf konzentrieren, Code ohne Rücksicht auf die langfristige Lebensfähigkeit zu produzieren. Grenzfälle werden ignoriert, die React.jsx-Dateien werden massiv, um die Arbeit beim Erstellen neuer Komponenten zu sparen, und alles, was nicht explizit in der Spezifikation steht (vom nicht-technischen Produkteigentümer, der im Grunde alles vergisst, was er im Frontend sieht), ist es einfach nicht inbegriffen.

Ein Beispiel ist, dass sie ein Eingabefeld für die Telefonnummer für einen seltenen Anwendungsfall für unsere teureren Kunden haben wollten. Die Eingabe wird nur in einem wirklich schlechten Szenario gesehen, das das Geschäft lahmlegt. Der Produkteigentümer hat nicht angegeben, dass die Nummer gespeichert und Notfallanweisungen per SMS gesendet werden sollen (das war die Absicht), also war es nicht so.

Wie soll ich damit umgehen? Ich fühle mich wie ein Aufseher, nicht wie ein Manager.

Ich möchte meine Entwickler nicht unter Druck setzen, da sie sonst aufhören könnten. Die zusätzlichen 5 Punkte pro Sprint (Hochleistung gilt als mehr als 18) bedeuten ihnen viel (Bonus kann 20 % des Gehalts betragen).

Das Management möchte die Kontrolle, da dies für uns das Entwicklungsprojekt mit der höchsten Priorität ist. Mein Vorgesetzter sagt, ihm seien vom oberen Management die Hände gebunden. Er sagte, dass er den permanenten Entwicklern wahrscheinlich mehr Geld besorgen könnte, aber das war es auch schon.

Die Personalabteilung hat die Befugnis, Verträge früher zu verlängern, wird dies aber nicht tun, da „wir immer noch Bewerbungen für Programmierer erhalten, wenn wir die Stellen ausschreiben, also gibt es einen großen Überschuss“.

Herr Scrum Master sagt, dass er uns schon mehr Spielraum gibt, uns selbst zu steuern, als Scrum es zulässt (nicht sehr agil, aber ok).

Ich habe einen meiner Star-Entwickler auf Zeit gefragt, und er war der Ansicht, dass ich „bleiben, ein nettes Projekt in Ihren Lebenslauf aufnehmen und aufhören sollte, sobald das Ende kommt. Überlassen Sie den flammenden Haufen Scheiße der Wartung dem nächsten Typen ."

Mir gehen hier die Ideen aus, um dies zu versuchen und zu lösen.

Welche Möglichkeiten gibt es, um die kurzfristige Prognose der Entwickler, die in den Code eindringt, zu beheben oder abzumildern?

Warum erwarten Sie, etwas zu lösen, was das obere Management nicht sehen kann?
@SolarMike bin mir nicht sicher, ob ich das noch erwarte. Ich hoffe eher, dass es etwas gibt, was ich noch nicht ausprobiert habe.
@SolarMike, ein Teil davon ist Ego. Ich bin die Art von Person, die Probleme löst, lange nachdem andere sie als nicht wert abgetan haben, sie zu beheben. Manchmal zahlt sich diese Sturheit gut aus. Zu anderen Zeiten verbrenne ich Zeit und Geld in Sinnlosigkeit. Also zögern Sie nicht, mir zu sagen, wenn Sie denken, dass dies eine dieser Zeiten ist.
Entschuldigung, mir ist nicht klar, was die Frage hier ist.
Welche Optionen gibt es im Grunde, um die kurzfristige Perspektive der Entwickler zu korrigieren, die sich in den Code einfügt?
@JoeStrazzere 1 wenn möglich und 2 wenn das der einzig gangbare Weg ist.
Nebenbei bemerkt, ich denke, Sie sollten dies in zwei verschiedene Fragen aufteilen.
Ich bin nicht damit einverstanden, dies als zu allgemein zu schließen, da die eigentliche Frage jetzt gestellt wurde und für mich wie eine perfekt beantwortbare Frage aussieht (wenn auch sehr anfällig für Antworten vom x / y-Problemtyp).

Antworten (5)

In einem Kommentar haben Sie Ihre Frage wie folgt präzisiert:

Welche Optionen gibt es, um die kurzfristige Perspektive der Entwickler zu korrigieren, die sich in den Code einfügt?

Anstatt direkt auf die spezifischen Herausforderungen einzugehen, die Sie beschreiben (z. B. wie Sie mit Ihrem frustrierenden Scrum Master umgehen), halte ich es für sinnvoller, einen Schritt zurückzutreten, herauszuzoomen und einen Rahmen für die Lösung dessen zu berücksichtigen, was Sie als Qualitätsprobleme am Arbeitsplatz wahrnehmen , Im Algemeinen.

Das Problem mit der Qualität am Arbeitsplatz ist, dass sie in vielen Situationen willkürlich und sehr persönlich ist. Sie haben selbst in einem anderen Kommentar darauf angespielt, als Sie sagten:

Ich bin die Art von Person, die Probleme löst, lange nachdem andere sie als nicht wert abgetan haben, sie zu beheben

Das sagt mir, dass Sie wahrscheinlich eine strengere Qualitätsbewertung haben als einige andere, mit denen Sie arbeiten. Unterschiede in der Wahrnehmung von Qualität oder Prozess führen fast immer zu den Konflikten, die Sie haben. Es kann sich leicht in eine Spirale von Argumenten verwandeln, ohne sich darauf zu konzentrieren, was Sie tatsächlich erreichen wollen.

Bevor Sie also versuchen, eines Ihrer spezifischen Probleme zu lösen, treten Sie einen Schritt zurück. Mach Folgendes:

  • Bestimmen Sie auf hoher Ebene, was die Ziele Ihres Unternehmens sind.
  • Bestimmen Sie, wie oder warum diese Ziele für Ihr Projekt relevant sind.
  • Gestalten Sie Ihre Probleme durch die Linse dieser Ziele neu, so wie sie für Ihr Projekt gelten
  • Überlegen Sie, ob Ihre Probleme tatsächlich noch gelöst werden müssen, und entwickeln Sie in diesem Fall eine Lösung, die einen klaren Bezug zu Ihren identifizierten Zielen herstellt.

Softwareentwicklung ist (fast immer) Mittel zum Zweck. Die Softwarequalität und/oder die Arten von Problemen, die Ihre Kurzzeitentwickler einführen, können für einen Perfektionisten wirklich frustrierend sein. Es kann wie ein unüberwindbares Problem erscheinen. Aber indem Sie die obigen Schritte befolgen, können Sie sich selbst helfen, diese Probleme aus der Sicht des Unternehmens und nicht aus Ihrer persönlichen Sicht zu sehen.

Dies ist wichtig, da es zu einem von zwei Ergebnissen führen kann:

  • Sie werden vielleicht erkennen, dass die Dinge, die Sie als Probleme ansehen, keine wirklichen Probleme sind. Dies ist ein allgemeiner Moment der Offenbarung für Softwareentwickler und Softwareentwicklungsmanager, die daran gewöhnt sind, nach Perfektion zu streben. Die meisten offiziell ausgebildeten Softwareentwickler wurden in der Idee geschult, dass es immer die beste Antwort oder die beste Lösung gibt, und nur diese zählt. In der realen Welt ist gut genug gut genug. Wenn ein Softwareteam Ergebnisse generiert, die die Anforderungen des Unternehmens erfüllen und zu den Unternehmenszielen passen, ist das alles.

Wenn Sie keine Möglichkeit finden, eine „massive React.jsx-Datei“ für die Unternehmensziele relevant zu machen, müssen Sie aufhören, sich darüber Gedanken zu machen. Aber wenn Sie zeigen können, dass der Umsatz in direktem Zusammenhang mit der Fähigkeit Ihres Unternehmens steht, seine Ziele zu erreichen, dann können Sie etwas Zugkraft bekommen.

Andererseits scheint die Tatsache, dass ein Telefonnummern-Eingabefeld nicht die gewünschte Funktionalität hatte, ein ernstes Problem zu sein, das leicht in einen Kontext einzuordnen ist, den das Unternehmen versteht. Aber es hört sich so an, als ob es sich eher um ein Problem falscher Anforderungen als um Fluktuation unter den Entwicklern handelt.

Letztendlich stellen Unternehmen keine Softwareentwicklungsteams ein, weil sie die beste Software der Welt entwickeln wollen. Sie stellen Softwareentwicklungsteams ein, weil sie kundenspezifische Software als eine Möglichkeit zur Lösung ihrer Geschäftsprobleme ansehen. Wenn Sie also als Teamleiter auf Dinge stoßen, die Sie für Probleme halten, ist der beste Ansatz, sich selbst mit den Unternehmenszielen und diesen Geschäftsproblemen zu vergleichen.

Und wenn Sie sich dann immer noch sicher sind, dass es sich um ein Problem handelt, stellen Sie sicher, dass Sie es aus der Sicht des Unternehmens und nicht aus der Sicht der reinen Softwareentwicklung einrahmen. Ein Unternehmen, das Softwareentwicklung als Ware – als Mittel zum Zweck – betrachtet, wird Umsätze nicht ohne Weiteres als ernsthaftes Problem betrachten, es sei denn, Sie helfen ihm zu verstehen, warum, in für sie verständlichen Begriffen und mit einer Lösung, die in ihrem Rahmen sinnvoll ist.

Gute Analyse. Häufiges Problem in der Softwarewelt.

Das Verhalten Ihrer Kollegen basiert auf deren Anreizen. Ihre Anreize sind auf einem sehr hohen Niveau angesetzt.

Ich weiß nicht, was Ihre Erfahrung oder Ihr Platz in der Organisation ist, aber da Sie nicht einmal ein Mitspracherecht bei den Prozessen haben, die für die Entwicklung verwendet werden, glaube ich nicht, dass Sie einen Platz mit bedeutender organisatorischer Macht einnehmen. (Und übrigens, ihr macht die dunkelste Form von Dark Scrum, von der ich je gehört habe). Du bist super neu. Du hast keine Verbündeten. Ihr Vorgesetzter ist entweder fatalistisch oder es ist ihm egal. Ihre Organisation ist so unfunktional organisiert, dass die Personalabteilung (dh das Verwaltungspersonal) darüber entscheidet, wie Entwickler behandelt werden.

Du hast also eigentlich nur eine Möglichkeit:

Arbeiten Sie hier weiter, bis Sie die Fähigkeiten und Erfahrungen haben, um woanders besser zu arbeiten, dann tun Sie das. Und vielleicht Unternehmen besser durchleuchten.

Das ist genau das, was Ihr „Star-Temp-Entwickler“ gesagt hat, denn das ist eine kluge Reaktion auf die Umgebung, in der sie sich befinden.

Ich kann mich nicht erinnern, wo im Scrum-Leitfaden steht, dass Teamautonomie eine schlechte Sache ist und dass der Zweck der Schätzung von Stories für die Iteration darin besteht, dass der SM die Mitarbeiterleistung überprüfen kann. Ist Ihr SM ein echter SM, oder hat er seine Qualifizierung in seinem Müsli bekommen?

Ich habe das Gefühl, dass die meisten (wenn nicht alle) Entwickler Zeitarbeiter sind, das hätte ein Warnsignal sein sollen, bevor Sie überhaupt beigetreten sind.

Wie @AndreiROM (ich bin nicht an die Tagging-Etikette von StackOverflow gewöhnt) vorgeschlagen hat, wäre die beste Alternative, „diese Leute ihren Zirkus so führen zu lassen, wie sie möchten“.

Das Problem scheint die Unternehmenskultur zu sein. Wenn es keine starke, definierte Gruppe von Entwicklern gibt, die Standardpraktiken und definierte Programmiererwartungen durchsetzen können, bedeutet dies, dass das Boot nicht richtig verankert ist und es nur eine Frage der Zeit ist, bis es an Land treibt.

Entweder:

Holen Sie sich ein gutes Projekt, um es Ihrem Portfolio hinzuzufügen, und steigen Sie kurzfristig aus

oder...

Versuchen Sie, substanzielle, unternehmensweite Änderungen vorzunehmen


Option A ist wahrscheinlich insgesamt die beste Option, und Sie könnten problemlos nach anderen Optionen suchen.

Option B hingegen bedeutet, dass Sie bereit und in der Lage sind, sich gegen den Strom zu stemmen und versuchen, fest angestellte Entwickler zu bekommen und Ihre bereits bestehenden Technologieschulden loszuwerden. Diese Option kann eine gute Heldengeschichte ergeben, um zu versuchen, die Leiter hinaufzuklettern, wenn Sie danach suchen. Aber ich würde davon abraten.

„Ich habe das Gefühl, dass die meisten (wenn nicht alle) Entwickler Zeitarbeiter sind, das hätte ein Warnsignal sein sollen, bevor Sie überhaupt beigetreten sind.“ Es wäre gewesen. Einige der neueren Entwickler wussten nicht, dass sie Zeitarbeiter sind, bis ich es herausfand. Wir wissen es nur, weil wir versucht haben, etwas Trainingsgeld zu beantragen und herausgefunden haben, dass 2/3 der Entwickler aufgrund des Aushilfsstatus nicht berechtigt sind. Auch in den aktuellen Stellenausschreibungen für Entwickler wird die Zeitarbeit nicht erwähnt. Es ist nur irgendwie im Angebotsschreiben versteckt.

Es scheint mir, als würden Sie eine verlierende Hand spielen:

  • Ihr Manager hat nicht das Gefühl, dass er über das politische Kapital verfügt, um auf Veränderungen zu drängen (was auf Anhieb ein Warnsignal dafür ist, dass er nur dazu da ist, den Status quo durchzusetzen)
  • Die Vorgesetzten verstehen nicht, dass ihr Schiff auf eine Katastrophe zusteuert (eine weitere rote Flagge)
  • Der Scrum Master hat keine Ahnung, dass die Arbeit, die er zu Ende drängt, nutzlos ist oder, schlimmer noch, Ihre Codebasis beschädigt (ein weiteres Warnsignal).
  • Die Mitarbeiter spielen das System aus, um Boni zu erhalten (kein Unternehmen hat es jemals geschafft, mangelndes Engagement für die Bedürfnisse und Ziele des Unternehmens zu fördern).
  • obwohl man die drohende Katastrophe sieht, sind einem die eigenen Hände gebunden

Am einfachsten wäre es, sich nach einem neuen Job umzusehen und diesen Leuten (Verrückten?) zu überlassen, wie sie ihren Zirkus führen, wie sie wollen.

Wenn Sie jedoch eine Weile dabei bleiben möchten, sollten Sie sich einige langfristige Ziele setzen, was Sie verbessern möchten, und anfangen, kleine, inkrementelle Änderungen voranzutreiben.

Kämpfen Sie beispielsweise darum, ein paar technische Mitarbeiter (Vollzeit) zu beschäftigen, und schicken Sie sie zu den Besprechungen zur Erfassung der Anforderungen, damit die Zeitarbeitsentwickler bessere Spezifikationen erhalten. Oder überprüfen Sie die Anforderungen selbst, bevor die Arbeit erledigt wird (dies könnte eine gute Notlösung sein).

Drängen Sie langsam auf mehr Vollzeit-Entwickler oder holen Sie sich die, die Sie auf die Überprüfung der Codequalität der Aushilfen konzentrieren müssen. Holen Sie sich, wer auch immer die Überprüfungen durchführt, um die Codequalität in ihre Kriterien aufzunehmen usw.

Ein entscheidender Punkt ist, dass Sie sehr starke Kommunikationswege mit dem Scrum Master aufbauen und ihn dazu bringen sollten, zu erkennen, dass Sie in das, was erledigt wird, einbezogen werden müssen (besprechen Sie die Überprüfung der Anforderungen vor Sprints usw.). Sie beide müssen Verbündete sein und sicherstellen, dass die geleistete Arbeit relevant und zukunftssicher ist, und nicht nur, dass ein Entwickler sein oder ihr schlecht definiertes Ziel erreicht.

Mit der Zeit können Sie eine „gut genug“-Situation schaffen, die es Ihnen ermöglicht, die von Ihnen aufgebauten technischen Schulden anzugehen.

Es gibt keinen Vorteil für die Entwickler, die Dinge richtig zu machen. Es gibt jedoch einen Vorteil, um Dinge schnell zu erledigen – den Bonus. Ich habe keine Strafen für minderwertige Arbeit gesehen und die Tatsache hinzugefügt, dass ihr Vertrag in x Monaten verlängert werden könnte oder nicht, und Sie haben den Entwicklern im Grunde genommen den Anreiz genommen, die Dinge richtig zu machen.

Bestimmen Sie, was für Sie/Ihr Unternehmen wichtig ist, und strukturieren Sie Ihr Belohnungssystem entsprechend. Ihr aktuelles Belohnungssystem schätzt die Liefergeschwindigkeit, nicht die Qualität.