Richtige Mischung aus Planung und Programmierung für ein neues Projekt

10

Ich bin dabei, ein neues Projekt zu starten (ein Spiel, aber das ist unwichtig). Die Grundidee ist in meinem Kopf, aber nicht alle Details.

Ich möchte nicht ohne Planung mit dem Programmieren beginnen, aber ich kämpfe ernsthaft gegen meinen Drang, es einfach zu tun. Ich möchte vorher etwas planen, um zu verhindern, dass die gesamte App umgestaltet wird, nur weil eine neue Funktion, die mir einfällt, dies erfordert. Andererseits möchte ich nicht mehrere Monate (Freizeit) einplanen und damit beginnen, weil ich befürchte, dass ich in dieser Zeit meine Motivation verlieren werde.

Was ich suche, ist eine Möglichkeit, beides zu kombinieren, ohne dass das eine das andere dominiert. Sollte ich das Projekt in der Art von Scrum realisieren? Soll ich User Stories erstellen und diese dann realisieren? Soll ich funktionsgesteuert arbeiten? (Ich habe einige Erfahrung mit Scrum und der klassischen "Spezifikation zum Code" -Methode.)

Update : Wie wäre es, mit einem "Klick-Dummy" zu beginnen und die Funktionalität später zu implementieren?

WarrenFaith
quelle

Antworten:

5

Du bist auf dem richtigen Weg. Sie müssen nicht monatelang planen, aber Sie sollten auf jeden Fall einen Plan haben.

Die Planung hilft Ihnen dabei, Ihre Gedanken zu organisieren, Technologien zu identifizieren, die Sie möglicherweise benötigen, Probleme zu klären und Ihnen eine Roadmap zu geben, anhand derer Sie in messbare Ziele aufteilen können.

Darüber hinaus können Sie einige Tage planen, um festzustellen, dass dies Zeitverschwendung ist. Vielleicht stellen Sie bei der Planung fest, dass Sie aus Ihrer Liga herauskommen oder dass das, was Sie versuchen, nicht vermarktet werden kann. Es ist besser, das jetzt herauszufinden, damit Sie Ihre Zeit wieder in andere Ideen investieren können, die Sie haben, anstatt diesen Weg zu gehen, um sich im Wald zu verlieren, umgeben von fadenförmigen Code-Reben und Spuren fehlbarer Logik, die Ihr Gehirn verdreht in Knoten.

jmort253
quelle
Die Targeting-Plattform ist meine tägliche Arbeit, daher kenne ich die meisten Technologien, die ich verwenden möchte. Ich denke, ich werde einfaches Scrum und einen Grundplan verwenden. So kann ich mit einigen Rückständen beginnen und die Planung für jede Iteration durchführen.
WarrenFaith
Sie schreiben "Planung" immer wieder falsch. Ich dachte nur, ich würde darauf hinweisen, da ich Ihren Kommentar nicht bearbeiten kann :) Aber ja, ich denke, Scrum ist ein großartiger Ansatz, der Flexibilität bewahrt und Ihnen die Möglichkeit gibt, zu entscheiden, ob es sich überhaupt lohnt, das Projekt fortzusetzen.
jmort253
Oo Auf Deutsch ist es umgekehrt: Planen mit einem n und Programmieren mit zwei m ...: D Danke!
WarrenFaith
@ WarrenFaith - Entschuldigung! Das ist mein Ethnozentrismus! Vielen Dank für den Hinweis auf meinen Fehler;)
jmort253
11

Planen Sie das minimal lebensfähige Produkt und implementieren Sie es. Hören Sie dann Ihren Benutzern zu, planen Sie die nächste logische Erweiterung und implementieren Sie diese. Wiederholen.

Steven A. Lowe
quelle
3
.... und jedes Mal, wenn Sie eine Idee für etwas haben, das Sie für cool halten, schreiben Sie die Idee einfach in das Scrum-Backlog, implementieren Sie sie jedoch erst, wenn das minimal lebensfähige Produkt fertig ist.
K3B
Die Hauptfrage ist immer noch, wie tief ich es planen sollte. Wenn Sie mir auch diesen Rat geben könnten, hätten Sie die Antwort akzeptiert.
WarrenFaith
1
@WarrenFaith: Features - >> Geschichten - >> Testfälle.
Steven A. Lowe
4

Egal wie viel Zeit Sie für die Planung und Gestaltung Ihres Programms aufwenden, am Ende schreiben Sie ohnehin immer Teile davon neu. Es ist wie die Schwerkraft, nicht klug, ihre Existenz zu leugnen.

