Methoden / Tools für die eigene Entwicklung [geschlossen]

10

Angenommen, Sie müssen eine mittelgroße Software vollständig selbst entwickeln. Als ob es ein persönliches Projekt wäre, das Sie durchführen möchten.

Welche Methoden / Tools würden Sie verwenden, um zu definieren, was entwickelt, gelernt und eine globale Vorstellung davon sein muss, was das System in seinen Details ist?

Grundsätzlich, um sich auf dem Laufenden zu halten und sich unterwegs nicht zu verlaufen.

Cassio
quelle
3
Bleistift, Papier und mein Gehirn. Ein Whiteboard hilft. Im Ernst, ein Großteil meiner Designarbeit findet direkt in der IDE statt. Haben Sie eine spezielle Frage, die auf einem Problem basiert, mit dem Sie derzeit konfrontiert sind? Es würde uns helfen, die Frage zu beantworten, wenn wir genau wüssten, welches Problem Sie lösen möchten.
Robert Harvey
@ RobertHarvey haha ​​Es ist sehr wahr. Naja, so ungefähr. Ich entwickle eine Idee, ein persönliches Projekt. Es ist nur so, dass die Software größer ist, als ich es mir vorgestellt habe, und es gibt Dinge, die ich noch lernen muss, wie es funktioniert, und dann herausfinden, wie man das entwickelt.
Cassio
1
@RobertHarvey Die Hauptprobleme sind wahrscheinlich mangelndes Brainstorming der Details, das Verfolgen der zu erledigenden Aufgaben und ein Blick auf das gesamte System.
Cassio
2
Ich bin zu 99,9% sicher, dass wir dies in ein oder zwei weiteren Fragen behandelt haben, aber ich kann sie im Moment nicht finden.
Adam Lear
4
Ich versuche immer, mich unterwegs zu verlaufen. Es ist ein schneller Weg zum Lernen.
Joel Etherton

Antworten:

5

Normalerweise benutze ich nur Mercurial. Wenn ich eine Funktion möchte, füge ich sie einfach hinzu und wenn ich sie nicht mehr möchte, entferne ich sie einfach. Außerdem versuche ich, meine Commit-Kommentare gut zu schreiben, damit ich mich nicht verliere.

Eiefai
quelle
Yup - Mercurial ist eines dieser Tools, die sich wie von Apple hergestellt anfühlen :) Einfach, aber leistungsstark, schön und doch nützlich ...
Rook
4

Es kann leicht außerhalb der Reichweite Ihrer Aufmerksamkeit wachsen . Nicht die Spannweite , die Breite .

Es ist schwer, zu viele Elemente gleichzeitig zu berücksichtigen .

Und dann ... wird es eine Regressionsachterbahn .
Alles, was Sie tun, bricht frühere Dinge und das Zurückrollen hilft nicht.

Um dies zu vermeiden, sollten Sie aggressiv auf Regression testen .
Automatisch. (Das kannst du sonst nicht machen und gesund bleiben)

Das Testen wird Ihre Energien stark belasten.

Wenn es bei dem Projekt nur um die Benutzeroberfläche geht ... stoßen Sie wahrscheinlich an:

  • UI-Tests sind schwierig .
  • Automatisierte UI-Tests sind ... immer noch schwierig .

Ungetestete Last-Minute-Idee für UI-Projekte
Registrieren Sie einen Verwandten mit Freizeit und der Vorliebe, als UI-Tester mit der Maus zu klicken .
Ich denke hier "Teenager" .

Andere Probleme:

  • Es wird ewig dauern .
  • Sie konfrontieren Schreibblockade .
    (Es existiert eigentlich nicht als Bedingung, es ist eine beliebte Fehlbezeichnung, die Menschen an ihre mangelnde Disziplin knüpfen. )

Wenn Sie es gewohnt sind und eine Art Versionskontrolle lieben , verwenden Sie sie. Wenn Sie jetzt anfangen
zu lernen, werden Sie abgelenkt .

Wie bereits erwähnt, kann es hilfreich sein, Ihre Ideen zu entwerfen .

Ich habe Freemind , CMaps , XMind , yEd , graphviz und ... etwas anderes verwendet.

XMind ist weniger sinnlos:

  • sehr schnell , um die Daten in einzufügen
  • automatische Layouts
  • Ich versuche streng, dich dazu zu bringen, beim Thema zu bleiben
  • sehr gut für die Aufnahme von Notizen während einer Lektion (ich so wünschte , ich hatte in der Schule )
  • Es ist immer noch schwer zu bedienen, wenn Sie sich für etwas entscheiden, das Sie dort nicht geklärt haben.

