Motivieren Sie sich, den Code tatsächlich zu schreiben, nachdem Sie etwas entworfen haben [closed]

27

Kommt es nur mir vor oder kommt Ihnen das auch bekannt vor?

Es ist wie folgt: Du musst etwas erschaffen; ein Modul, eine Funktion, eine gesamte Anwendung ... was auch immer. Es ist etwas Interessantes, das Sie noch nie gemacht haben, es ist eine Herausforderung.

Also fängst du an zu überlegen, wie du es machen willst. Sie zeichnen einige Skizzen. Sie schreiben einige Prototypen, um Ihre Ideen zu testen. Sie fügen verschiedene Teile zusammen, um die vollständige Ansicht zu erhalten.

Am Ende haben Sie ein Design, das Ihnen gefällt, das einfach, für alle klar und wartungsfreundlich ist. Sie haben jede Basis abgedeckt, Sie haben an alles gedacht. Sie wissen, dass Sie diese Klasse und diese Datei und dieses Datenbankschema haben werden. Konfiguriere das hier, passe das andere Ding dort an usw.

Aber jetzt, nachdem alles geklärt ist, müssen Sie sich hinsetzen und tatsächlich den Code dafür schreiben. Und ist nicht mehr anspruchsvoll ... schon da, das getan! Das Schreiben des Codes ist nur "Formalitäten" und lässt es so aussehen, als würde man wiederholen, was Sie gerade beendet haben.

Bei meinem vorherigen Job bin ich manchmal damit durchgekommen, weil jemand anderes das Codieren auf der Grundlage meiner Spezifikationen vorgenommen hat, aber bei meinem neuen Auftritt bin ich für den gesamten Prozess verantwortlich, also muss ich das auch tun (weil ich dafür bezahlt werde) es).

Aber ich habe ein Lieblingsprojekt, an dem ich zu Hause arbeite, nach der Arbeit und da bin nur ich und niemand bezahlt mich dafür. Ich mache die kreative Arbeit und dann, wenn die Zeit gekommen ist, um sie aufzuschreiben, habe ich einfach keine Lust mehr ( lass uns ein wenig im Internet surfen und nachsehen , was es Neues bei P.SE , SO usw. gibt).

Ich möchte nur zur nächsten herausfordernden Sache übergehen und dann zur nächsten und zur nächsten ...

Passiert Ihnen das auch? Wie gehst du damit um?

Wie können Sie sich davon überzeugen, den verdammten Code zu schreiben?

Ich werde jede Antwort nehmen.

Gemeinschaft
quelle
Wie schätzen Sie die Größe Ihres Projekts ein? Was sind deine Ziele? Wer profitiert von dem Projekt, wenn es erfolgreich wird? Was für Vorteile?
rwong
2
@rwong: Mein primäres Ziel ist es, mein Wissen zu erweitern. Ich experimentiere an meinem persönlichen Projekt mit verschiedenen Ideen, Techniken, Bibliotheken usw. zum Zweck der Selbstverbesserung. Aber ich wollte etwas mit einem realen Use-Case-Szenario bauen und nicht nur eine Unmenge von Prototypen, die nichts miteinander zu tun haben.
1
Wenn Sie nur entwerfen und niemals programmieren, woher wissen Sie dann überhaupt, ob Ihr Design funktionieren wird? Code validiert oder widerlegt die Machbarkeit eines "Entwurfs". Anders ausgedrückt, es ist leicht, durch vages Handwinken zu "entwerfen", aber tatsächlich zu implementieren, ist normalerweise eine enorme Menge an Arbeit. Es ist manchmal frustrierend, manchmal langweilig, aber letztendlich zumindest für mich erfüllend.
Kevin
Ich habe dies vor über 3 Jahren beantwortet, aber als ich Ihre Frage wieder lese, frage ich mich, ob dies kein Zeichen von ADHS ist (was ich zufällig habe). Ich kämpfe auch mit dem, was Ihre Frage beschreibt, und obwohl mir das, was ich beantwortet habe, ein bisschen hilft, ist es immer noch äußerst schwierig. Russell Barkley erklärt, warum das so ist: youtu.be/LyDliT0GZpE
Mark Freedman

