Wie organisiere ich ein Ein-Mann-Projekt? [geschlossen]

21

Hin und wieder (lesen Sie: ungefähr jeden Tag) habe ich eine neue Idee, starte ein neues Projekt in meinem Lieblingseditor / meiner Lieblings-IDE, beginne mit dem Codieren und lösche es am nächsten Tag und starte etwas Neues. Ich programmiere jetzt seit ungefähr sechs Jahren und in diesen sechs Jahren habe ich nur ein sehr kleines Projekt (ein Dashboard-Widget für Pastebin.com) wirklich abgeschlossen. Obwohl dies für das Erlernen des Codierens großartig sein mag, möchte ich wirklich etwas vervollständigen.

Was sollte ich vor, während und nach der eigentlichen Codierung tun? Was sind gute Ressourcen, die mir beibringen, wie man solche Ein-Mann-Projekte organisiert?


Wenn es darauf ankommt, möchte ich Web- oder Mac-Entwicklung machen.

richtig falten
quelle
8
Nach dem, was Sie gepostet haben, klingt es nicht nach einem Mangel an Organisation. Stattdessen scheint es ein Mangel an Interesse oder Antrieb zu sein, das Projekt abzuschließen. Gibt es einen Grund, warum Sie die Projekte löschen, anstatt sie weiterzuverfolgen? Wenn Sie sich wirklich nicht für das Projekt oder die Technologien interessieren, die Sie verwenden, ist es wirklich sinnlos, dies zu befolgen, sonst wird es zur lästigen Pflicht.
Thomas Owens
1
@Thomas Owens Nun, der Hauptgrund, warum ich unfertige Projekte lösche, ist, dass sie meinen Programmordner unordentlich aussehen lassen (dh Dateien enthalten, die ich nie wieder verwenden werde). Ich interessiere mich sehr für die Technologien, ich denke, es ist nur der Mangel an Motivation.
Rightfold

Antworten:

18

Ich denke, das eigentliche Problem ist langfristig eher die Motivation als die Organisation.

  1. Finden Sie Benutzer und sprechen Sie mit ihnen. Betrachten Sie Ihr Projekt als eine Art Geschenk (oder verkaufsfähiges Produkt) an diese Personen. (Jemand, von dem man Ideen abprallen kann, ist auch großartig, selbst wenn er keinen Code mit Ihnen entwickelt.)

    Diese soziale Motivation wird wesentlich stärker dazu beitragen, das Projekt langfristig interessant zu halten, als bloße persönliche Neugier.

  2. Ihr Ziel sollten kleine, mundgerechte Stücke mit nützlicher Funktionalität sein. Stellen Sie es auf SourceForge oder GitHub und behandeln Sie das Projekt als etwas, das eine Überlebenschance braucht, selbst wenn Sie plötzlich von einem Meteoriten getroffen werden.

    Dies führt zu mehr Veröffentlichungen (was mehr Feedback und Begeisterung der Benutzer bedeutet) und auch zu einer höheren Wahrscheinlichkeit, dass sich eine andere Person entscheidet, zu dem Projekt beizutragen.

  3. Wählen Sie ein bestimmtes Lernziel für sich. Welche Technologie oder Technik hilft Ihnen das Projekt beim Lernen? Wenn sich herausstellt, dass die Technik nicht für den Problembereich geeignet ist, sind Sie interessiert genug, um mindestens Version 1.0 fertigzustellen, bevor Sie sie beiseite legen?

    Beispiele für solche Ziele sind das Schreiben von Parsern, Netzwerkprotokollen, Aspekten der Spiel-KI, Lern-Frameworks oder Toolkits, eine neue Sprache usw.

Das Worst-Case-Szenario bedeutet, dass Sie alle drei Szenarien verpassen, in denen Sie wiederholt ein nie veröffentlichtes Tool mit Code "massiv umschreiben", das Sie für Personen, deren Existenz Sie nicht sicher sind, nicht interessant finden.

Darien
quelle
2
+1 für die "wenn Sie plötzlich von einem Meteor getroffen werden." Nein, im Ernst, ausgezeichnete Tipps gegen Aufschub.
Randolf Rincón Fadul
Eine Sache, die Sie nach der Erfahrung hinzufügen sollten: Wenn Sie Hilfe benötigen, müssen Sie wahrscheinlich für Ihr Open-Source-Projekt werben, wenn Sie nicht der einzige Entwickler bleiben möchten. "Wenn Sie es bauen, werden sie kommen" ist sehr unzuverlässig.
Darien
2

