Sollte ich eine voll funktionsfähige oder eine reine Anwendung erstellen und dann langsam Funktionen hinzufügen?


11

Ich arbeite in einer Produktionsstätte, die die IT mit der Erstellung eines Fertigungsplanungsprogramms beauftragt hat (das sehr dringend benötigt wird). Basierend auf den Erfahrungen anderer ist es besser, sich weniger Zeit zu nehmen und ein grundlegendes Framework zu erstellen, das verwendet werden kann, und darauf aufzubauen, indem Funktionen hinzugefügt werden, oder zunächst eine vollständig implementierte Lösung zu erstellen. Ich bin erst seit ungefähr einem Jahr Entwickler und habe nicht viel Erfahrung mit der ersten Erstellung von Apps dieser Größe. Ich habe mich der Idee zugewandt, dass eine Barebone-App aufgrund des extremen Bedarfs an digitalem Zeitplan der erste Weg ist, bin aber besorgt, dass das Hinzufügen zufälliger Funktionen nachträglich etwas chaotisch werden könnte. Wenn Sie sich in derselben Situation befänden, zu welchem ​​Weg würden Sie sich neigen?



3
Vergessen Sie in diesem Zusammenhang das Framework. Erstellen Sie eine App, kein ausgefallenes Framework.
KeuleJ

2
Egal was Sie tun, Sie werden es letztendlich Stück für Stück bauen. Bauen Sie das "Framework" auf, was hoffentlich etwas anderes bedeutet, als ein Framework zu schreiben, während Sie gehen. Die Frage ist, ob Sie so schnell wie möglich freigeben und Feedback geben sollen. Dies ist normalerweise der bessere Weg. Auch keine Beleidigung für Sie, Sie sollten wahrscheinlich vorschlagen, dass sie einen erfahrenen Entwickler hinzuziehen, um mit einer App dieser Größe zu helfen. Was auch immer sie wollen, sie denken wahrscheinlich, dass es schneller und billiger gemacht werden kann als es sein kann.
Xenoterracide

Antworten:


29

Erfahrung führt definitiv dazu, etwas Kleines und Einfaches zu bauen und es so früh wie möglich an die Benutzer zu bringen. Fügen Sie Funktionen hinzu, die von den Benutzern angefordert werden.

Die Chancen stehen sehr gut (an bestimmte Grenzen grenzend), dass das, was sie wollen / verlangen, nicht dem ähnelt, was Sie (wenn überhaupt) sehr selbst gebaut hätten.

Was die Dinge betrifft, die beim Hinzufügen zu Ihrer ursprünglichen Anwendung chaotisch werden: Aus diesem Grund legen Agile (und die meisten ähnlichen Methoden) großen Wert auf das Testen und Refactoring. Refactoring bedeutet, den Code zu bereinigen, während Sie Änderungen vornehmen, und eine solide Testsuite (die Sie jedes Mal ausführen, wenn Sie Änderungen vornehmen) stellt sicher, dass Sie (wenn) wenn Sie Fehler einführen, diese (fast) sofort kennen, sodass Sie etwas freigeben, wenn Sie etwas veröffentlichen Ihren Benutzern haben Sie eine hinreichende Sicherheit, dass es tatsächlich funktioniert.


Sehr guter Punkt mit der Unterscheidung zwischen dem, was sie verlangen und brauchen und dem, was wir denken, dass sie tun. Ich denke, das größte Zögern, über das ich nachgedacht habe, war, dass sich zwischen dem Zeitpunkt, an dem sie uns sagen, was sie wollen, und dem Zeitpunkt, an dem wir eine Lösung finden, ihre Wünsche vollständig ändern. Aber ich denke, klein und einfach ist definitiv einfacher zu ändern als voll ausgestattet.
Kyle Vancamp

2

Haben Sie eine Idee, ob sie es mit der App ernst meinen, dann möchten Sie möglicherweise keine Frameworks usw. usw. erstellen.

Sie müssen jedoch ein Gleichgewicht finden. Die agile Entwicklung empfiehlt, dass Sie sich zu diesem Zeitpunkt auf die Anforderungen der App konzentrieren. Dies bedeutet jedoch nicht, dass Sie sich einschränken müssen, indem Sie das grundlegende Design vernachlässigen. Es gibt Dinge, die leicht als kommen angesehen werden können (und ja, Erfahrung spielt hier eine Rolle) und andere, die Sie sich derzeit nicht vorstellen können (ich bin mir ziemlich sicher, dass die Leute, die nach der App gefragt haben, sie sich auch nicht vorstellen können).

Ich kenne die Details der Planungs-App nicht, aber ich kann mir vorstellen, dass die "Art der Termine" etwas ist, auf das Sie bald stoßen werden. Vielleicht fragen die Leute jetzt nicht danach, es ist nicht vernünftig, solche Funktionen zu erwarten.

Ich würde diesen Fall wie folgt angehen: Ich würde die Infrastruktur (das von Ihnen erwähnte Framework) erstellen, indem ich eine Tabelle in der Datenbank für Termintypen erstelle, aber ich würde mir nicht die Mühe machen, die Schnittstelle zum Hinzufügen oder Auswählen der Typen zu erstellen. Ich würde einen Basistyp hart codieren und mit den eigentlichen Funktionen fortfahren. Schließlich hat niemand darum gebeten, verschiedene Arten von Terminen aufzunehmen.

Wenn in Zukunft Leute zu Ihnen zurückkehren und nach dieser Funktion fragen, haben Sie die Struktur und bauen einfach das Mid / Front-End.


2

Oft verfügen Sie nicht über genügend Informationen, um ein zunächst vollständiges Programm zu erstellen. Tests und Kundenfeedback zeigen fast immer Teile Ihres ursprünglichen Designs, die nicht so gut waren wie theoretisch.

Das heißt, wenn das Problem gut verstanden ist und Sie können zunächst ein komplettes Programm schreiben, das ist besser , weil sonst sind Sie ständig den Code Refactoring und das Ergebnis ist selten so sauber wie eine solide Konstruktion , die von Anfang an verfolgt.

Zumindest denke ich, dass es wichtig ist, über die Art der Funktionen nachzudenken, die Ihr Programm möglicherweise benötigt. Auf diese Weise können Sie es so gestalten, dass solche Funktionen problemlos in die vorhandene Struktur eingefügt werden können.


1

Aus persönlicher Erfahrung: Erstellen Sie Ihr MVP (Minimum Viable Product) und fügen Sie dann basierend auf dem erhaltenen Feedback Funktionen hinzu. Es ist einfach, Tonnen von Funktionen zu erhalten und sie von niemandem verwenden zu lassen.

Wichtig ist auch die Benutzererfahrung, mit der Sie das Problem lösen. Überprüfen Sie den Workflow, den Sie mit Ihren tatsächlichen Benutzern erstellen, und fügen Sie dann weitere Funktionen hinzu. Auf diese Weise können Sie sich auf den Kernwert konzentrieren, den Sie aufbauen.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.