Was ist, wenn ich keine guten Ideen zur Implementierung eines Features habe? [geschlossen]

32

Ich arbeite an meiner eigenen Bewerbung und stecke fest. Ich muss eine Funktion implementieren, kann aber keinen guten Ansatz finden, um diese Funktion zu implementieren. Ich habe ein paar Tage darüber nachgedacht, und es kamen keine guten Gedanken. Das Durchsuchen des Internets hat mich nicht inspiriert.

Ich muss weitermachen, aber ich möchte wissen, was das Beste ist:

  • Denken Sie mehr nach, warten Sie mehr und suchen Sie weiter nach dem besten Ansatz
  • Verschwenden Sie keine Zeit mehr und beginnen Sie mit einem schlechten Design

Was denkst du? Wie ich bereits sagte, arbeite ich an meiner eigenen Bewerbung. Ich habe keine Fristen, aber ich möchte die App so schnell wie möglich fertig codieren.

user21974
quelle
12
@gnat: Diese anderen Fragen befassen sich mit Situationen, in denen die Fragesteller bereits wissen, wie sie einige Funktionen sauber implementieren können, aber ein gutes Design opfern möchten, um "schnell und schmutzig" zu sein. Diese Frage beschreibt jedoch eine andere Situation, es geht im Allgemeinen um Problemlösung, wenn Sie keinen guten Ausgangspunkt finden, so ist es IMHO kein Duplikat.
Doc Brown
Hinweis: Wenn die App ein Erfolg ist, werden Sie sie nie "fertig codieren" und die Funktionen werden trotzdem neu gestaltet. Also würde ich es so gut wie möglich umsetzen.
Ren

Antworten:

41

Abgesehen davon, dass ich mit Leuten darüber spreche (die Frage deutet darauf hin, dass Sie keine Kollegen für das Projekt haben), empfinde ich es oft als einen guten Ansatz, mich auf die Dinge zu konzentrieren, die ich tun kann .

Normalerweise gibt es einen Teil des Codes, von dem ich weiß, dass ich ihn trotzdem schreiben muss. Das, was ich noch nicht schreiben kann, wird dann durch Stubs ersetzt, die entweder Dummy-Ergebnisse liefern oder eine Näherung verwenden, die gut genug ist, um den Rest zu testen.

So bleiben Sie produktiv. Und bis Sie das fehlende Teil implementieren müssen, haben Sie die Schnittstelle. Und Sie haben in derselben Problemdomäne eine Menge Code geschrieben, der mich bei der Generierung von Ideen unterstützt: Sie wissen genauer, was Sie ausgeben müssen und welche anderen Eingaben verfügbar sind, wenn dies zur Lösung des Problems beiträgt . Oft ist die Schlussfolgerung auch, dass das fehlende Stück nicht so umfassend sein muss, wie ursprünglich angenommen.

jdv-Jan de Vaan
quelle
6
Der Nachteil des letzten Schreibens des riskantesten und am wenigsten verstandenen Codes besteht darin, dass Sie möglicherweise feststellen, dass das Problem nicht oder nur mit erheblichen Änderungen an der Programmarchitektur gelöst werden kann, was zu einer großen Verschwendung von Aufwand führt.
Rich Smith
1
Der andere Nachteil dieses Ansatzes ist, dass Sie manchmal zu "Ich kann Problem X lösen. Alles, was übrig bleibt, ist, Y zu tun." In Wirklichkeit ist Y nicht realisierbar und die wirkliche Lösung ist Z.
Brian
@ RichSmith, Brian: Es kommt vor, wenn du mich auch selten fragst. Dadurch können Sie besser verstehen, warum das fehlende Teil so schwer ist, was Ihre Schätzungen verbessert. Und ich würde nicht vorschlagen, wochenlange Arbeit auf der Grundlage einer spekulativen und willkürlichen Aufgabenteilung zu leisten.
jdv-Jan de Vaan
Es ist jedoch fraglich, ob dies Nachteile sind oder nicht. Wäre es besser gewesen, Ihre Zeit damit zu verbringen, das Problem überhaupt nicht zu untersuchen? oder indem Sie herumsitzen und raten, was funktionieren würde? Ich denke, es ist eine gute Praxis, schnelle Prototypen zu schreiben, Dinge auszuprobieren und schnell zu scheitern. es ist die einzige
sara
14

Wenn die Suche fehlschlägt, können Sie immer die erste (nicht unbedingt die beste) Idee verwenden, die Sie haben, und sie später umgestalten, wenn Sie den richtigen Ansatz finden.

Dies ist der richtige Ansatz, denn selbst wenn Sie etwas finden, das nach einer guten Idee aussieht, kann es sich später als schlecht herausstellen. Oder es mag zu dieser Zeit gut sein, aber später findest du etwas viel Besseres. Dann müssen Sie noch umgestalten.

Stellen Sie dabei sicher, dass das Design und die Implementierung so gestaltet sind, dass eine Umgestaltung problemlos möglich ist. Wenn Sie es richtig machen, müssen Sie nur den problematischen Teil ändern und nicht von vorne beginnen.

BЈовић
quelle
1
Es scheint in diesem Beitrag vorausgesetzt zu werden, aber ich möchte hinzufügen, dass es sehr wichtig ist, dass Sie Ihren Code so schreiben, dass er leicht umgerechnet werden kann.
c_maker
@c_maker Ja natürlich. Ansonsten macht es keinen Sinn, alles später von Grund auf neu zu schreiben. Ich werde es der Antwort hinzufügen. danke
BЈовић
10