Wenn Sie während der Arbeit an einem Projekt eine Idee für ein neues Projekt haben, notieren Sie diese einfach in einer Liste mit Projektideen. Kehren Sie dann zum aktuellen Projekt zurück. Wenn sich das Projekt lohnt, lassen Sie sich nicht von einem neuen Projekt ablenken. Führen Sie die folgenden Schritte nur aus, wenn es sich um eine hervorragende Idee handelt.

Bevor Sie mit unserem Projekt beginnen, planen Sie es. Was wird es tun Wie schwer wird es sein zu tun? Was sind die bekannten und unbekannten? Was wird wahrscheinlich schief gehen? Wie lange wird es dauern? [Jetzt können Sie entscheiden, ob Sie fortfahren oder aufhören möchten.] Behalten Sie Ihren Plan bei. [Wenn Sie an einem Projekt arbeiten, legen Sie das neue Projekt beiseite und fahren Sie mit dem anderen ursprünglichen Projekt fort.]

Wenn Sie Ihr Projekt starten, richten Sie es als separates Projekt in Ihrer IDE ein. (Sie müssen es also nicht löschen, um Ihr nächstes Projekt zu starten.) Checken Sie es in eine Versionskontrollsoftware als neues Projekt ein. (Jetzt können Sie es löschen, wenn Sie feststellen, dass es einem anderen Projekt im Weg steht.) Überprüfen Sie Ihr Projekt, wenn Sie etwas richtig machen. (Jetzt können Sie zurückgehen, wenn Sie aus der Spur geraten.)

Verfolgen Sie die Probleme, die bei Ihrem Projekt auftreten. Dies kann mit ein paar Textdateien innerhalb des Projekts erfolgen. Dateien wie TODO, Changelog, README (können bekannte Fehler und Probleme enthalten) könnten angemessen sein.

Wenn Sie Ihren Code zum Laufen bekommen, markieren Sie ihn in Ihrer Versionskontrolle. Wenn es sich lohnt, dies zu teilen.

Gehen Sie zurück zu Ihrem Plan und sehen Sie, wie gut Sie getan haben. Machen Sie selbst ein Dokument mit den Lektionen, die Sie gelernt haben. Was haben Sie gelernt, wie gut haben Sie geschätzt? Welche Probleme haben Sie vermisst? Welche Probleme haben Sie überschätzt? Alles andere, was Sie für wichtig halten.

Wenn Sie ein Projekt abbrechen, führen Sie die gewonnenen Erkenntnisse aus. Fügen Sie eine Notiz hinzu, warum Sie das Projekt abgebrochen haben.

Überprüfen Sie Ihre Lektionen, die Sie etwa einmal im Monat gelernt haben. Mit der Zeit können Sie das Intervall zwischen den Überprüfungen vergrößern.

BillThor
quelle
2

Hier ist ein Link zu " Agilität im Team ". Es ist eine interessante Lektüre!

Vielleicht möchten Sie auch darüber nachdenken, warum die Disziplinen der Softwareentwicklung, die wir "bei der Arbeit" betreiben, wichtig sind. Sind sie nur wichtig, wenn 10 Personen im Team sind? Nein, sie sind wichtig, weil sie Ihnen helfen, über Ihr Projekt nachzudenken.

Wer ist Ihre Zielgruppe? (Wenn Sie es sind, dann großartig - aber denken Sie daran, wofür Sie die App ursprünglich wollten.)

Wenn Sie eine Benutzeroberfläche erstellen, sollten Sie über die Bedürfnisse Ihrer Zielgruppe nachdenken und einige Modelle erstellen, bevor Sie sich mit der Entwicklung der Hardcore-Benutzeroberfläche befassen.

Wenn Sie sich mit Ihrer Geschäftslogik befassen, versuchen Sie es mit TDD oder BDD. Überlegen Sie, wie Ihre App funktionieren soll, bevor Sie sie angreifen. Wickeln Sie es in ein Geschirr wie Fitnesse oder ähnliches. Wenn Sie Ihre App testen möchten, ist der Start am einfachsten .

SHug
quelle
1

Hören Sie mit Ihrem Kommentar auf, Ihre Projekte zu löschen!

