Im Bereich der Softwareentwicklung gibt es hĂ€ufig Thesen wie â
Niemand kĂŒmmert sich um Ihren Code â (Ăbersetzung - â
Ihr Code interessiert niemanden â), âCode ist nur ein Werkzeugâ und Situationen völliger MissverstĂ€ndnisse seitens des Unternehmens, warum wir uns Zeit nehmen sollten und Geld fĂŒr eine Art "Refactoring" des Codes, der bereits funktioniert.
Ich möchte Ihnen sagen, wozu die âBetonung von Merkmalenâ fĂŒhren kann, anstatt sich um die QualitĂ€t des Codes zu kĂŒmmern, und warum nicht nur Programmierer guten Code benötigen.
UnterstĂŒtzung
Die Hauptthese, ohne die der aktuelle Artikel grundsÀtzlich bedeutungslos wÀre:
Was in der Programmierwelt seit Jahrzehnten passiert, um fortgeschrittenere Sprachen, Paradigmen und AnsĂ€tze zu entwickeln, fĂŒr die sie verschiedene Vorlagen unterscheiden und sich um das Code-Design kĂŒmmern, sind in der Tat zwei Dinge - die Geschwindigkeit der Entwicklung zu erhöhen und die UnterstĂŒtzung der Codebasis zu erleichtern (welche im Wesentlichen die Geschwindigkeit der Entwicklung neuer Funktionen).
Und das sind die Dinge, die das GeschÀft braucht.
Man kann natĂŒrlich argumentieren, dass sie selbst die Methoden benötigen, die die Effizienz der Arbeit der Programmierer erhöhen, um ihre Arbeit teurer zu verkaufen und mehr pro Zeiteinheit leisten zu können, aber weil die Situation, in der Programmierer sofort ein groĂes abgeschlossenes Projekt bestellen, ohne dass weitere UnterstĂŒtzung erforderlich ist, sehr groĂ ist Es ist selten und in der Regel wird die FunktionalitĂ€t schrittweise bestellt. Zu Beginn des Projekts werden Sie die schĂ€dlichen Auswirkungen eines schlechten Designs nicht spĂŒren. Es ist eher eine Investition in die Zukunft.
Es gibt ein Bild aus Martin Fowlers
Blog zu diesem Thema, das die Geschwindigkeit der EinfĂŒhrung neuer Funktionen in das Projekt in AbhĂ€ngigkeit von seiner Existenzzeit (d. H. Wie groĂ es ist) zeigt.

