Zunächst einmal entschuldige ich mich, weil ich nicht weiß, wie ich einen Community-Thread erstellen soll. Also hilft mir bitte jemand.
Als Entwickler auf vielen Plattformen, Technologien und sogar auf Infrastrukturebene; Ich frage mich immer, wann ich zu viel mache?!?
Es war ein nie endender Lernprozess, seit ich angefangen habe. Eine (1) Sache, die ich gelernt habe, ist, dass Anforderungen über einen längeren Zeitraum kaum gültig sind und daher ein wenig Voraussicht einen langen Weg gehen kann.
Aber wo ist das Gleichgewicht und woher weißt du, wann du Zeit verlierst und nicht gewinnst?!
development-process
scalability
Theofanis Pantelides
quelle
quelle
Antworten:
Sie tun zu viel, wenn der durchschnittliche Entwickler nicht verstehen kann, was Sie durch Lesen Ihres Codes getan haben .
Ich kämpfe gegen alle CV-gesteuerten "Architekten", denen ich begegne. Ich wünschte, die Kuppel existiert! ;)
Ich glaube, die Welt verschwendet einen riesigen Haufen Geld, mit dem wir stattdessen unser (Programmierer-) Leben verbessern könnten.
quelle
Wenn die Prozesse die Ergebnisse überholen.
Zu oft haben wir gesehen, dass schlechte Dinge beginnen, wenn sich die Entwickler mehr auf den Prozess als auf die Ergebnisse konzentrieren (wie in Bezug auf Qualität, Einhaltung der Frist usw.).
Aus diesem Grund sollte niemals vergessen werden, dass der Zweck von Codeüberprüfungen, Entwurfsmustern usw. darin besteht, den Code zu verbessern, aber sie sind nicht das Ziel selbst.
quelle
Für mich gefällt mir der Ansatz, den Kent Beck in XP vorschlägt (nicht sicher, ob es "seine" Idee oder die einer anderen Person ist, aber dort habe ich ihn zum ersten Mal gehört):
Es ist schwer genug, die Probleme von heute zu lösen, ohne zu versuchen, die Probleme von morgen herauszufinden und sie auch zu lösen.
Entwickler können viel Zeit mit Lösungen für Anforderungen verbringen, die nicht existieren, Randfälle, die niemals auftreten werden, oder sogar mit echten Problemen, bei denen die Auswirkungen des Problems erheblich geringer sind als die Kosten für dessen Verhinderung.
Dies ist die Zeit, die in Dinge gesteckt werden könnte, die Benutzer wirklich wollen und nutzen, Dinge, die ihnen Vorteile bringen, die selbst die Unannehmlichkeiten, die in dem unwahrscheinlichen Fall entstehen, dass eines dieser Dinge tatsächlich passiert, massiv überwiegen.
Abgesehen von diesem für den Benutzer nicht optimalen Ergebnis sind die Auswirkungen von Over Engineering auf diese Weise auf den Entwickler in der Regel auf komplexen Code zurückzuführen, der schwerer zu unterstützen und schwerer zu verbessern ist.
Wenn Sie also wissen oder ziemlich sicher sein können, dass etwas eine Anforderung ist oder ein Problem verursachen wird, sprechen Sie es an, wenn nicht, dann nicht.
Möglicherweise müssen Sie zurückkommen und es überarbeiten, wenn sich herausstellt, dass eine größere Anforderung als ursprünglich implementiert vorhanden war. Im Allgemeinen ist der Gesamtaufwand für das gesamte Projekt jedoch geringer, da dies in den meisten Fällen nicht der Fall ist.
quelle
Ihre Frage ist ziemlich offen, daher werde ich sie als "zu viel für einen Teil des Projekts tun" interpretieren:
Für mich ist es einfach, zu viel Zeit mit etwas zu verbringen, das dem Kunden nicht wirklich viel Gewinn bringt. Oft sind es die winzigen Dinge wie "Nun, es funktioniert, aber nicht ganz so, wie ich es auch will", bei denen es dem Kunden wahrscheinlich egal wäre, ob es so oder so funktioniert.
Wenn das passiert, sollte ich damit aufhören und Zeit mit Dingen verbringen, die wichtiger sind. Es ist besser, dass das Produkt als Ganzes funktioniert als nicht, aber Sie haben diese kleineren Teile, die perfekt funktionieren.
Das Schreiben von Tracer-Code (von Code Complete ) ist wahrscheinlich eine gute Idee, um dies zu vermeiden: Sie starten Ihr Projekt, indem Sie Code schreiben, der den gesamten Code verbindet - von der GUI (oder in der Nähe davon) bis zum Backend und dann zurück. Auf diese Weise haben Sie immer etwas, das funktioniert, und Sie haben keine Zeit damit verbracht, die kleinen Dinge zu perfektionieren, bis das Ganze läuft.
Trotzdem geht es um Disziplin und Priorisierung.
quelle
Wenn ich mit "Nein, werde ich wütend sein" antworte, habe ich das später nicht getan und es beißt mich.
IRL Ressourcen- und Zeitbeschränkungen bringen mich normalerweise dazu, bevor ich diese Frage viel stellen muss. An diesem Punkt konzentrieren Sie sich nur auf die wichtigsten / erreichbaren Teile und hoffen auf das Beste.
quelle
Ein nie endender Lernprozess! ... und ich denke es bleibt so! Das Gleichgewicht ist, wenn die Dinge effizient genug sind und Sie die Zeit haben, neben der Programmierung noch etwas anderes zu tun. Ich stimme Gablin zu "eine Frage der Disziplin und Priorisierung" und Jim Hopkins, dass es nach einer Weile instinktiv wird. Ich weiß, dass die Perfektionierung der kleinen Teile uns glücklich macht, aber am Ende geht es darum, was den Endbenutzer glücklich macht. Ich würde also sagen, dass das Gleichgewicht (oder vielleicht der Kompromiss) darin besteht, den Endbenutzer / Kunden / Kunden zuerst glücklich zu machen (was Plan A sein sollte) und dann, wenn Zeit für die Perfektionierung bleibt - Ihre "Kleinteile" und / oder effizienter zu machen oder alles andere bitte. Irgendwann muss man allerdings "genug" sagen :) sonst wird es ja ein Overkill!
Das schlimmste Szenario ist natürlich, wenn der Endbenutzer / Kunde / Kunde Sie sind! :) :)
quelle