Antworten:

6

Wenn die Herausforderung für Sie im Entwerfen und Nicht-Implementieren besteht, benötigen Sie möglicherweise einen anderen Motivationsfaktor:

Wenn es sich um ein Haustierprojekt handelt (nicht für die Arbeit), freue ich mich darauf, es lebendig werden zu sehen. Deshalb reicht es mir nicht aus, es zu entwerfen. Was ist das Ziel, wenn Sie Ihre eigenen Haustierprojekte entwickeln? Ist es für etwas, das Sie verwenden müssen? Wenn ja, können Sie dies als Motivation für die Implementierung verwenden. Um zu sehen, wie es funktioniert. Um die Funktionalität bereitzustellen, die Sie suchen, um sie zu verlassen.

Planen Sie, es anderen zur Verfügung zu stellen? Ein motivierender Faktor könnte sein, dass sie vom Endprodukt profitieren. Sie werden das Dienstprogramm nicht nutzen können, wenn es sich nur im Entwurfsmodus befindet. Und wenn Sie vorhaben, es zu vermarkten, nutzen Sie die Tatsache, dass niemand für Ihr Haustierprojekt bezahlen wird, während es im Designmodus feststeckt, als Motivationsfaktor.

Wenn ich an meinem eigenen Ding arbeite, gehe ich iterativer vor als bei der Arbeit - ich mache mir keine Sorgen um alle Details, bevor ich etwas generiere. Es kann länger dauern, aber 1) da es nur für mich ist (oder für jemanden, der noch nicht einmal weiß, dass es in irgendeiner Form existiert), habe ich die Flexibilität zu experimentieren und meine Zeit in Anspruch zu nehmen. 2) Ich verbringe eine Reihe von Zyklen damit, Dinge umzugestalten und bessere Methoden zu lernen. Bildlich gesprochen nach meinem eigenen Ermessen.

Aber ist es letztendlich nicht wirklich eine Befriedigung, etwas aus dem Nichts zum Leben zu erwecken? Das macht es für mich. Wenn das nichts für Sie bedeutet, es sei denn, Ihre Motivation ist das Endprodukt, dann bin ich mir nicht sicher, warum Sie überhaupt an dem Haustierprojekt arbeiten wollen. Wenn das Entwerfen das ist, wonach Sie sich sehnen, und das tun Sie bei der Arbeit, scheinen Sie bereits die Befriedigung zu bekommen, die Sie suchen.

Mark Freedman
quelle
6

Sie benötigen Rapid Prototyping zu Hause.

Wenn Sie ein privates persönliches Projekt mit der gleichen Professionalität bearbeiten, führt dies leicht zu einer Überentwicklung.

Es ist durchaus akzeptabel, einen hohen Standard für ein persönliches Projekt festzulegen, aber Sie müssen sich darüber im Klaren sein, dass Sie möglicherweise nicht über genügend Ressourcen verfügen (Codierungsstunden zusätzlich zu Ihren 8 Stunden täglicher Arbeit), um Fortschritte im Projekt zu erzielen.

Was ist das wichtigste Ziel in Ihrem Haustierprojekt? Um den Nutzen einer Ihrer Erkenntnisse zu beweisen? Wenn dies der Fall ist, kürzen Sie das Projekt, bis es ein Proof-of-Concept- Projekt ist. Verwenden Sie dann Rapid Prototyping, um mit weniger Programmierzeit mehr zu erreichen.

rwong
quelle
5

