Captain Offensichtlich zur Rettung!
Ich werde hier Captain Obvious sein und sagen, dass es einen Mittelweg gibt, der gefunden werden kann.
Sie möchten für die Zukunft bauen und sich nicht auf eine technologische Entscheidung oder ein schlechtes Design festlegen. Sie sollten jedoch nicht 3 Monate damit verbringen, etwas zu entwerfen, das einfach sein sollte, oder Erweiterungspunkte für eine schnelle und schmutzige App hinzufügen, die eine Lebensdauer von 2 Jahren hat und wahrscheinlich keine Folgeprojekte hat.
Es ist schwierig, den Unterschied zu finden, da Sie den Erfolg Ihres Produkts nicht immer vorhersagen können und es später erweitern müssen.
Fürs Erste bauen, wenn ...
- Das Projekt wird ausrangiert
- Das Projekt hat eine kurze Lebensdauer
- Das Projekt sollte keine Erweiterungen haben
- Das Projekt hat keinen Risikoauswirkungswert (hauptsächlich in Bezug auf das Image)
Im Allgemeinen sollten für den Moment Inhouse-Projekte oder etwas, das für einen Kunden gebaut wurde, entwickelt werden. Stellen Sie sicher, dass Sie klare Anforderungen haben, und beziehen Sie sich nach Bedarf darauf, um zu wissen, was benötigt wird und was nicht. Sie möchten nicht zu viel Zeit mit etwas verbringen, das "schön zu haben" ist. Aber codiere auch nicht wie ein Schwein.
Lassen Sie das allgemeine Problem für später, falls es jemals notwendig und die Mühe wert sein sollte:
Bauen für die Zukunft, wenn ...
- Das Projekt wird öffentlich sein
- Das Projekt ist eine Komponente, die wiederverwendet werden muss
- Das Projekt ist ein Sprungbrett für andere Projekte
- Das Projekt wird Folgeprojekte oder Service-Releases mit Verbesserungen enthalten
Wenn Sie für etwas Öffentliches bauen oder das in anderen Projekten wiederverwendet wird, ist die Wahrscheinlichkeit sehr viel höher, dass Sie von einem schlechten Design heimgesucht werden, und Sie sollten dem mehr Aufmerksamkeit schenken. Dies ist jedoch nicht immer garantiert.
Richtlinien
Ich würde sagen, halten Sie sich so gut wie möglich an die folgenden Grundsätze, und Sie sollten sich in die Lage versetzen, effiziente und anpassungsfähige Produkte zu entwerfen:
- weiß, dass YAGNI ,
- KISS ,
- Schreiben Sie es auf, wenn Sie Lust auf Juckreiz haben und sich eine Ergänzung überlegen. Schauen Sie sich Ihre Projektanforderungen noch einmal an und fragen Sie sich, ob Ergänzungen Vorrang haben oder nicht. Fragen Sie, ob sie den primären Geschäftswert steigern oder nicht.
Ich weiß, dass ich persönlich dazu neige, nachzudenken und zu überdenken. Es ist wirklich hilfreich, Ideen aufzuschreiben und sehr oft darüber nachzudenken, ob ich zusätzliche Funktionen benötige. Oft lautet die Antwort "Nein" oder "es wäre später cool". Diese letzten Ideen sind gefährlich, weil sie in meinem Hinterkopf bleiben und ich mich zwingen muss, sie nicht zu planen.
Der beste Weg, Code zu schreiben, ohne zu überarbeiten und ohne sich für später zu blockieren, besteht darin, sich auf ein gutes minimales Design zu konzentrieren. Brechen Dinge nach unten schön wie Komponenten , die Sie später erweitern können, aber ohne denken bereits darüber , wie sie können später erweitert werden. Sie können die Zukunft nicht vorhersagen.
Bauen Sie einfach einfache Dinge.
Dilemmata
Überentwicklung
Ist dies ein Trend, dem Programmierer normalerweise folgen, wenn sie ein Projekt wie dieses durchführen?
Hölle ja. Es ist ein bekanntes Dilemma und zeigt nur, dass Sie sich für das Produkt interessieren. Wenn nicht, ist das besorgniserregender. Es besteht Uneinigkeit darüber, ob weniger immer wirklich mehr und ob schlechter immer wirklich besser ist . Du bist vielleicht ein Typ vom MIT oder aus New Jersey . Hier gibt es keine einfache Antwort.
Prototyping / Quick-n-Dirty / Weniger ist mehr
Ist es ein typischer Trend, einfach so schnell wie möglich ein brauchbares Beispiel herauszubringen?
Es ist eine weit verbreitete Praxis, aber es ist nicht so, wie die überwiegende Mehrheit der Projekte angegangen wird. Trotzdem ist Prototyping meiner Meinung nach ein guter Trend, aber einer mit einem kleinen Nachteil. Es kann verlockend sein, schnelle und schmutzige Prototypen für tatsächliche Produkte zu fördern oder sie als Basis für tatsächliche Produkte unter Managementdruck oder Zeitbeschränkungen zu verwenden. Dann kann das Prototyping zurückkehren und Sie verfolgen.
Das Prototyping bietet offensichtliche Vorteile , aber auch ein großes Potenzial für Missbrauch und Missbrauch (viele davon sind genau umgekehrt zu den zuvor aufgeführten Vorteilen).
Wann sollte Prototyping eingesetzt werden?
Es gibt Hinweise zu den besten Projekttypen für die Verwendung von Prototypen :
[...] Prototyping ist am vorteilhaftesten in Systemen, die viele Interaktionen mit den Benutzern haben.
[...] Prototyping ist sehr effektiv bei der Analyse und dem Entwurf von Online-Systemen, insbesondere für die Transaktionsverarbeitung, bei der die Verwendung von Bildschirmdialogen viel deutlicher wird. Je stärker die Interaktion zwischen Computer und Benutzer ist, desto größer ist der Nutzen [...]
"Eine der produktivsten Anwendungen des Rapid Prototyping war bisher das iterative User Requirements Engineering und das Design von Mensch-Computer-Schnittstellen."
Auf der anderen Seite:
Systeme mit geringer Benutzerinteraktion, z. B. Stapelverarbeitung oder Systeme, die hauptsächlich Berechnungen ausführen, profitieren nur wenig vom Prototyping. Manchmal ist die für die Ausführung der Systemfunktionen erforderliche Codierung zu intensiv und die potenziellen Vorteile, die Prototyping bieten kann, sind zu gering.
Und wenn Sie ein grünes Monster in der Nähe haben, stellen Sie sicher, dass Sie einen Prototypen im Budget behalten ...