Springen Sie herum, um an verschiedenen Funktionen zu arbeiten, wenn Sie nicht weiterkommen. Ist dies eine Ursache für Projektfehler?

16

Bei persönlichen Projekten (oder Arbeiten), wenn man bei einem Problem hängen bleibt oder darauf wartet, eine Lösung für das Problem zu finden, oder wenn Sie zu einem anderen Abschnitt Ihres Codes springen, ist dies kein guter Grund für Ihre Anwendung wird fehlerhaft sein oder schlimmer noch nie fertig werden?

Angenommen, Sie verwenden nicht git und codieren jedes Feature für einen bestimmten Zweig. Dies kann aus dem Ruder laufen, da Sie an drei verschiedenen Features arbeiten und jeweils ungelöste Probleme haben.

Wenn Sie also mit der Arbeit fertig sind, werden Sie gestresst, weil Sie diese hängenden Probleme und den halbgebackenen Code haben, über den Sie nachdenken.

Was ist der beste Weg, um dieses Problem zu vermeiden? (Wenn du es hast)

Ich vermute, dass die Verwendung von so etwas wie git und das Erstellen eines Zweigs pro Feature der sicherste Weg ist, um diese schlechte Angewohnheit zu vermeiden.

Irgendwelche anderen Vorschläge?

Codecompleting
quelle
Haben Sie dieses Problem für sich? Oder beobachten Sie dies von einigen Ihrer Teamkollegen?
Doc Brown

Antworten:

33

Dies ist kein Problem. Ein vorübergehendes Zurücktreten von einem verwirrenden Problem ist eine der besten Möglichkeiten, um einen Durchbruch bei einem solchen Problem zu erzielen (entweder später, wenn Sie darüber nachdenken, oder wenn Sie sich das nächste Mal mit einer neuen Perspektive / einem neuen Verstand hinsetzen).

Stellen Sie immer sicher, dass Sie die Verzweigung der Quellcodeverwaltung ordnungsgemäß verwenden und sich keine Gedanken über die halben Lösungen im Code machen müssen. Manche Leute machen nie Pausen, aber das ist nur eine persönliche Entscheidung. Sie sollten jedoch nie wirklich Pausen einlegen, um sie mit anderen zu teilen.

smp7d
quelle
+1 für die Verzweigung der Versionskontrolle. Wir haben Commits gesehen, die 10 Probleme in einem Diff behoben haben, aber eines war schlecht, also keine Möglichkeit, die schlechte Änderung zu isolieren.
JBRWilkinson
8

Wie bereits erwähnt , kann das Herumspringen eine gute mentale Pause vom vorliegenden Problem bedeuten . Es ist jedoch wichtig, nicht zu vergessen, dass der Code, an dem Sie gearbeitet haben, immer noch unvollständig ist. Stellen Sie sicher, dass Sie wissen, wo Sie aufgehört haben.

Wie in smp7d bereits erwähnt, ist die Quellcodeverwaltung und -verzweigung eine hervorragende Möglichkeit, Ihren neuen Feature-Code zu trennen und festzustellen, wie er sich von der Hauptcodebasis unterscheidet.

Ein Vorschlag, den ich habe, ist, dass Sie, wenn Sie an einer bestimmten Methode arbeiten, sicherstellen, dass es einen gut benannten Komponententest um diese Methode gibt. Auf diese Weise , wenn Sie am nächsten Tag / Woche / Monat / Jahr an diesem Code arbeiten, sollen Sie in der Lage sein , klar zu sagen , was das Verfahren soll tun, auch wenn es momentan nicht den Test bestehen.

John Bubriski
quelle
1
+1 für Ihre sehr pragmatische Idee, einen fehlgeschlagenen Komponententest (z. B. anstelle eines TODO-Kommentars) durchzuführen, um sicherzustellen, dass Sie sich an das Problem erinnern, das Sie verschoben haben.
Adam Crossland
3

Ist es ein Problem? Nicht, wenn es Ihnen bei 10% der Features einfällt, die Sie implementieren möchten. Manchmal werden Sie klarer, wenn Sie zuerst etwas anderes tun.

Offensichtlich ist es ein Problem, wenn Sie für 90% der Features, die Sie implementieren möchten, nicht weiterkommen - dann benötigen Sie entweder Hilfe von anderen oder einen kleinen Kick-Ass von Ihrem Chef, um das zu beenden, was Sie begonnen haben (letzterer wird es natürlich tun) kontraproduktiv sein, wenn Sie aufgrund eines echten technischen Problems stecken bleiben).