Ich denke, es ist nur ich, aber ich habe das gegenteilige Problem. Normalerweise habe ich Probleme, alle Details zu überdenken, bevor ich anfange, den Code zu schreiben und tatsächlich auf die relevanten Probleme stoße. Realistisch gesehen habe ich normalerweise nur ein vages Design im Kopf, wenn ich anfange, etwas zu programmieren. Meine große Herausforderung besteht darin, mir Gedanken über alle Details zu machen und ein Design im Voraus zu haben.

dsimcha
quelle
5
Warum wurde das so hoch gewählt, dass es die Hauptfrage "Wie überzeugst du dich, den verdammten Code zu schreiben?" Nicht wirklich beantwortet?
dan_waterworth
1
@dan_waterworth: Ich denke da können sich viele Leute auf die Antwort beziehen. Als ich ein Junior war, tat ich dasselbe und sprang kopfüber in die Programmierung, ohne vorher etwas zu planen. Ich habe seitdem gelernt (auf die harte Tour), dass es besser ist, sich zu setzen und nachzudenken, bevor ich zur Schreibphase gehe.
2

Damit kann ich mich definitiv identifizieren. Ich liebe es, mich den Herausforderungen von Dingen zu stellen, denen ich noch nicht begegnet bin, aber es fällt mir schwer, an etwas zu arbeiten, das ich bereits gelöst habe. Das Größte, was ich tue, ist, mich dazu zu zwingen, mich hinzusetzen, um X fertig zu machen und zu funktionieren. Normalerweise habe ich am Ende Spaß und bekomme mehr als getan, als ich ursprünglich geplant hatte, aber wenn ich kein Tor erzwinge, werde ich nur stundenlang getrunken.

Ich bin auch dabei, dass dies eher zu Hause als im Büro passiert. Ich weiß nicht, ob es mehr Ablenkungen sind, von der Arbeit verbrannt zu werden oder was ...

Mistkerl
quelle
2

Ich verstehe Ihre Frustration mit Sicherheit so, wie ich es selbst schon einmal durchgemacht habe.

Obwohl ich einige Flammen aus der Community fürchte, da ich weiß, dass dies kein großartiger Ansatz ist, werde ich meinen Ansatz für Nebenprojekte mit Ihnen teilen . Bitte beachten Sie, dass diese Methode bei mir funktioniert und ich sie bei mittel- und langfristigen Projekten verwende. Ich würde sie nicht für kleine Projekte verwenden (da ich normalerweise die Motivation habe, sie auf einmal zu beenden).

Greifen Sie nach dem gesamten Projekt und teilen Sie es in "Pakete" auf, die jeweils aus Teilen bestehen, die häufig miteinander interagieren. Teilen Sie dann jedes Paket in kleine Stücke (überlegen Sie sich maximal ein paar Stunden), die Sie entwerfen und codieren können.

Idealerweise können Sie jedes Stück in der Zeit fertigstellen, die Sie für Ihr Nebenprojekt für einen Tag festlegen, dies ist jedoch nicht erforderlich (abhängig von der Person).

Persönlich lege ich keinen geschätzten Zeitrahmen für jedes Stück fest, da ich nur enttäuscht und demotiviert werde, wenn ich diese Schätzung verfehle. Daher rate ich davon ab. Nehmen Sie sich Zeit, aber auch nicht zu lange.

Jetzt erhält jedes kleine Teil alle Phasen Ihres normalen Entwicklungsprozesses, das Entwerfen, Testen, Implementieren und alles, was Sie sonst noch tun müssen. Die Idee ist, jedem Stück einen guten Kick-Start zu geben, aber noch keinen vollständigen letzten Schliff zu geben.

Das hält meine Motivation aufrecht, weil ich weiß, dass ich nach ein paar Stunden langweiligem Programmieren mehr Design zu tun habe (lecker). Lassen Sie sich nicht von Ihren Zielen abbringen, machen Sie einfach diese schreckliche Aufgabe weiter, und sie ist bald erledigt.

