Was ist die minimale Teilmenge der besten / bekanntesten Praktiken in der Softwareentwicklung für einen Solo-Programmierer? [geschlossen]

16

Ich war lange Zeit der einsame Programmierer in meiner Arbeit. Normalerweise habe ich Artikel und Posts über gelesen

  • Versionskontrollsysteme
  • Kontinuierliche Integration / Lieferung
  • Entwicklungsmethoden: Scrum, Waterfall, V-Model, Agile, XP, etc.
  • Software-Projektmanagement

Aber fast alle scheinen sich auf TEAMS zu konzentrieren. Ich bin kein Team, also was wäre das absolut Mindestmaß an Übungen für nur einen Programmierer? Berücksichtigen Sie die folgenden Bedingungen:

  • Ich habe keine Konflikte mit dem Code anderer Leute.
  • Ich brauche keine Dateien / Verzeichnisbäume zu pflegen, meine Entwicklungsumgebung kümmert sich um die Versionierung von selbst (Image-basierte Entwicklung).
  • Es gibt keine formalen Anforderungen, meine Benutzer wissen nicht, was sie wollen, und sie sind damit einverstanden.
  • Der einzige, der daran interessiert sein könnte, eine Veröffentlichung oder Dokumentation zu liefern, bin ich, der Kunde möchte im Grunde ERGEBNISSE und kümmert sich nicht um Softwaremethoden usw

Ich bin der Ansicht, dass ich nicht zu viel Zeit und Energie in etwas investieren möchte, das nicht direkt mit den Kundenanforderungen zusammenhängt. Irgendwelche Empfehlungen?

user869097
quelle
Wie viele Releases gibt es in freier Wildbahn, für die Sie Fehlerbehebungen vornehmen müssen?

Antworten:

17

Es gibt keine richtige Antwort auf diese Frage, weil es von jeder Person abhängt. Wenn Sie ein iPad für Ihre gesamte Entwicklungsarbeit verwenden und Ihre Kunden mit Ihnen zufrieden sind, haben Sie keinen Grund, etwas zu ändern.

Wenn ich jedoch in Ihrer Position wäre, würde ich Folgendes nachdrücklich durchsetzen:

  • Ein Versionskontrollsystem - Während Sie vielleicht glauben, dass ein Image-basiertes Entwicklungssystem die Arbeit in Bezug auf regelmäßige Backups und so weiter erledigt, haben Sie keinen Spielraum für experimentelle Funktionen, bei denen normalerweise ein Zweig verwendet wird . Sie haben auch keine Möglichkeit, eine wichtige Version des Projekts beizubehalten ( Tagging ). Wenn Sie jemals über sich selbst hinaus expandieren, werden die Entwickler, die sich anschließen, glauben, sie wären in der Hölle.
  • Agil - Diese Methode eignet sich besonders für Kunden, die nicht wissen, was sie wollen. Früher oder später werden sie erkennen, dass sie kein Geld ausgeben wollen, um ihren Schwanz zu jagen - sie werden Fortschritt sehen wollen .
  • Projektmanagement-Tool - Dies ist ein Muss. Es ist sehr beeindruckend, alles in deinem Kopf zu behalten, aber du musst es nicht. Wenn Sie diszipliniert sind und ein Projektmanagement-Tool (z. B. Redmine ) verwenden, können Sie Ihre Aufgaben trennen und erhalten einen übersichtlichen Verlauf Ihrer Arbeit. Dies ist sehr wichtig, wenn Sie mit dem Aufladen pro Stunde beginnen.
JK
quelle
+2 für das Agile und Project Management. Für experimentelle Funktionen verzweige ich jedoch normalerweise ein virtuelles Image (was einer Verzweigung entspricht) und öffne schließlich eine weitere Instanz meiner Umgebung. Vielen Dank für Ihre gute Antwort.
user869097
16

Die Versionskontrolle ist ein absolutes Muss für jeden Programmierer, auch für Alleinstehende. Dies bedeutet, dass Sie einfach und schnell gelöschte Dateien und komplexe Änderungen wiederherstellen können, die einfach falsch sind.

Im Grunde rettet es dich vor der blöden Scheiße, die du machst, wenn du zur Arbeit gehst.