Die beste Option für diesen Fall ist häufig der Versuch, das Feature, an dem Sie arbeiten, in kleinere Unter-Features oder "Feature-Slices" aufzuteilen, die einzeln implementiert, getestet und debuggt werden können. Für mich ist es hilfreich, diese Feature-Slices, offenen Probleme und zu erledigenden Teile in eine Liste zu schreiben, ihnen Prioritäten zuzuweisen (A, B, C reichen aus) und die Dinge mit der höchsten Priorität zuerst zu bearbeiten.

Doc Brown
quelle
Guter Punkt. Herumspringen sollte nicht die Norm sein.
smp7d
3

Ich habe die Erfahrung gemacht, dass "Herumspringen" oder besser gesagt "Herumspringen nach dem Zufallsprinzip" ein Symptom für ein dringenderes Problem ist, eines der schlecht formulierten Ziele.

Wenn Sie schriftlich eine sehr klare Vorstellung davon haben, ob es sich um Post-It-Notizen auf der Seite Ihres Monitors oder um formelle Spezifikationen handelt, die Ihrem bevorzugten Issue-Tracker beigefügt sind, wissen Sie fast immer genau, woran Sie als Nächstes arbeiten müssen . Wenn Sie immer an einem der nächsten Dinge arbeiten, haben Sie gute Chancen, mit dem Projekt erfolgreich zu sein.

Wenn Ihre Vorstellung davon, was als nächstes am wichtigsten ist, jedoch unscharf ist, ist es viel schwieriger, tatsächlich eine Arbeit zu finden, die das Problem anspricht, das Ihr Projekt lösen soll, oder genauer gesagt, es ist viel weniger schneidend. und-trocken, wenn entschieden wird, dass diese bestimmte Änderung abgeschlossen ist und ein bestimmtes Problem löst.

Wenn Sie das Ziel haben, "die Benutzeroberfläche benutzerfreundlicher zu gestalten", ist es nahezu unmöglich zu sagen, wie die nächste Korrektur aussehen soll, oder wenn Sie die "Korrektur der Benutzeroberfläche" abgeschlossen haben und mit etwas anderem fortfahren können. Wenn Sie andererseits ein Ziel wie "Kombinieren Sie diese Dropdowns zu einem Suchfeld mit automatischer Vervollständigung" haben und "'foo' automatisch zu 'Fooly Brand Baring' vervollständigen soll", ist dies offensichtlich, wenn Sie es behoben haben dieses Problem.

Schreiben Sie keinen Code, bis Sie eine klare Vorstellung davon haben, wann Sie aufhören sollen , und wenn Sie keine klaren Vorstellungen haben, arbeiten Sie daran, einen davon zu erhalten, anstatt einen anderen Zweig für eine allgemeine Funktion zu starten.

Wenn Sie eine so gute Arbeit haben (auch für persönliche Projekte), dann ist "Herumspringen" absolut in Ordnung und sicher und nützlich.

SingleNegationElimination
quelle
0

Denken Sie daran, dass das Wechseln von Kontexten Kosten verursacht, auch wenn Sie sich von einem Problem lösen können. Sie sollten dies nur versuchen, wenn Sie nicht weiterkommen oder eine geschäftskritische Aufgabe ansteht (z. B. wenn ein Kunde nicht erreichbar ist).

Wenn Sie ständig zwischen Aufgaben hin- und herschalten, kann dies zu mehreren halbfertigen Funktionen und viel Zeitverschwendung führen. Aus diesem Grund ermutigen Praktiken wie Kan-Ban Sie, ein Work-in-Progress-Limit festzulegen. Auf diese Weise können Sie sich darauf konzentrieren, höchstens wenige Aufgaben gleichzeitig zu erledigen und so den Durchsatz zu erhöhen.

jhewlett
quelle
0

Manchmal kann es hilfreich sein, die Anzahl der Features zu begrenzen, die parallel implementiert werden. Verweigern Sie die Implementierung einer zusätzlichen Funktion, wenn diese Grenze überschritten würde, bis eine andere Funktion abgeschlossen ist. Dieser Ansatz wird als Kanban bezeichnet

k3b
quelle