Sie nennen es aus einem bestimmten Grund die Real World ™.
99% von dem, was Sie in der realen Unternehmenswelt antreffen, werden als Mist betrachtet, und das aus gutem Grund, den ich erklären werde. Die 1%, die nicht als Mist angesehen werden, werden irgendwann Mist.
# 1 Code schreiben, # 2 ????, # 3 Profit!
Unternehmen, die als erstes existieren, um Profit zu machen, existieren nicht , um Berge von perfekt theoretisch sauber gestalteten und makellosen akademischen Codes zu generieren, die in goldenen Aufbewahrungsorten der Perfektion untergebracht sind. Nicht einmal in der Nähe, nicht einmal diejenigen, die von ihnen produzierten Quellcode verkaufen.
In der Geschäftswelt ist Code ein Mittel zum Zweck . Wenn ein Code ein Geschäftsproblem löst und mehr Geld verdient, als es kostet, ihn zu erstellen und zu warten, ist er für das Geschäft wünschenswert. Das Schreiben von Code durch Sie ist nur eine Möglichkeit für das Unternehmen, Code zu erhalten.
Theorie 0 - Übung ∞
Im Idealfall sollte die Wartung ein größeres Problem darstellen, ist es aber normalerweise nicht, da sie sich kurzfristig nicht finanziell auszahlt. Auf lange Sicht hat Software normalerweise einen relativ kurzen Lebenszyklus, insbesondere webbasierte Anwendungen. Sie werden schnell überholt und häufiger neu geschrieben.
In-House-Geschäftsanwendungen sind solche, die aufgrund vieler dynamikbasierter Gründe als endlose Zombie-Projekte angesehen werden. Diese Projekte sind tatsächlich Erfolge, die sie fortsetzen, weil sie das Geschäft weiterhin gewinnbringend machen.
In der Theorie gibt es keinen Unterschied zwischen Theorie und Praxis. In der Praxis gibt es. - Yogi Berra
In der Theorie sollten perfekt strukturierte, absolut saubere, unberührte Codebasen mit 100% Codedeckung den Unternehmen Geld sparen. In der Praxis kommt es nicht einmal annähernd zu einer Rendite, die sich rechnet.
Physik des Software-Lebenszyklus
In der Welt der Software wirkt außerdem eine überaus mächtige Entropiekraft. Es ist ein schwarzes Loch der Unvermeidlichkeit, das jede Software dazu verurteilt , zu einem großen Schlammball zu degenerieren .
Je weiter Sie von einem BBM entfernt sind , desto besser, aber jedes Softwaresystem wird irgendwann genug Zeit haben, um dorthin zu gelangen. Wie schnell Sie sich 100% Entropie nähern, hängt davon ab, wo Sie anfangen und wie schnell Sie technische Schulden machen und wie hoch die Zinsen dafür sind.
Softwaresysteme degenerieren und verrotten aufgrund von Wartung, nicht aufgrund des Fehlens. Ein seit Jahren bestehendes System, bei dem sich per Definition kein Code ändert, erfüllt alle seine Anforderungen und Ziele und ist ein Erfolg.
Es sind die Systeme, die einen ständigen Wandel erfordern, weil sie näher an der maximalen Entropie begonnen haben. Sie werden ständig angestoßen und angestoßen, und es ist die Aufrechterhaltung , die den negativen Wandel beschleunigt.
Gut genug ist gut genug
Short-Lifecycle-Systeme wie Websites, die sich ständig ändern, profitieren nicht von einer hohen Codeabdeckung von 100% in Unit-Tests, da die Amortisationszeit zu kurz ist, um die Kosten amortisieren zu können.
Systeme mit langem Lebenszyklus wie die oben genannten internen Geschäftsanwendungen profitieren auch nicht wirklich von massiven Investitionen in 100% -Code-Coverage-Unit-Tests, da die Änderungsrate über die Laufzeit des Projekts einer Konstante nahekommt, die in a nahe Null liegt nichtlineare Mode.
Aus diesem Grund sind Pläne für das Ende der Lebensdauer wichtiger, und Ersatzsysteme sollten so geplant werden, wie sie gerade veröffentlicht werden, und nicht erst, wenn sie einige Jahre vorüber sind und nicht mehr unterstützt werden können. Daher muss ein neues System schnell eingeführt werden.
Sie unterrichten nicht über BBM, soweit ich weiß, ich habe noch nie einen CS-Absolventen getroffen, der wusste, was es war, geschweige denn, warum es passiert.
Deshalb ist gut genug gut genug , mehr oder weniger nicht.
Software Slumlords
Es gibt Immobilienslumherren aus einem bestimmten Grund, sie machen einen Gewinn mit den heruntergekommenen Barackengebäuden, die sie besitzen. Sie machen mehr Gewinn, als sie für die inkrementelle Instandhaltung des heruntergekommenen Eigentums ausgeben. Wenn nicht, würden sie das Gebäude abreißen und ersetzen. Dies ist jedoch nicht der Fall, da die zusätzlichen Kosten weitaus geringer sind als die Instandsetzung oder der Austausch des gesamten Gebäudes. Es gibt auch Kunden (Mieter), die bereit sind, für heruntergekommene Immobilien zu zahlen.
Kein Gebäudeeigentümer, kein Slumherr oder kein Slumherr wird Geld für ein Grundstück ausgeben, nur weil ein akademischer Begriff der Perfektion nicht zu einem erheblichen Gewinn über den damit verbundenen Kosten führt.
Kein Kunde zahlt für Upgrades eines für ihn akzeptablen Softwaresystems. Kein Unternehmen wird Geld dafür ausgeben, nur Code zu schreiben und neu zu schreiben, ohne dass ein substantieller Gewinn erzielt wird.
Microsoft ist der dominanteste und erfolgreichste Software-Slumlord, den es gibt. Windows wurde erst vor kurzem grundlegend überarbeitet. Und sie haben immer noch nicht den gesamten Legacy-Code aus dem Kernel entfernt. Es macht für sie keinen geschäftlichen Sinn, die Menschen sind mehr als bereit, die niedrigen Erwartungen zu akzeptieren, die sie sich in den letzten zehn Jahren gesetzt haben.
Prognose
Dies war ein Muster für die über 20 Jahre, in denen ich in der Softwareentwicklung tätig war. Es wird sich in naher Zukunft nicht ändern. Dies ist nicht die Art und Weise, wie die Leute wollen, dass es aus einem Glaubenssystem heraus kommt, es ist eine Realität von externen Kräften in einem Unternehmen. Unternehmen treiben die Entscheidungsfindung voran, Gewinne sind nicht schlecht, sie zahlen Ihr Gehalt, kurzfristige oder langfristige Visionen sind irrelevant. Dies ist ein kurzfristiger Wirtschaftszweig, der sich per Definition ständig ändert. Wer dagegen argumentiert, profitabel zu sein, versteht das Geschäft nicht.
Ich habe 15 Jahre lang beraten und sehr schnell gelernt, dass gut genug ist , alles andere kostet mich Geld. Ja, ich wollte, dass die Dinge perfekt sind, aber wenn Sie nicht eine Codebasis verkaufen, die 99,99999% der Zeit, in der Sie eine Lösung verkaufen , verloren geht, haben Sie nur Ihre Zeit verschwendet, die Ihnen niemals erstattet wird .
Fortschritt und Hoffnung
Agile Methoden sind zumindest philosophisch ein guter Schritt in die richtige Richtung. Sie begegnen dem Chaos und dem ständigen Wandel als erstklassiger Bürger und akzeptieren es. Sie lehnen dogmatische Praktiken ab und erkennen an, dass sich die Methoden und Praktiken sowie die Anforderungen und Technologien ändern sollten.
Sie akzeptieren die Entropie, die durch Zeitmangel oder veränderte Anforderungen, veränderte Mitarbeiter und die Lebendigkeit eines Softwaresystems mit dem Konzept der technischen Verschuldung eingeführt wird.
Aber Agile ist kein Allheilmittel, es wird die grundlegenden Gesetze der Physik nicht ändern und Code-Basen werden trotzdem verrotten. Es ist Sache des Managements, den Umgang mit der Fäule zu planen, bevor sie völlig außer Kontrolle gerät und nicht mehr zu bewältigen ist.
Agil, wenn es richtig gemacht wird, hilft es, die Entropie zu verwalten, zu verlangsamen, zu verfolgen, zu messen und auf geplante Weise damit umzugehen. Es wird es nicht aufhalten!
Berufliche Entscheidung
Wenn dies ein echtes philosophisches Problem für Sie ist, sollten Sie wahrscheinlich andere Berufswahlen in Betracht ziehen, da die Art und Weise, wie die Dinge funktionieren, einen stichhaltigen geschäftlichen Wert hat. Open Source-Projekte haben keine bessere Erfolgsbilanz und in vielen Fällen ist der Code sogar schlechter als die meisten Unternehmenscodes, die ich gesehen habe.