Tom Squires
quelle
1
Das ist nicht der einzige Vorteil. Einer der Hauptvorteile ist die Fähigkeit, eine frühere Version der Software zu reproduzieren. Dies ist nützlich, wenn Sie versuchen, ein Problem zu reproduzieren und / oder festzustellen, wann ein Problem aufgetreten ist.
Marjan Venema
2
Plus 1, weil es mein Katergehirn so, so oft gerettet hat.
Nicholas Smith
1
Auch Zweige. Oft hatte ich diese Situation, in der ich eine grundlegende Veränderung in Angriff nahm und den Anruf erhielt, eine Veröffentlichung mit ersetzten Grafiken oder anderen Kleinigkeiten zu machen. Mit Filialen war es extrem einfach, einfach zu meiner Hauptfiliale zu wechseln und die Software zu erstellen. Ohne es? Ich hätte mein Haar herausgezogen, um entweder die Bruchänderung zu beenden oder um es wieder herzustellen, um eine stabile Freisetzung zu erzeugen.
Tamás Szelei
1
Vorausgesetzt, Sie schreiben nützliche Check-in-Kommentare und können auf diese Weise die Frage "Was habe ich gedacht, als ich diesen Müllhaufen geschrieben habe?"
Ned
1
@ user869097, Teil der Absicht der SE-Sites ist, dass Fragen und Antworten nicht nur für den ursprünglichen Fragesteller nützlich sind. Während Ihre ungewöhnlichen Anforderungen die Versionskontrolle möglicherweise unpraktisch machen (und ich muss sagen, dass ich nicht ganz überzeugt bin, weil Ihre Verzweigungsmethode keine Zusammenführung zuzulassen scheint), sollte die Mehrheit der einzelnen Entwickler, die die Versionskontrolle nicht verwenden, sein.
Peter Taylor
6

Wie andere sagen, ist die Versionskontrolle oder die Quellcodeverwaltung äußerst wichtig. Verwenden Sie ein DVCS und erfahren Sie alles darüber. Es spielt keine Rolle, um welches es sich handelt, auch wenn es für Sie von Vorteil sein könnte, wenn Sie sich für ein beliebtes Produkt entscheiden: Git oder Quecksilber.

Eine andere Sache, die ich nicht erwähnt habe, ist ein einstufiges Build-Skript . Dies ist keine direkte kontinuierliche Integration (dieser Satz ist meiner Meinung nach anfällig für BS), sondern ein sehr nützliches Werkzeug. Wann immer Sie ein Notfall-Update durchführen müssen, können Sie das Skript einfach ausführen und damit fertig sein. Gegen Ende des Projekts sind auch mehrere Builds pro Tag erforderlich. Ich habe die Erfahrung gemacht, dass es sich auszahlt, auch wenn der Erstellungsprozess nicht zu kompliziert ist. Sie können sogar FTP-Upload-Funktionen hinzufügen, E-Mail-Berichte verfassen, Komponententests ausführen, Installer erstellen, signieren usw. Das Skript kann von Anfang an geschrieben werden und ist im Verlauf des Projekts mit weiteren Schritten einfach zu warten und zu erweitern.

Tamás Szelei
quelle
2

Ich beantworte nur eine, die Versionskontrolle ist für jedes Projekt von enormer Bedeutung und nicht nur für Team-Projekte. Wenn Sie es verwenden, dauert es nur sehr wenig länger, aber es bietet Ihnen einen umfangreichen Verlauf, auf den Sie zurückgreifen können. Es ist keine Silberkugel, aber es ist sicherlich schön, in der Lage zu sein, zu einer Arbeitskopie zurückzukehren, wenn dies wirklich der Fall ist experimentelle Funktion hat den größten Teil der Anwendung gebrochen.

Nicholas Smith
quelle
2

Versionskontrolle ist ein absolutes Muss. Nicht nur, weil die Quelle in Ordnung ist, sondern auch wegen der Quellenarchäologie. Ein Jahr, nachdem Sie überprüft haben, wie sich eine Klasse oder Prozedur entwickelt hat, kann viel Schmerz ersparen, wenn Sie versuchen, einen Teil des seltsamen Codes zu "reparieren".

Für Methoden empfehle ich das Programmierer-Manifest . In kleinen Teams führt dies in der Regel zu hervorragenden Ergebnissen, da kein Overhead entsteht und Sie nicht im Kopf behalten müssen, wie die zahlreichen JSR-kompatiblen, rollenbasierten CMS-Webdienst-Anwendungscontainer-Frameworks von MVC funktionieren .

Daniel Iankov
quelle