Was sind die schlimmsten falschen Volkswirtschaften in der Softwareindustrie und wie bekämpfen Sie sie?
programming-practices
project-management
Jon Hopkins
quelle
quelle
Antworten:
Technische Schulden
dh "Mach es einfach schnell, wir werden später umgestalten". Erstens, weil ich erst noch jemanden gesehen habe, der sich mit diesem Verhalten beschäftigt, und der später tatsächlich umgestaltet hat. Zweitens, weil es schwieriger ist, zukünftige Funktionen hinzuzufügen oder zukünftige Fehler zu beheben, weil Sie die Dinge auf schnelle Weise erledigen, anstatt auf gute Weise, damit Sie auf lange Sicht Zeit verlieren.
Leider denken viele immer noch, dass es Entwicklerzyklen erspart , wenn sie etwas schnell erledigen. Ich denke, es ist möglich, aber ich habe es noch nicht in der Praxis gesehen.
quelle
Mieten 2 billig Entwickler anstelle von 1 wirklich toll. (zum gleichen Preis)
quelle
Mein Beispiel wäre das genaue Gegenteil von NimChimpskys Beispiel , nämlich:
Der Versuch, intern etwas zu entwickeln, das von der Stange gekauft werden kann.
Normalerweise liegt dies daran, dass der Markt nicht tatsächlich überprüft wird, um festzustellen, ob bereits etwas vorhanden ist, das das Problem löst. Dies kann von Entwicklern verstärkt werden, die vor dem Durchführen von Nachforschungen in die Programmierung "eintauchen" möchten, und von Projektmanagern, die diese Zeit = Geld nicht berücksichtigen.
Eines der häufigsten Beispiele in meinem Bereich, der Webentwicklung, sind Unternehmen, die versuchen, ein internes CMS-System zu entwickeln. Diese fangen ausnahmslos klein an, werden jedoch bald aufgebläht und außer Kontrolle geraten, da die Funktionen ständig erweitert werden, und es gibt immer viele kostenlose Produkte und Frameworks, die viel besser geeignet wären.
quelle
Keine dedizierten Ressourcen für das Projektmanagement
Ich habe mehrere Male erlebt, wie ein paar Programmierer unter Vertrag genommen wurden und jemand, der bereits einen anspruchsvollen Tagesjob hat, das Projekt hätte managen sollen, aber tatsächlich war er zu beschäftigt mit anderen Aufgaben, sodass das Projekt nie wirklich an Schwung gewann. Die Programmierer machten "Prototypen" und so, aber ohne einen Vorsprung lief ein Großteil davon im Kreis, um beschäftigt auszusehen.
Schlechte Ausrüstung für neue Programmierer
Ich habe einmal eine Firma erlebt, in der die Politik lautete: "Neue Programmierer müssen auf einem wirklich alten PC mit einem kleinen Bildschirm arbeiten, bis sie beweisen, dass sie es wert sind". Kein Wunder, dass eine solche Politik zu einer negativen Auswahl führte, die gute Leute abschreckte, die immer die Wahl hatten, in einem vernünftigeren Umfeld zu arbeiten.
quelle
Wir können Geld sparen, indem wir die Programmierer als Tester / technische Redakteure einsetzen
Wenn Sie Programmierergehälter für die Arbeit von Testern / technischen Redakteuren bezahlen, verschwenden Sie Geld und erhalten wahrscheinlich schlechtere Arbeit als jemand, der seine Karriere dieser Aufgabe gewidmet hat. Auch wenn ein Programmierer mit einem engen Termin konfrontiert ist, werden Tests und Dokumentationen sehr wahrscheinlich fallen gelassen oder erledigt, um ihn zu erfüllen.
Übrigens: Entwickler haben es IMMER mit einer knappen Frist zu tun.
quelle
Das Erforschen / Lesen / Schreiben von Code, der nicht mit der Produktentwicklung zusammenhängt, ist eine Verschwendung von Ressourcen.
Einige Programmierer und sogar Manager glauben daran. Normalerweise programmieren sie nur basierend auf dem Wissen in ihren Köpfen und recherchieren und suchen nach Antworten, wenn sie auf Probleme stoßen. Sie verbessern ihr Wissen nicht kontinuierlich proaktiv. Meiner Meinung nach sollten wir uns immer auf dem Laufenden halten, und das gesammelte Wissen würde uns bei der Lösung bestehender und zukünftiger Probleme helfen. Natürlich müssen Sie Ihre Zeit mit Bedacht darauf verwenden.
Dies ähnelt auch Dans Antwort . Einige Manager möchten lediglich, dass die Entwickler schnell in das Produkt eintauchen und es entsprechend den Anforderungen entwickeln, ohne nach vorhandenen Produkten auf dem Markt zu suchen.
quelle
In vielen Fällen kostet Offshoring mehr Geld. In meinem Unternehmen ist es sehr schwierig, neue Mitarbeiterstellen zu bekommen. Es ist auch schwierig, Auftragnehmer vor Ort zu finden. es gibt ein Verhältnis von 3: 1 von Offshore zu Onshore, das sie beibehalten sollen. Infolgedessen stellen viele Teams nur ein Dutzend Offshore-Mitarbeiter ein und setzen sie kaum ein, nur um 4 Auftragnehmer vor Ort zu gewinnen.
quelle
Lange Rückkopplungsschleifen!
Es passiert jedem: Sie bauen etwas, das Sie für fantastisch halten, und es stellt sich heraus, dass Sie sich geirrt haben. Das ist nicht das Problem. Das Problem ist, wie lange Sie mit dem Bauen verbringen, bevor Sie herausfinden, dass Sie aufhören sollten.
Auf der hohen Ebene sehen Sie dieses Problem bei langen Release-Zyklen. Wenn Sie für ein Jahr ohne Feedback bauen, spielen Sie das ganze Jahr. Je öfter Sie ein Spiel freigeben, desto kleiner sind Ihre Glücksspiele und desto besser können Sie spielen.
Aber es passiert auch auf den niedrigsten Ebenen. Als Entwickler mag ich häufige Codeüberprüfungen (oder besser gesagt Paarprogrammierung), weil dies die Zeit einschränkt, in der ich weiterhin etwas Dummes tun kann, bevor jemand sagt: "Hey, es gibt einen einfacheren Weg!" Aus dem gleichen Grund möchte ich, dass meine Unit-Tests schnell und häufig ausgeführt werden, damit ich Bugs abfangen und töten kann, bevor sie wachsen.
Sobald Sie die Wichtigkeit kurzer Rückkopplungsschleifen bemerken, werden Sie sie überall sehen. ZB der militärische Begriff der OODA-Schleife .
quelle
Nicht meine eigene Anekdote, aber ich hörte einmal von einem Laden, der seinen Entwicklern keinen kostenlosen Kaffee mehr anbot und ihnen stattdessen mitteilte, dass sie jederzeit zum nächsten Coffeeshop gehen konnten (etwa zehn Minuten) Reise in jede Richtung) und kaufen Sie einige.
So ziemlich die Definition von falscher Ökonomie.
quelle
Bereitstellung von Einzelbildschirmarbeitsplätzen, da ein zweiter Monitor zu teuer ist . Auch wenn Sie dadurch nur eine Stunde Arbeit pro Jahr sparen, ist ein zweiter Bildschirm eine gute Investition. Ich weiß mit Sicherheit, dass mir meine Arbeit viele, viele Stunden erspart hat.
Ein Multi-Monitor-Setup kann fast jede Aufgabe effizienter machen, nicht nur Entwicklungsaufgaben. Drei Monitore sind sogar besser als zwei, aber der Effekt wird mit jedem zusätzlichen Bildschirm weniger deutlich.
Multi-Monitor-Setups:
quelle
Günstigste Hardware , die ein Berater erhält, wenn der Berater mehr als 150 USD / Stunde kostet .
Eine bessere Hardware kann den Job mindestens 30 Minuten pro Tag effektiver machen. Das würde 30 Minuten * 20 Arbeitstage pro Monat = 600 Minuten / Monat = 10 Stunden / Monat> mehr als 1 Tag Arbeit = 10 Stunden * 150 $ / Stunde = 1500 $ ergeben
Jetzt würde ein Berater nicht effizienter arbeiten, wenn er / sie einen 1500-Dollar-Computer hätte? Würde es den Berater weniger irritieren?
Nun scheint das Problem zu sein, dass es zwei Budgets gibt, eines für den Berater und eines für die PC-Hardware.
quelle
Monate der Arbeit ersparen Tage der Planung
(Nicht genug Zeit in die Planung investieren)
quelle
Ich vermute, dass Manager den Entwicklern einfach nicht die Tools zur Verfügung stellen, die sie benötigen, um ihre Arbeit effizient zu erledigen.
Grundsätzlich Punkt 9 zum Joel-Test .
quelle
"Wirf (genug) Körper auf das Problem" kann an einigen Stellen leider immer noch verwendet werden. Brooks Gesetz widerspricht dem aus The Mythical Man-Month , obwohl einige Erfahrung erfordern, um diese Lektion zu lernen. Im Allgemeinen kann ich das nicht aufhalten, da das Management möglicherweise der falschen Aussage über das Hinzufügen von Personen und das Nichtbezahlen eines Preises für diese Aussage glaubt.
quelle
Tägliche Treffen :
quelle
Software von der Stange kaufen, anstatt sie intern zu entwickeln.
Ich habe Erfahrung mit Enterprise-Scale-Management-Systemen, die sich sowohl auf HR- als auch auf biologische Labors konzentrieren.
Eine Standardlösung kostete £ 50-100.000 und musste weiterentwickelt und angepasst werden, um die Geschäftsanforderungen zu erfüllen.
Die Entwicklung der selbst entwickelten Lösung dauerte (<6) Monate, während an anderen Projekten parallel gearbeitet wurde und ein bereits angestellter Entwickler zum Einsatz kam.
Ich wechselte vom öffentlichen Sektor, in dem wir ein intern entwickeltes LIMS (Laborinformationsmanagementsystem) eingerichtet hatten, zu einem großen internationalen Pharmazeutikum, in dem die Implementierung einer Standardlösung über ein Jahr gedauert hatte und noch nicht abgeschlossen war.
(6 Monate, in denen ein bereits angestellter Entwickler parallel an anderen Projekten arbeitet. Also ~ 10.000. Und das schließt die mit der Standardlösung verbundenen Supportkosten nicht ein). Der wesentliche Punkt ist, dass das intern entwickelte System tatsächlich verwendet wurde! Sie haben also den damit verbundenen zusätzlichen Kostenvorteil, den ich nicht berechnen kann.
Ich würde für grundlegende Websites usw. zustimmen, warum sich die Mühe machen, Ihre eigenen zu entwickeln. Aber für alle großen komplexen Systeme und wenn Sie bereits hausinterne Fähigkeiten haben, würde ich es selbst bauen .
quelle
Kaufen Sie teure Produkte von der Stange, wenn die Open-Source-Alternativen besser und kostenlos sind.
Wie viele Unternehmen nutzen Git? Wie viele Unternehmen verwenden eine beschissene Versionskontrolle für Unternehmen?
quelle
Verwendung "einfacher" Sprachen ohne viel Ausdruckskraft
Ja, es macht es einfacher, Programmierer zu finden, die den Code warten, aber es macht es schwieriger, gute Programmierer zu finden , die nicht nur das neueste Schlagwort lernen, mit dem sie angestellt werden. Ja, es macht den Code einzelner Bits einfacher zu verstehen, aber es macht ihn auch ungefähr so starr wie ein 2x4 und erhöht das Volumen des Codes, der verstanden werden muss. Ja, es wird von einem großen Unternehmen unterstützt, aber laut Aussage des großen Unternehmens werden Innovationen nur langsam und bürokratisch durchgeführt.
quelle
Schlechte Projektmanager / Teamleiter.
Da eine inkompetente Person die Macht hat, die Arbeit einer Gruppe von Menschen zu ruinieren. Am Ende würde das Projekt ohne Entscheidungen des oberen Managements (Projekt- / Teamleiter) viel besser abschneiden.
Dose die "Mach es einfach schnell, wir werden später umgestalten" entscheidet.
quelle
Fehlende Benutzeranforderungen
Ob Sie es glauben oder nicht, manchmal fehlt dieser Teil oder ist veraltet. Was es kostet, ist, dass man Funktionalitäten schafft, nach denen der Endbenutzer nie gefragt hat.
quelle
Produktivität ist mehr wert als Kreativität
Kreativität ist im Allgemeinen schwer zu messen und meist unmöglich zu beobachten, egal wie groß die Softwareentwicklung ist. Die Produktivität kann andererseits gemessen werden (häufig schlecht) und kann beobachtet werden.
Entwickler, die in der Lage sind, mehr Codezeilen zu schreiben, um schneller auf Fragen zu antworten, sind in der Regel produktiver als diejenigen, die weniger Codezeilen verwenden, um dasselbe Problem zu lösen Es dauert länger, Code zu schreiben, aber Sie erhalten ein zuverlässigeres Produkt | verstehen das Thema gut genug, um Fragen in einfachem, leicht verständlichem | Englisch zu beantworten und Probleme kreativ zu lösen.
quelle
Alles unten kann schlecht sein, wenn es verwendet wird oder nicht unsachgemäß verwendet wird
externe vs Inhouse-Software
ISO 9001-Konformität (Wirtschaftlichkeit - Minderung des MSS-Verlustrisikos bei sinkender Produktqualität)
Entwicklung / QS-Outsourcing
Entwicklungs- / Build- / Release- / Support-Verfahren
quelle
Zu viele nicht abrechenbare Zustellungsmanager.
Vor ein paar Jahren hatten wir in unserem Unternehmen mehrere große Budgetprojekte im Gange und die Rekrutierung war auf dem Höhepunkt. Zu dieser Zeit stellte unser Unternehmen zu viele Delivery Manager (viele davon waren keine IT-Verantwortlichen!) Und sehr wenige Programmierer / Tester ein. Das Verhältnis von Manager zu Programmierer betrug buchstäblich 1: 2. Später, nach Abschluss dieser Projekte, hatten wir eine Situation, in der viele dieser Manager (einige von ihnen waren echte Faulenzer) auf einer Bank saßen und nichts taten. Wir hatten einen Beurteilungszyklus, in dem alle wenig oder gar keine Gehaltserhöhung erhielten (sogar wir fleißigen Programmierer, seufz), damit die Firma niemanden entlassen muss! Glücklicherweise hat das Unternehmen diese Situation erkannt und im ersten Quartal dieses Jahres das RIGHTSIZING durchgeführt!
quelle
Optimierung vor der Profilerstellung (auch vorzeitige Optimierung genannt).
Ich habe zu oft jemanden gesehen, der nach einer cleveren Lösung gesucht hat, die die Wartung und Lesbarkeit unnötig erschwert, weil sie schneller ist. Natürlich ist der Code nicht benchmarkiert worden (nicht einmal mit Micro-Benchmarks), so dass er schnell "schneller wird, basierend auf dem überzeugenderen Argument" über einen Codeabschnitt, der höchstwahrscheinlich die Gesamtleistung des Ganzen nicht beeinflusste Anwendung von viel.
Als solche ist es eine sehr falsche Wirtschaft, und die Art der falschen Wirtschaft, die gelegentlich sogar die erfahrenen Profis verwickelt.
quelle
Eingeschränkter oder kein Internetzugang
Denn natürlich werden Ihre Mitarbeiter das Internet nutzen, um Facebook-Spiele zu spielen und nicht zu recherchieren, um Antworten auf technische Fragen zu Stackoverflow zu erhalten.
In der Realität bedeutet das Internet natürlich einen enormen Produktivitätsschub, und obwohl es möglicherweise angebracht ist, einen Site-Filter für wirklich zweifelhafte Sites zu verwenden, stimmt etwas nicht, wenn die Readme-Datei von Visual Studio oder die lokalen Regierungsseiten von Telford aus bestimmten Gründen blockiert werden "Sextourismus"
quelle
Lassen Sie Ihre Entwickler einen 15-Zoll-Monitor und einen PC mit geringen technischen Daten verwenden, da dies der Unternehmensstandard ist.
Monitore mit angemessener Größe sind billig, schnell zu installieren und machen die Programmierer produktiver.
quelle
Zu viele Bachelor of Business Administration (oder ähnliches), hierarchisch organisiert, versuchen anzuwenden, worum es ihrer Meinung nach beim modernen Management geht: Menschen mit "KPI", "SLA" und was nicht zu belästigen, "Berichte" zu verlangen (ohne, Natürlich kümmert es sich um die Infrastruktur, um sie zu generieren), so dass Programmierer ihre Tage damit verschwenden, ausgefallene EXCEL-Blätter, Q4-Berichte und was nicht auszufüllen und von einem großartigen neuen Management-Tool zu kopieren und in ein anderes einzufügen (das scheint die Regel zu sein) Diese Tools sind niemals integriert oder ineinander integrierbar. Sie nehmen an Besprechungen teil, in denen Berichte und Zahlen präsentiert werden (und alle fühlen sich schuldig, dass sie diesen oder jenen KPI nicht erfüllt haben).
quelle