Wann ist es in Ordnung, die „Ordentlichkeit“ des Designs zu opfern, um ein Projekt fertigzustellen?

15

Wann ist es in Ordnung, bei der Arbeit an einem Produkt, das schnell erledigt werden muss und gut funktioniert, auf Wartbarkeit und "Ordentlichkeit" des Designs zu verzichten, damit die Aufgabe schnell erledigt und erledigt werden kann? Und inwieweit ist es in Ordnung, besonders wenn mir die Techniken, mit denen es "ordentlich" gemacht wird, neu sind?

Mr. Jefferson
quelle
3
Nur wenn es unbedingt nötig ist.
FrustratedWithFormsDesigner
1
Es ist so ziemlich die Norm, in der ich arbeite. "Sie können jetzt vielleicht bezahlen, oder Sie können mich später bezahlen" war noch nie so wahr.
MetalMikester
Klingt nach einer
1
Ich werde die gegenteilige Ansicht vertreten und immer sagen . Wenn ein Projekt nicht fertig ist, kümmert es niemanden, ob es ordentlich ist.
drxzcl
1
@ MrJ, ich habe tatsächlich über die Benutzer nachgedacht.
drxzcl

Antworten:

18

Denken Sie daran, dass Sie angestellt sind, um ein Unternehmen zu unterstützen. In gewisser Weise wirkt sich Ihre Software auf das Geschäftsergebnis aus. Sie müssen ein Gleichgewicht zwischen einer technisch perfekten Lösung und der Zeit bis zur Markteinführung Ihres Produkts finden und wie viel Nutzen das Unternehmen daraus ziehen wird.

Meiner Erfahrung nach sind Entwickler oft auf der Suche nach technischer Perfektion. Es gibt jedoch sehr gute Gründe, auf Qualitätsmerkmale wie Wartbarkeit oder Leistung zu verzichten, um ein Produkt schneller auf den Markt zu bringen. Es kommt auf das Geschäft und das Produkt an. Aber "immer nach einem perfekten Design streben" ist ein zu simpler Ansatz.

Letztendlich ist das einzige, was zählt, der Wert für das Geschäft. Finden Sie heraus, wie Sie es kurz- und langfristig maximieren können, und streben Sie dieses Ziel an.

RationalGeek
quelle
3
Ich stimme dem Geist Ihrer Antwort zu, aber Ihnen fehlen einige Details. You need to strike a balance between a technically perfect solution, and the time to market of your productIch würde nicht zustimmen, das liegt außerhalb der Verantwortung eines Entwicklers. Sie müssen sich unbedingt darüber im Klaren sein, aber sie sollten die Informationen an jemanden weitergeben, der für eine Geschäftsentscheidung verantwortlich ist.
StuperUser
2
Schauen Sie sich zum Beispiel Blizzard an. Sie haben großen Erfolg mit ihren Spielen und kümmern sich nicht wirklich um die Markteinführung, da sie glauben, dass sich überlegene Qualität letztendlich auszahlen wird. Und das, obwohl wahrscheinlich nicht für alle Arten von Software.
Falcon
1
Ich stimmte mit @StuperUser und @Peter Rowell absolut überein. Häufig liegt es in der Verantwortung des Entwicklers, die technischen Risiken, Probleme mit Ecken und Kanten usw. den Personen in der Lebensmittelkette mitzuteilen , die die Entscheidung treffen. Wenn dies Ihre Rolle ist, sollten Sie sich darauf konzentrieren, dies so genau wie möglich zu kommunizieren. Je besser Sie jedoch verstehen, was die Wertschöpfungskette des Unternehmens antreibt, desto besser werden Sie bei dieser Kommunikation sein.
RationalGeek
1
@ Falcon Blizzard kann in der Tat kurzfristige Gewinne in der frühen Veröffentlichung für langfristige Spiele in einem soliden, stabilen und unterhaltsamen Spiel opfern. Das ist vielleicht das richtige Gleichgewicht für sie. Es ist jedoch nicht in allen Fällen das richtige Gleichgewicht.
RationalGeek
4
Die Realität ist, dass die meisten neuen Softwareprodukte auf dem Markt versagen werden, nicht aufgrund von Qualitätsproblemen, sondern weil die Kunden sie einfach nicht wollen. Daher ist es möglicherweise nicht die beste Verwendung der Ressourcen, viel Zeit und Mühe in die Erstellung einer soliden, verwaltbaren Architektur in Version 1 des Produkts zu investieren. Die Geschäftsleute, die darauf drängen, etwas aus der Tür zu holen, sind nicht die Idioten, von denen viele von Ihnen glauben, dass sie es sind. Ein Produkt in die Hände der Kunden zu bekommen, um die Rentabilität zu bestimmen, ist eine sehr kluge Sache.
Kristopher Johnson
12