Ein Bleistift und ein Notizbuch punkten immer noch ziemlich gut in meinen Top Ten:

  • Ich scanne viele meiner Notizen
  • Ich mache viele kleine erklärende Zeichnungen.

    • (Wenn Sie mit Bildern denken, werden Sie möglicherweise nie ein erfüllendes Brainstorming-Tool finden.)

Als letzten Ausweg können Sie Powerpoints immer für Ihren eigenen Verbrauch vorbereiten :)

ZJR
quelle
+1. Haben Sie jedoch Vorschläge zum Thema "Entscheiden Sie sich für etwas, das Sie dort nicht geklärt haben"?
Cassio
@Cassio Ich wechsle zwischen xmind und Bleistift + Skizzenbuch hin und her, erstelle spitze Listen in libreoffice, schreibe Beispiele auf und teste eine ungefähre Implementierung. Es ist ein ziemlich zeitaufwändiger Prozess, aber Sie müssen einige improvisierte Gedanken wegwerfen, um zu etwas zu gelangen, das sich richtig anfühlt . (PS: zerknittertes Papier vor dem Werfen ist kathartisch)
ZJR
1
@ ZJR In der Tat. Manchmal hatte ich nur Angst davor, Dinge zu schreiben, die ich nicht brauchte, und Zeit damit zu verschwenden, aber jetzt sehe ich, dass der Prozess so funktioniert. Anfangs schreiben wir einige nutzlose Sachen, aber wir verbessern uns mit der Zeit. :) Vielen Dank!
Cassio
3

Literate Programming.

Der Praktiker der literarischen Programmierung kann als Essayist angesehen werden, dessen Hauptanliegen die Darstellung und die Exzellenz des Stils sind. Ein solcher Autor wählt mit dem Thesaurus in der Hand die Namen der Variablen sorgfältig aus und erklärt, was jede Variable bedeutet. Er oder sie strebt ein Programm an, das verständlich ist, weil seine Konzepte in einer Reihenfolge eingeführt wurden, die für das menschliche Verständnis am besten ist, wobei eine Mischung aus formellen und informellen Methoden verwendet wird, die sich gegenseitig stärken.

Wenn Sie eine Arbeit (oder ein Buch, einen Bericht oder ein Dokument) über Ihr Projekt schreiben, bleiben Sie in der Regel bei der Arbeit.

Beginnen Sie mit einem Überblick über Ihre Aktivitäten: Anwendungsfallübersicht, Version 1, Version 2, Version n. Schreiben Sie eine Zusammenfassung der Anwendungsfälle auf. Priorisieren Sie sie. Bring sie in Sprints und Releases.

Jede Version verfügt über eine Anwendungsfallansicht, eine logische Ansicht, eine Verarbeitungsansicht, eine Komponentenansicht und eine Bereitstellungsansicht. Geben Sie für den Sprint die Anwendungsfälle an. Veröffentlichen Sie das HTML-Dokument, um zu zeigen, was Sie tun werden. Schreiben Sie das logische Modell, nachdem Sie die Anwendungsfälle für den Sprint detailliert beschrieben haben. Schreiben Sie Code, um dies zu unterstützen. Schreiben Sie die Verarbeitungsdokumentation. Schreiben Sie Code, um dies zu unterstützen. Module erstellen. Schreiben Sie die Dokumentation zur Komponentenansicht. Schreiben Sie die Tests und die dazugehörige Dokumentation. Veröffentlichen Sie die Sprint-Ergebnisse als HTML-Dokument.

Wiederholen Sie dies für jeden Sprint. Überprüfen und bearbeiten Sie Ihr Dokument von Zeit zu Zeit.

Es gibt viele, viele gebildete Programmierwerkzeuge. Sie können Ihnen dabei helfen, eine Quelle zu erstellen, die die Dokumentation und den Code aus einem einzigen Text erstellt.

Ich benutze Sphinx und PyLit, aber das liegt daran , dass ich ein Python-Programmierer bin.

S.Lott
quelle
Gut, eine Universitätszeitung daraus zu zerkleinern und sie dann zu vergessen, schlecht, wenn Sie planen, das Produkt später freizugeben oder zu pflegen. Jeder überall sollte sowieso Sauerstoff verwenden , auch auf Python. Aber das ist nur, weil ich ein Fan bin :)
ZJR
2

Wenn Sie Ihre Ideen aufschreiben möchten, können Sie ein Mind-Mapping-Tool wie XMind oder FreeMind verwenden . Beide Tools sind kostenlos (für Einzelpersonen für XMind) und eignen sich hervorragend für das Brainstorming und die Organisation Ihrer Ideen. Das Besondere an diesen Tools ist nur, dass Sie weniger Chancen haben, etwas zu vergessen.