Die horizontale Achse ist die Projektlebensdauer, die vertikale Achse ist die AggregatfunktionalitÀt.
Die rote Linie zeigt die Entwicklungsgeschwindigkeit eines Projekts mit einem guten Design, und die blaue Linie zeigt ein Projekt, das ohne EinschrÀnkungen in Form von Anforderungen an die QualitÀt des Codes geschrieben wurde.
Wenn Sie also der Meinung sind, dass Ihre Anwendung zum Scheitern verurteilt ist und sich nicht entwickeln wird oder sich ausschlieĂlich auf ein bevorstehendes Ereignis vorbereitet, mĂŒssen Sie nicht ĂŒber das Design des Systems nachdenken. In der gegenteiligen Situation zahlt sich ein gutes Design wahrscheinlich aus und zahlt sich oft aus.
Manchmal kann man die Meinung hören, dass man zu Beginn eines Projekts nicht ĂŒber die QualitĂ€t des Codes nachdenken und ihn nach einer erfolgreichen PrĂ€sentation fĂŒr Kunden / Investoren erneut schreiben muss. In den allermeisten FĂ€llen ist dies jedoch ein Fehler beim Starten von Projekten und der einfachste Weg, um ĂŒber Jahre hinweg
technische Schulden zu verdienen.
Code ist kein Werkzeug, Code ist ein Endprodukt
Ein
Softwareunternehmen verwendet keinen Code als Werkzeug. Dies ist das Hauptprodukt des Unternehmens. Es ist der endgĂŒltige Code des Programms, der die QualitĂ€t, Geschwindigkeit und Einhaltung der Anforderungen an die FunktionalitĂ€t bestimmt. Es kann nicht einfach genommen und vollstĂ€ndig ersetzt werden, ohne vorĂŒbergehende und materielle Verluste zu verursachen, wie dies bei Computer- / IDE- / Entwicklungsmethoden der Fall sein könnte, bei denen es sich im Wesentlichen um Werkzeuge zur Erstellung eines Produkts handelt.
Ăber "Fokus auf Leistung"In dem Artikel, auf den ich mich bezog, wurde der folgende Gedanke geĂ€uĂert: Sie mĂŒssen mit dem Kunden / Projektmanager auf der Ebene der Projektbereitschaft kommunizieren, und das folgende Beispiel war das Gegenteil:
Stellen Sie sich vor, der Designer erzÀhlt Ihnen von den Ebenen, die er in Photoshop verwendet hat, wie viele Objekte er dort hat, welche VerlÀufe auf welchen Pinseln verwendet werden und welche coolen Animationsskripte er geschrieben hat. Es interessiert dich nicht. Interessieren Sie sich, ob es bereits möglich ist, Bilder aufzunehmen.
Also. Es gibt einen Unterschied, aufgrund dessen es
nicht einfach mit der UnterstĂŒtzung eines Softwareprodukts auf die Situation projiziert werden kann: Alle diese Ebenen und Pinsel in Photoshop werden unmittelbar nach dem Ergebnis der Arbeit (Bilder) fĂŒr niemanden unnötig und sind dennoch ein Werkzeug, um das Ergebnis zu erzielen , nicht das Endprodukt.
Daher kann sich der Kunde bei der Erstellung der Anforderungen fĂŒr die endgĂŒltigen Bilder keine Gedanken darĂŒber machen, was in dem Prozess verwendet wird. Wenn der Kunde (Unternehmen) im Fall von Software nur Funktionen von der Anwendung verlangt, lĂ€uft er Gefahr, genau das zu erhalten, was er wollte - neue Funktionen, aber es stand auĂer Frage, dass diese gewartet und weiterentwickelt werden mĂŒssten.
Leider ist dies ein ziemlich hĂ€ufiges Problem beim Outsourcing, wenn ein Unternehmen nur die Zeit seiner Entwickler verkauft und Kunden die QualitĂ€t des Systems und die zur Lösung seiner Probleme erforderliche Zeit nicht objektiv bewerten können. Wenn die Kosten fĂŒr die Ănderung des Codes exponentiell steigen, kommt dies nur dem Unternehmen selbst gegenĂŒber dem Outsourcer zugute - mehr Arbeitsstunden können monetarisiert werden, und das Unternehmen, das das Produkt bestellt, ist bereits am Haken -, um das sperrige und unpraktische System neu zu schreiben, da es enorme Investitionen erfordert und die Bereitstellung neuer Funktionen stoppt das kann nicht erlaubt werden.
Code - der Arbeitsplatz des Programmierers
WĂ€hrend der gesamten Zeit, in der der Artikel in Entwurfskopien verfasst war, dachte ich viel darĂŒber nach, ob dieser Artikel darin enthalten sein sollte, aber nach ein wenig Beobachtung der PrioritĂ€ten von Kandidaten, die Arbeit suchen, wurde mir klar, dass dieser Moment wirklich wichtig ist.
Code ist etwas, mit dem ein Programmierer jeden Tag arbeiten muss, sein kreatives Produkt, was er erstellt, aber nicht nur eines, sondern in einem Team und oft nicht von Grund auf neu. Er muss den bereits vorhandenen Teil des Projekts akzeptieren und ihn auf der Grundlage der zuvor geschriebenen FunktionalitÀt entwickeln. Ein Mitarbeiter wird höchstwahrscheinlich unangenehm sein, in einem Produkt zu arbeiten, das schlecht erstellt wurde.
Meiner Meinung nach arbeitet in erster Linie das Team an dem Projekt zusammen. Die QualitÀt des resultierenden Produkts hÀngt direkt davon ab, wie die Teamarbeit aufgebaut ist, von den internen Regeln und den darin festgelegten Anforderungen.
An zweiter Stelle steht die Technologie. Ein gedankenlos ausgewĂ€hltes oder ererbtes unbequemes Framework, veraltete und qualitativ minderwertige Tools, Bibliotheken, die mit all ihren KrĂŒcken und Fehlern, die Sie in Kauf nehmen mĂŒssen, an den Projektort genagelt sind, und der Mangel an Personen mit ausreichenden Kompetenzen und Zeit, um Ă€ltere AnsĂ€tze zu beseitigen, können leicht neue Potenziale abschrecken Arbeiter. ZusĂ€tzlich zu den oben genannten GrĂŒnden ist dies auch eine geringere Anzahl von Perspektiven und Möglichkeiten fĂŒr die Entwicklung von Programmierern, da anstelle des Studiums moderner und effektivster Werkzeuge Requisiten entwickelt werden mĂŒssen, um Lösungen aus aktuellen GrĂŒnden an aktuelle Probleme anzupassen.
Warum ist das alles?
Leider können die Anforderungen fĂŒr reale Anwendungen selten zu 100% gebildet werden und mĂŒssen wĂ€hrend der Entwicklung nicht ĂŒberarbeitet werden. DarĂŒber hinaus ist die Situation fast unmöglich, wenn das Projekt nach dem Start nicht an neue Anforderungen angepasst werden muss. Das GeschĂ€ft expandiert, entwickelt sich, erfordert Funktionen, die zuvor nicht besprochen wurden, und betritt neue MĂ€rkte.
Es ist fast unmöglich, eine Architektur zu bauen, die unter solchen Bedingungen ideal und bis ins kleinste Detail durchdacht ist, und oft besteht keine Notwendigkeit, da ihre Kosten in diesem Fall fĂŒr die Anfangsphase des Projekts unangemessen hoch sind.
Sicherlich sollte das Schreiben von gutem Code keine Kopfschmerzen fĂŒr diejenigen sein, die Software bei Programmierern bestellen, und es ist unwahrscheinlich, dass jeder, der sie nicht schreiben kann, sie ĂŒberprĂŒfen kann.
Dennoch muss ein Unternehmen, das ein Softwareprodukt entwickelt, wenn es es qualitativ herstellen möchte, verstehen, dass ein so wichtiger Teil des Produkts wie sein Quellcode seinen Erfolg direkt beeinflusst, und Dinge wie die Umgestaltung des Quellcodes und die Anpassung der Architektur an die neuen Anforderungen sollten dies auch tun ein Budget sein, sollte Programmierer Zeit zugewiesen werden. Wenn sich jemand fĂŒr die QualitĂ€t des Produkts interessiert, natĂŒrlich.
Die IT-Branche entwickelt sich jedoch, Produkte, Unternehmen und Tools entwickeln sich, Benutzer werden selektiver, der Wettbewerb nimmt zu und es besteht die Hoffnung, dass die Zukunft weiterhin mit qualitativ hochwertigen Produkten verbunden sein wird.
Fazit
TatsĂ€chlich ist das Thema des Artikels natĂŒrlich sehr kontrovers.
Die obige Grafik beantwortet nicht die Frage, zu welchem ââZeitpunkt sich das Design des Systems auszahlt.
Technische Schulden dafĂŒr und Schulden, die es Ihnen ermöglichen, jetzt etwas mehr Zeit zu haben und sie spĂ€ter mit Zinsen zurĂŒckzugeben. Das Hauptproblem ist Ă€uĂerst einfach und Ă€hnelt stark einem Ă€hnlichen PhĂ€nomen in der Wirtschaft. Es ist die UnfĂ€higkeit, Schulden abzuzahlen, und die UnfĂ€higkeit, zukĂŒnftige Einnahmen genau abzuschĂ€tzen.
Die QualitÀt des Codes ist ebenfalls sehr subjektiv und leider praktisch nicht formalisiert, da sonst die Programmierer bereits durch Roboter ersetzt werden könnten.
In jedem Fall ist es das Wichtigste, kompetente Kompromisse zu erzielen und den Mittelweg zu finden, der es uns ermöglicht, das Projekt bei der Verfolgung der FunktionalitĂ€t nicht in der technischen Verschuldung zu ertrĂ€nken und den Wettbewerbern keine interessante Nische zu ĂŒberlassen, indem wir Systemdesign statt FunktionalitĂ€t betreiben.