Der Begriff "technische Schulden" ist sehr praktisch, um solche Geschäftsentscheidungen zu treffen. Jegliche Arbeit, die Sie jetzt nicht erledigen, verursacht später einen gewissen Arbeitsaufwand. Genau wie bei den Finanzen ist das Aufnehmen von Schulden riskant, kann sich aber lohnen, wenn Sie die Schulden später zurückzahlen können.

Allerdings ist die technische Verschuldung zur Amortisationszeit kein 1: 1-Verhältnis. Die Behebung von Fehlern nach der Veröffentlichung ist teurer, und die Auswirkungen auf die zukünftige Produktivität bei der Entwicklung von einem chaotischen Altsystem können empörend sein. Möglicherweise müssen Sie doppelt so viel Zeit aufwenden, um Ihre Fehler zu beheben, oder Sie müssen 1000-mal so viele Arbeitsstunden und Ressourcen aufwenden.

Ihre Aufgabe bei dieser Entscheidung ist es, die Auswirkungen der von Ihnen in Betracht gezogenen Eckschnitte zu verstehen und diese Auswirkungen dann den Personen mitzuteilen, die die Geschäftsentscheidung treffen. Diese besondere Fähigkeit zur Schätzung erfordert möglicherweise viel Forschung und Arbeit, um sich im Moment gut zu entwickeln, aber sie wird während Ihrer Karriere von unschätzbarem Wert sein.

Ethel Evans
quelle
1
+1. Technische Schulden sind wirklich der klarste Weg, dies zu beschreiben.
crazy2be
8

Wenn es akzeptiert wird und die Konsequenzen vom Eigentümer / Kunden / Benutzer verstanden werden.

Ein Klempner muss zur Reparatur einen Müll entsorgen. Ich möchte in der Zwischenzeit die Spüle benutzen, aber er müsste mir die Zeit und das Material in Rechnung stellen, um mit Klebeband, das brechen könnte, provisorische Rohre einzulegen. Dies wird auch die Rückgabe der Entsorgung an die Reparaturwerkstatt verzögern. Wenn ich die zusätzliche Abrechnung mit der Maßgabe akzeptiere, dass ich ein Verstopfen riskiere. Es wird einen Tag länger dauern, bis die Entsorgung repariert ist, und es wird noch länger dauern, bis er sie zurückstellen kann. Das ist akzeptabel.

Sie können jetzt pünktlich und budgetgerecht sein, aber auf lange Sicht eine noch höhere Gebühr opfern / riskieren. Es kann schwierig sein, nicht-technische Leute dazu zu bringen, dies zu verstehen, aber dafür sind die Vertriebsmitarbeiter da.

JeffO
quelle
5

Viele Menschen geben es schnell auf, wenn sie etwas Neues lernen, und tun es einfach so, wie sie es immer getan haben. Wenn dies ein Muster ist, leidet nicht nur Ihr Code, sondern Ihre eigenen Fähigkeiten als Programmierer bleiben begrenzt.

Letztendlich ist die einzige erfolgreiche Software die, die ausgeliefert wird.

Jeremy
quelle
"Letztendlich ist die einzige erfolgreiche Software die, die ausgeliefert wird." Bis es ein paar Jahre später abstürzt und brennt, weil es nicht richtig gebaut wurde. Kurzsichtigkeit in Aktion.
Wayne Molina
1
Wenn Sie nie versenden, werden Sie es nie mehrere Jahre machen ...
Jeremy
Wenn Sie aufgrund des kurzsichtigen Managements nichts ausliefern können, das Sie auf lange Sicht nicht nervt, haben Sie es nicht verdient, überhaupt im Geschäft zu sein!
Wayne Molina
3

Nachdem die weiche Frist verstrichen ist. Und selbst dann ist es ein sehr niedriger Grad von "OK". Nachdem die harte Frist abgelaufen ist, ist es natürlich strittig. Denn das liegt in der Natur harter Fristen.

Darüber hinaus entstehen hieraus technische Schulden. Für jede Stunde / Tag, die Sie damit verbringen, sich in der Mentalität der Geter zu verlieren, wird es Sie ungefähr doppelt so viel Zeit kosten, wenn Sie das nächste Mal dieses Projekt anfassen müssen. Wenn Sie müssen, ist es am besten, zu eilen, zu versenden und dann sofort zu beginnen, Ihr ganzes Entenband zu reparieren. Jahre später zu einem Hack-Eyed-Projekt zurückzukehren, ist ein Albtraum. Wenn du es nie wieder anfassen wirst, ist es niemandem egal. Aber das einzige Mal, dass ich ein Projekt für immer liegen gelassen habe, ist, als ich den Job gewechselt habe.