Ich persönlich habe Freemind verwendet, bevor ich mein letztes persönliches Projekt gestartet habe. Ich hatte keine besondere Methodik per se . Ich habe meine Ideen nur einmal pro zwei Tage in einstündigen Sitzungen dargelegt. Ich denke, dass der Abstand zwischen den Brainstorming-Sitzungen mir geholfen hat, besser zu erkennen, was falsch war, was nicht wesentlich war, aber in nachfolgenden Versionen nützlich sein könnte usw.

Bei meinem ersten Code-Commit habe ich auch die Brainstorming-Datei im Quellcode-Repository gespeichert (ich habe Bitbucket verwendet ) und sie mit meinen neuesten Ideen auf dem neuesten Stand gehalten.

Jalayn
quelle
Sehr gut. Ich teste bereits alle diese. Vielen Dank!
Cassio
2

Behandle es wie ein echtes Softwareprojekt (weil es eines ist). Es gibt nur wenige Dinge, die sich ändern, da die Anzahl der Entwickler eins beträgt. Sie benötigen noch eine Quellcodeverwaltung. Sie benötigen noch eine Möglichkeit, Funktionen zu organisieren, um Fehler hinzuzufügen und zu beheben. Sie benötigen weiterhin einen automatisierten Test, um sicherzustellen, dass Sie keine Regressionen im Code erstellen. Sie sollten auch eine automatische Möglichkeit haben, den Code zu kompilieren (falls erforderlich), die Tests auszuführen und die Berichte anzuzeigen.

Ich arbeite an einem persönlichen Projekt, wie Sie es beschrieben haben. Ich verwende Git, Redmine, JUnit und Jenkins, um alle von mir beschriebenen Kategorien zu erfüllen. Mein Arbeitsablauf ist:

  • Wählen Sie ein Ticket für die Arbeit
  • Verzweigen Sie die Codebasis
  • Entwickeln Sie Code und Tests für die Aufgabe (übernehmen Sie Änderungen an der Verzweigung an guten Speicherpunkten).
  • Zweig wieder mit Stamm verbinden
  • Stellen Sie sicher, dass der Build erfolgreich war, die Tests bestanden wurden und keine anderen Probleme aufgetreten sind
  • Wiederholen

Es ist genauso wichtig, alles verwaltet und organisiert zu halten, wie wenn es viele Entwickler gibt. Bei vielen Entwicklern müssen Sie sich organisieren, damit Informationen an alle weitergegeben werden. Wenn es nur Sie sind, haben Sie bereits alle Informationen, aber es ist schwierig, sich an jeden Teil des Systems zu erinnern. Ein verwaltetes System erleichtert es Ihnen und Sie können sich auf die jeweilige Aufgabe konzentrieren.

unholysampler
quelle
2

Werkzeuge:

  • Control Version System (auch wenn Sie der einzige Entwickler in Ihrer Garage oder Ihrem Heim-PC sind): GIT, Mercurial, Tourtoise

  • Editor mit Quellcode-Hervorhebung, auch wenn Sie eine IDE haben (Scintilla, Vim, Notepad)

  • Echte Tafel, Whiteboard, einige Dinge passen einfach nicht in Ihre Designer Tools-Anwendung.

  • Design-Tool: Rational Rose, Umbrello, (UML, ER,) Visio oder "Designer-Tools für arme Entwickler" wie Power Point, Corel Draw und Open Office Draw

  • Text / Quellcode Textvergleichstool, zB WinMerge

umlcat
quelle
Sehr hilfreich! Ich setze all dies in die Praxis um. Vielen Dank.
Cassio
1

Dies hängt davon ab, wie Sie verschiedene Aufgaben unterscheiden und bearbeiten können, da Sie sich jeden einzelnen Schritt des Entwicklungsprozesses ansehen müssen.

Ich denke, Werkzeuge sind nur dann nützlich, wenn Sie bereits wissen, wie man sie verwendet, und einer der schlimmsten Fehler darin besteht, zu lernen, wie ein Werkzeug funktioniert, anstatt zu lernen, wie man damit umgeht.

Meiner Meinung nach müssen Sie zunächst aufschreiben, was die Software voraussichtlich tun wird und was nicht. Das ist ein entscheidender Punkt. Der nächste Schritt besteht darin, das endgültige System in niedrigere Subsysteme zu unterteilen, um den Bauprozess zu vereinfachen. Und zu guter Letzt müssen Sie Ihre Werkzeuge auswählen. Grundsätzlich eine gute IDE, ein VCS und ein Datenmodellierer. Sie können viele andere Tools hinzufügen, um zu helfen, aber achten Sie darauf, nicht auf dem falschen Weg zu beginnen.

Nun, der Anfang scheint nicht so attraktiv zu sein, aber der Prozess wird im Laufe der Zeit Spaß machen.

Lucas Maus
quelle
Ja! Denken Sie daran, dass Code - wenn das Projekt gut gestaltet ist - ein kleiner Teil des Ganzen ist.
Lucas Maus