Was ist mit einer anderen Person zu fragen? Sie können Ihr Problem beispielsweise hier oder, wenn es sich eher um ein Implementierungsproblem handelt, auf stackoverflow.com beschreiben und nach Ideen fragen. Manchmal hilft es dir schon, wenn du anfängst, das Problem aufzuschreiben, auch wenn du keine guten Antworten bekommst.

Doc Brown
quelle
Wenn die Benutzeroberfläche ein Problem darstellt, gibt es auch ux.stackexchange.com
Rob Church,
Wenn Sie nach SO fragen, sind die Antworten unter Creative Commons urheberrechtlich geschützt. Je nach Projekt ist dieser Code möglicherweise nicht verwendbar.
smcg
2
Beratung kann urheberrechtlich geschützt sein? Sicherlich würde der Autor es als Tutorial verwenden, nicht kopieren / einfügen?
Grizwako
@smcg: Das Thema wurde hier besprochen: meta.stackexchange.com/questions/12527/… - Aber ehrlich gesagt, wenn das wirklich zu einem Problem wird, kann man dies, wie von GrizzLy vorgeschlagen, umgehen.
Doc Brown
@DocBrown IANAL, daher kann ich nicht sicher sagen, ob das halten würde, aber manchmal ist es gut, auf Nummer sicher zu gehen.
smcg
2

Ein paar Ideen:

  • Brainstorming
    Schreiben Sie jede dumme Idee auf (auf Papier oder Whiteboard). Kreuzen Sie diejenigen an, von denen Sie sicher sind, dass sie nicht funktionieren. Schreib weiter. Schließen Sie Lösungen für potenziell verwandte Probleme der realen Welt ein. Löst das Mischen von Farbe, das Einstechen eines Nagels in die Wand oder das Wechseln des Öls ein reales Gleichnis?
  • Bitten Sie
    Google um Hilfe , fragen Sie hier, fragen Sie Ihre Geek-Freunde usw.
  • Lösen eines verwandten Problems
    Sie können das Problem nicht lösen , aber können Sie ein viel einfacheres Problem lösen? Oder eine ebenso komplexe, verwandte? TU das. Nehmen Sie dann kleine, individuelle Änderungen vor, um Ihre Lösung der gewünschten Lösung näher zu bringen.
  • Beginnen Sie einfach mit dem Schreiben von außen in
    Unabhängig davon, ob es sich bei Ihrer Benutzeroberfläche um einen Webdienst, eine Webseite, eine native Form, eine Kamera, eine Tastatur, einen Monitor oder etwas anderes handelt , gibt es eine Benutzeroberfläche. Schreiben Sie einige Code- / Pseudocode-Zeilen, damit die Schnittstelle funktioniert. Wende magische Methoden an, die es noch nicht gibt. Wiederholen Sie dies rekursiv für jede nicht existierende magische Methode. Später optimieren.
Svidgen
quelle
2

Es ist nichts Falsches daran, mit der schlechten Lösung umzugehen. Oft weiß man zu diesem Zeitpunkt einfach nicht genug über die Problemdomäne. Wenn Sie sich für eine schlechte Lösung entscheiden, lernen Sie mehr über das Problem. Dann können Sie immer noch zurückgehen und Ihre erste Lösung überarbeiten.

Oliver Weiler
quelle
1

Ich versuche immer, es aus der Sicht des Endbenutzers zu betrachten. Es ist sehr einfach, sich eine "coole" Idee als Entwickler vorzustellen, an der Sie jahrelang arbeiten können und die Ihrer App tatsächlich nur sehr wenig hinzufügt.

Idealerweise möchten Sie alle Funktionen in Ihrer App abbilden und sie entsprechend dem Nutzen für den Endbenutzer priorisieren. Ich persönlich verwende MOSCoW , obwohl Ihre Methode der Priorisierung so einfach wie eine 1 sein kann, solange Sie sie beibehalten - 5.

Danach, wenn Sie immer noch feststellen, dass diese Funktion ein wesentlicher Bestandteil Ihrer App ist, fragen Sie, wie bereits gesagt wurde! Ich glaube nicht, dass ich jemals auf ein Problem gestoßen bin, das irgendwann weder von einem Kollegen noch von diesen netten Leuten bei Stackoverflow gelöst wurde.

Mrk Fldig
quelle
Cool, weil ich aus Moskau bin :)
user21974
Es ist ein Zeichen!
Mrk Fldig
1

Meine Meinung ist: Schreiben Sie niemals Code, der einfach funktioniert! Es dürfte sehr schwierig sein, in Zukunft umzugestalten.

Es ist ein sehr verbreiteter Ansatz für Entwickler (und natürlich für PMs oder Chefs). Ich habe viel Zeit gehört: "Lass es einfach funktionieren" oder "Ich werde es später beheben" (später, wenn ??? nie!), Aber ich denke, dass Qualität nicht in der Mitte des Projekts erreicht werden kann.

Mein Vorschlag ist, hör für eine Weile auf, an dein Problem zu denken ... tu etwas anderes, und irgendwann kommen die Lösungen einfach selbst heraus.

Übrigens ist das Bitten eines Kollegen eine großartige Möglichkeit, Ihre Probleme zu lösen.

Andrea Girardi
quelle