Man muss erkennen, dass Refactoring ein normaler Teil der Entwicklung ist und es nur eine Frage der Entscheidung ist, wann Sie es tun. Warten Sie zu lange und Sie erhalten riesige Mengen Spaghetti, die Sie um ein vollständiges Umschreiben bitten. Nicht lustig.

Mein Vorschlag ist, ein wenig zu planen, aber so schnell wie möglich mit dem Codieren zu beginnen und Refactor, Refactor, Refactor, um den Code in Form zu halten. Das DRY-Prinzip (wiederholen Sie sich nicht) ist ein guter Indikator dafür.

Martin Wickman
quelle
Danke für deine Antwort. Ich weiß, dass Refactoring nichts Ungewöhnliches ist, aber ich möchte Refactoring nicht verhindern, das durch fehlendes Planen verursacht wird.
WarrenFaith
@Warren - Wenn Sie nicht planen, wird das Refactoring nicht verhindert. Sie können die Lösung entweder auf dem Computer codieren oder versuchen, sie in Ihrem Kopf oder auf Papier zu codieren. Ich denke, beide sind unwirksam. Starten Sie die Codierung, da Sie wissen, dass Sie sie später ändern werden.
Kevin Cline
@kevin cline: Ok, machen wir den Unterschied zwischen der Umgestaltung des vorhandenen Codes für neue Funktionen oder Verbesserungen und dem Umschreiben fast der gesamten App für eine neue Funktion. Ich kann mit dem ersten leben, nicht wirklich mit dem zweiten.
WarrenFaith
@WarrenFaith: Solange der Code eng und in Form ist, sollten Sie in der Lage sein, Umschreibungen zu vermeiden. Ich habe nur dann Umschreibungen gesehen, wenn das System zu einem großen Schlammball (kein Refactoring) oder zu einer grundlegenden technischen Änderung (Änderung der Plattform) geworden ist.
Martin Wickman
3

Wenn ich in dieser Position bin, benutze ich manchmal TDD (Test Driven Development) und plane einige Tests für den komplexesten Teil des Systems, das ich entwickle. Alternativ kann ich wieder einen Pseudocode auf hoher Ebene für die komplexesten Bereiche zusammenstellen. Ich finde, dieser Prozess gibt mir einen losen Aktionsplan und hilft mir zu identifizieren, welche Bereiche wahrscheinlich am zeitaufwändigsten sind.

Für mich funktioniert dieser Ansatz, weil er irgendwo zwischen Codierung und Planung liegt. Sobald Sie Ihre Testideen und / oder Ihren Pseudocode haben, können Sie jeden logischen Abschnitt durcharbeiten und den Code implementieren. Ich gehe oft zuerst den schwierigsten Teil einer vorgeschlagenen Lösung an, da normalerweise der schwierigste Teil das Kernmerkmal der Anwendung ist und Sie jederzeit alle Schnickschnack verzögern können.

Da Sie kommentieren, dass sich der größte Teil des Codes in Ihrem Kopf befindet und Sie bereit sind, einzutauchen und zu programmieren, können Sie sich mit diesem Ansatz auf jeden Abschnitt konzentrieren, ohne dass Ihr Geist vom gesamten System getrübt wird.

Um es kurz zu machen, könnte man sagen: "Den schwierigsten Teil zuerst angehen, teilen und erobern, mit Pseudocode und / oder TDD-Plänen"!

BradB
quelle
Ich bin kein Fan von TDD, aber trotzdem danke!
WarrenFaith
Ich sage nicht unbedingt "TDD verwenden", mein Punkt war, dass es etwas ist, das ich als Struktur verwende, um meinen Code zu "planen". Auf diese Weise springe ich nicht direkt in das Schreiben meines Codes und verbringe nicht viel Zeit damit, Massendokumente / Projektpläne zu schreiben, die etwas zu weit von der eigentlichen Codierung entfernt sind. Es geht darum, das glückliche Medium zu finden. Mit Stift und Papier können Sie im Prinzip dasselbe erreichen. Ich sollte auch darauf hinweisen, dass ich keinen Test für ALLES schreibe - nur für die komplexeren Bereiche.
BradB
3

Versuchen Sie einfach, den Code modular zu gestalten. Alles andere, was Sie planen, wird wahrscheinlich bei der nächsten Iteration verworfen.

davidk01
quelle
2

Ich würde empfehlen, zumindest Ihre Ideen aufzuschreiben. Abhängig von der Größe des Projekts ist möglicherweise keine formelle Planung erforderlich. Wenn es jedoch überhaupt sehr groß ist, möchten Sie sich vielleicht Kopfschmerzen ersparen und ein paar Tage mit einer eingehenderen Planung verbringen.

Kenneth
quelle