Denken Sie jedoch daran, dass das Timing dieser Dinge Aufgabe des Projektmanagers ist. Wenn Sie sich beeilen, eine Frist einzuhalten, ist die PM schuld. Mach es richtig, mach es einmal und mach es ruhig und richtig. Das Leben ist zu kurz für alles andere.

Philip
quelle
2

Alle anderen Antworten hier sind gut. Ich möchte jedoch hinzufügen, dass Sie als Entwickler des Projekts der Verwalter (Beschützer) des Designs sind.

Wenn Sie sich nicht für die richtige technische Lösung einsetzen, verspreche ich Ihnen niemand anderes. Sie sollten sich immer dafür einsetzen, dass Sie Ihrem Chef den richtigen Weg weisen, und der Premierminister sollte sich immer für den Abgabetermin aussprechen.

Wenn Sie sich in einer vernünftigen Organisation befinden, wird hoffentlich ein Kompromiss erzielt, der hilft, die Fristen einzuhalten und gleichzeitig nicht zu weit vom Design entfernt zu sein.

Wenn dies gesagt wird, gehe nicht davon aus, dass die Welt untergeht und das Projekt scheitert, wenn die Deadline des Premierministers nicht erreicht wird. Normalerweise ist es nicht so schwarzweiß, und die Frist für die PM ist in den meisten Fällen weich und es besteht Raum für Anpassungen.

Fast jede Frist, unter der ich jemals einen PM-Zeitplan hatte, war größtenteils künstlich. Sie verteidigen es mit aller Kraft und tun so, als ob es anders wäre, denn wenn der Ministerpräsident die Frist überschreitet, dann SIEHT der Ministerpräsident SCHLECHT aus!

Nur weil die PM schlecht aussieht, heißt das noch lange nicht, dass das Projekt gescheitert ist. Wenn Sie das verstehen, werden Sie überrascht sein, wie viel Sie eine PM zum Biegen bringen können.

maple_shaft
quelle
1

Zitieren Sie den Kunden für das ordentliche Design. Wenn dieses Angebot für sie nicht akzeptabel ist, gehen Sie auf die Kosten für jede Komponente ein (in der Regel kosten == Entwicklungszeit). Lassen Sie sie nach Belieben "a la carte" ausziehen. Viele werden die Rasierpause für "nutzlose" Dinge wie Testen und Entwerfen nutzen. Erläutern Sie die Risiken dieses Ansatzes. Wenn Sie jedoch das Risiko akzeptieren, gehen Sie wie angegeben vor. Wenn ich nur genug Geld für ein Clunkerauto habe, werde ich ein Clunkerauto kaufen, auch wenn ich weiß, dass es wahrscheinlich in 8 Monaten kaputt sein wird. Ihr Kunde hat die Verantwortung, diese Risiken abzuwägen und die Konsequenzen zu akzeptieren.

Das einzige, was Sie nicht tun möchten, ist, dem Kunden zu sagen, dass er ein wunderschön gestaltetes Stück Software hat, wenn er nur für einen ungeprüften Müll bezahlt (und ihn erhalten) hat. Wenn etwas schief geht (was wahrscheinlich der Fall sein wird), sehen sie im ersten Szenario schlecht aus, aber im zweiten Szenario sehen Sie schlecht aus.

Morgan Herlocker
quelle
1

Es ist nie in Ordnung, aber manchmal muss man Kompromisse eingehen, um ein Projekt abzuschließen. Die traurige Realität ist, dass die meisten Geschäftsleute völlig unwissend sind und mehr als bereit sind, die Wartbarkeit später für etwas zu opfern. Der Trick besteht darin, zu wissen, wie man ein Gleichgewicht herstellt. Vielleicht ist das Projekt nicht so ordentlich wie es sein könnte, aber solange es kein Schweinestall ist, ist es ein würdiger Kompromiss.

Wayne Molina
quelle
0

Das hängt ganz von der Frage ab: "Wollen Sie oder jemand anderes sie möglicherweise später ändern?" Wenn ja, sollten Sie versuchen, ein "ordentliches" Design zu haben, da Sie sonst das Risiko eingehen müssen, alles wegzuwerfen und 6 Monate später erneut zu beginnen.

Natürlich kann man Ordentlichkeit zu weit führen, aber im Allgemeinen erspart ein bisschen Ordentlichkeit Ihnen später die Arbeit.

Jo-Herman Haugholt
quelle
4
Es gibt kein Produkt, das nicht gewartet werden muss, egal was der Kunde Ihnen sagt.
Edward Strange
@ crazy-eddie So ziemlich nein. Es war als geladene Frage gedacht; Ich kann mir nicht wirklich viele Fälle vorstellen, in denen Sie diese Frage mit "Nein" beantworten würden. Sogar ein Drehbuch, das nur für eine Sache gedacht war und nie wieder verwendet werden sollte, könnte möglicherweise später bearbeitet und überarbeitet werden.
Jo-Herman Haugholt