Nachdem Sie alle Teile durchgesehen haben, schauen Sie sich das Paket an. Sehen Sie, wie es funktioniert, was es macht, und wiederholen Sie das gesamte Paket. Ich bin mir sicher, dass es Änderungen und Optimierungen geben wird. Behalten Sie die wichtigsten Informationen im Kopf, da Sie diese benötigen, wenn Sie an allen anderen Paketen arbeiten. Machen Sie sich auch Notizen, sie helfen sehr.

Sehen Sie sich jedes Paket durch und merken Sie sich alle anderen, die Sie zuvor gemacht haben. Wie wird der neue Code, den Sie schreiben, mit Dingen interagieren, die Sie vor einer Woche geschrieben haben? Haben Sie keine Angst, Dinge nachzuschlagen, die Sie bereits geschrieben und vielleicht vergessen haben.

Schließlich, wenn Sie keine Pakete mehr haben, lasse ich es normalerweise ein paar Tage lang laufen, ruhe mich aus und konzentriere mich auf etwas anderes.

Normalerweise juckt es mich, zurück zu gehen und die Pakete miteinander zu verflechten und spielerisch zu testen, es gibt nicht viel mehr Code zum Schreiben und das Ziel ist nahe, das ist mir dann Motivation genug.

Hoffe das hilft dir bei deinen Bemühungen.

andre
quelle
2

Ich habe immer festgestellt, dass die ursprünglichen Annahmen nicht vollständig zutrafen und dass mehr oder weniger der ursprüngliche Entwurf auf der Grundlage der bei der tatsächlichen Implementierung gesammelten Erfahrungen geändert werden musste.

Wenn Sie Ihr Design nach dem Zeichnen einiger Kästchen für absolut unfehlbar und perfekt halten, aber bevor Sie es tatsächlich ausprobieren, würde ich Sie als perfekten Kandidaten für einige Projektimplementierungen betrachten.

Der Versand ist ein Feature. Wenn Sie nicht die ganze Strecke zurücklegen, sind Sie nur ein Architekt.


quelle
1
+1 Insgesamt gut, ein Anliegen Architekten haben ihren Platz, "nur ein Architekt" klingt ein wenig erniedrigend, natürlich unbeabsichtigt.
Orbling
@Orbling: Thorbjørn verzichtete auf einen (um einiges erniedrigenderen) Architekturastronauten.
Rwong
@Orbing, könnte gut sein. Wie würden Sie die Tatsache ausdrücken, dass Sie nicht selbst tun können, was Sie anderen anweisen?
1

Ich denke, das Problem liegt im falschen Ziel. Es sieht so aus, als ob Sie sich das Ziel "Design System" gesetzt haben. Und dann machst du es gut und das Ziel ist erreicht. Ein Vorschlag ist also, ein anderes Ziel zu setzen: "System implementieren", aber dann hängt es mehr mit der Motivation und der Art und Weise zusammen, wie Sie es tun.

Es gibt einen anderen Weg, der für mich gut funktioniert hat: Setzen Sie das ursprüngliche Ziel als "System an bestimmte Benutzer liefern" anstelle von "System entwerfen" oder "System erstellen". Auf diese Weise werden Sie nicht zufrieden sein, bis Benutzer etwas Wertvolles erhalten. Und du machst es von Anfang an gut (einschließlich Testen und anderen modernen ausgefallenen Sachen).

Konstantin Petrukhnov
quelle
1

Abgesehen davon, dass es in der Tat um Motivation geht, denke ich, dass ein Teil der Lösung darin besteht, den Entwurfs- und den Codierungsprozess zu kombinieren. So mache ich es meistens. Im Grunde kommt es darauf an, die Grundlagen Ihres Designs zu implementieren, wenn Sie daran gedacht haben, und dann mit dem nächsten Schritt fortzufahren.