Ich behalte normalerweise keine Projekte auf meinem Computer, die ich nicht aktiv entwickle (oder in naher Zukunft aktiv entwickeln möchte), aber die Quelldateien befinden sich in einem SVN-Repository und alles (einschließlich IDE-Konfigurationsdateien) wird gesichert eine externe Festplatte. Es antwortet nicht darauf, dass Ihr questiStop Ihre Arbeit löscht und sich darauf konzentriert, sich selbst zu motivieren.

Wenn Sie nach einem gehosteten Repository suchen, schauen Sie sich Google Code, SourceForge, GitHub und BitBucket an. Laden Sie Ihre Dateien hoch, bewahren Sie sie an einem Ort auf, und ziehen Sie sie herunter, wenn Sie ein neues Interesse haben. Obwohl Sie sie privat machen können, können Sie sie öffentlich machen, wenn Sie sich nicht für sie schämen. Vielleicht ist jemand daran interessiert, Ihre Arbeit neu zu starten oder aus Ihren Beispielen zu lernen (insbesondere, wenn Sie eine interessante Bibliothek oder ein Framework verwenden).

Arbeiten Sie im Laufe der Zeit an Ihrer Motivation. Versuchen Sie, sich jeweils auf eine Sache zu konzentrieren. Möglicherweise erhalten Sie Ihren Code nicht in Produktionsqualität, aber möglicherweise erhalten Sie Beispielqualität oder etwas, auf das andere Personen achten können, um sich über Ihre Fähigkeiten, Kenntnisse oder eine bestimmte Vorgehensweise zu informieren.

Thomas Owens
quelle
1

Zunächst gibt es Projekte und Projekte. Wenn Sie eine Technologie oder Bibliothek ausprobieren, oder etwas anderes, erstellen Sie wahrscheinlich ein Projekt in Ihrer IDE, finden heraus, ob diese Sache für Sie interessant ist oder nicht, und löschen Sie dann Ihr Projekt. Das ist in Ordnung, jeder macht das.

Eine andere Art von Projekt ist echte Software / Sites / etc., Also Unternehmen, in denen diese "Projekte", Dateien und Programme nur Werkzeuge sind und die Entwicklung derart komplexer Dinge Motivation und Ziele erfordert :

  • Was Sie entwickeln (Website / Texteditor / Mobile App / ...)
  • Wofür brauchst du es? (Verdiene Geld, hole dir neue Technologien / trage zu Open Source bei / ...)
  • wann würdest du tun (wie viel Zeit widmest du deinem Projekt, wie lange hast du vor, das zu tun)

Was Sie entwickeln, sollte neu sein . Wenn Sie nur einen weiteren Texteditor erstellen möchten, weil Sie der Meinung sind, dass eine von Ihnen angeforderte Funktion fehlt, müssen Sie dies wahrscheinlich nicht tun. Es gibt Hunderte von Open-Source-Tools, die zu einem von ihnen beitragen.

Selbst wenn Sie ein kleines Einweg-Tool wie ein Skript erstellen, sollten Sie die aufgelisteten Dinge angeben, da es einfacher wäre, das Problem selbst zu lösen.

Wenn Sie nicht weiterkommen, Code zu schreiben (z. B. Ihren Code massiv umzuschreiben), sind Sie wahrscheinlich nicht erfahren genug, um dies zu tun. Nehmen Sie ein gutes Buch über Software-Engineering, Ihre Plattform (Mac / Web / usw.) und lesen Sie Code, der von erfahreneren Entwicklern geschrieben wurde, die ähnliche Dinge tun. Es gibt jetzt viele Orte, an denen man das machen kann (Github, Google Code, Programmieren von Blogs, Stackoverflow).

Versuchen Sie nicht, ein sehr komplexes Problem (z. B. einen Compiler oder ein Betriebssystem) von Grund auf zu lösen. Zerlegen Sie es zunächst in kleinere Aufgaben. Meistens hat bereits jemand Bibliotheken erstellt, die Sie bei der Lösung Ihres Problems unterstützen.

vissi
quelle
0

Haben Sie darüber nachgedacht , zu fragen einen geliebten Menschen , was sie wirklich für einen webtool brauchen, und dann tatsächlich machen es für ihn oder sie?

Dies sollte die Motivation liefern, tatsächlich fertig zu werden und zu liefern, was der schwierige Teil dabei ist. Darüber hinaus profitieren Sie von der Unterstützung und Pflege der Anwendung, wenn dies für Ihre Liebsten von Nutzen ist. Wenn es nicht nützlich ist, können Sie aus der Erfahrung lernen, was schief gehen kann.


quelle