ZB: Wenn ich meine Grundklassen entworfen habe, schreibe ich sie auf und teste sie. Dann habe ich eine zugrunde liegende Datenbank entworfen, sie eingerichtet und ausprobiert. Als nächstes habe ich die Methoden und Funktionen, die ich brauche, um alles in die / aus der Datenbank zu bekommen. Das Testen ist einfacher, da ich meine Grundkurse bereits fertig habe. Und als ich endlich die Benutzeroberfläche entwerfe, habe ich bereits eine ganze Reihe von Code, mit dem ich herumspielen kann.

Dies setzt nun voraus, dass Sie auch in Blöcken entwerfen, die über Schnittstellen verbunden sind. Ich kenne das teure Wort dafür nicht, da ich kein Programmierer bin, aber Sie wissen, was ich meine.

Hoffe das hilft.

Joris Meys
quelle
1

Schreiben Sie dann einfach Ihre Designideen auf, veröffentlichen Sie sie (in einem Blog) und geben Sie das Beste, um das Problem und die Lösung zu erklären, die Sie für andere gefunden haben.

Ein Trick: Schreiben Sie Ihre Erklärung des Designs als Lese- und Schreibprogramm ! :) Dann beschäftigen Sie sich mit dem interessanten Teil (Ihren Entwurfsideen), aber begründen Sie diese tatsächlich mit dem echten Code, den Sie nebenher liefern.

Und veröffentlichen Sie das Lese- und Schreibprogramm als Präsentation Ihrer neuen Ideen für andere!

imz - Ivan Zakharyaschev
quelle
1

Das wird banal klingen, aber fang einfach an. Wahrscheinlich müssen Sie Ihre Entwicklungsumgebung öffnen, also tun Sie es. Sie müssen wahrscheinlich jede der Klassen in Ihrem Entwurf definieren und ihre Methodensignaturen aufschreiben. Sie müssen mit der Implementierung der wichtigsten Methoden beginnen.

Normalerweise habe ich um diese Zeit vergessen, dass ich Probleme beim Starten hatte und ich bin in der Zone.

Funktioniert in etwa 80% der Fälle. Im übrigen gibt es Tetris.

Vince Green
quelle
0

Es sind definitiv nicht nur Sie! Ich verschiebe gerade ein Projekt.

Niemand kann dich motivieren als du.

Erstellen Sie einen realistischen Zeitplan und fordern Sie sich heraus, jeden Abschnitt rechtzeitig abzuschließen. Sie haben nichts für Projekte zu zeigen, wenn sie die Designphase nicht bestanden haben.

dan_waterworth
quelle
0

Nach Ihrer Frage zu urteilen, besteht Ihr Problem darin, dass Sie das Rad scheinbar neu erfinden. Wenn Sie dies alles bereits getan haben, warum müssen Sie es dann erneut tun? Gibt es keinen Rahmen dafür? Wenn nicht (obwohl dies eher unwahrscheinlich ist), warum nicht eines schreiben?

Eine Schlüsselaufgabe beim Programmieren ist es, nicht immer wieder langweilige Dinge zu erledigen , sondern sie einmal zu erledigen , richtig zu machen und sie dann wiederzuverwenden. Oder noch besser: jemanden finden, der es schon einmal richtig gemacht hat.

back2dos
quelle
0

Ich verstehe vollkommen, woher du kommst. Es ist das Problem, das Sie interessiert, und sobald Sie es herausgefunden haben, funktioniert die Implementierung.

Warum erstellen Sie nicht einfach die Lösung und lassen sie von anderen implementieren?

John MacIntyre
quelle
-1

Dinge, die ich tue:

  • Stelle einen großen Timer vor mich (kann im Rückwärtsmodus sein, in Stücken von 1 Stunde)
  • Zwinge mich aufzubleiben, bis ein bestimmtes Ziel erreicht ist (manchmal habe ich bei einem Bier festgestellt, dass ein wenig Alkohol hilft)

Funktioniert aber nicht immer

PS. ich arbeite von Zuhause

Eduardo Molteni
quelle