Der Code ist ein komplettes Durcheinander einer Kombination aus klassischem ASP / ASP.NET. Das Gedränge besteht darin, dass wir das große Durcheinander ausbessern oder ergänzen. Wir sind alle zu beschäftigt damit, um ein Umschreiben zu starten, also wundere ich mich ..
Wo ist der Teil in Scrum, in dem die Entwickler die Macht haben können, zu sagen, dass genug genug ist, und verlangen, dass ihnen Zeit gegeben wird, um mit dem großen Umschreiben zu beginnen? Wir scheinen uns in einer endlosen Schleife zu befinden, in der wir nur alten Code mit 'Stories' patchen.
Die Dinge werden also von nicht-technischen Leuten geleitet, die offenbar keine Lust haben, auf ein Umschreiben zu drängen, weil sie nicht verstehen, wie schlimm die Codebasis geworden ist.
Also, wer ist dafür verantwortlich, dass diese große Änderung beim Umschreiben zustande kommt? Die Entwickler? Der Scrum Master?
Die aktuelle Strategie ist einfach zu finden , Zeit und tun es selbst ohne die höheren-ups beteiligt , da sie meist zu Schuld für den aktuellen Schlamassel sind wir in .. sind <-
Einsatz schimpfen über nicht-technische Menschen sagen , technische Menschen , was hier zu tun ->
.
quelle
Antworten:
Ich bin mir nicht sicher, warum das für die Menschen so schwer ist. Sein Business Case ist genau hier:
Entwicklerzeit ist Geld. Viel Geld. Ich verließ eine Firma, die vor über einem Jahr eine Überarbeitung ihrer Benutzeroberfläche plante, und hoffte, dass die Übernahme von Scrum ihnen dabei helfen würde, nicht mehr mit den Rädern zu drehen. Was ist passiert? Gleiche alte 'gleiche alte'. Sie bauten weiterhin neue Funktionen auf und "Technical Debt" hatte keinen Geschäftsgrund, obwohl der halbe Code, den wir geschrieben hatten, bei jeder Iteration bedeutungslos wurde, da die zugrunde liegende Codebasis ein völlig veraltetes Durcheinander war. An ihrem Frontend hat sich nichts geändert, seit ich gegangen bin, und ich wurde dazu erzogen, es komplett zu überarbeiten. In den zwei Monaten, in denen ich dort war, habe ich kein bisschen CSS oder JavaScript angerührt. Ich habe gerade mit HTML und einem alten Java-Templatensystem aus den späten 1990ern rumgespielt.
Meine Antwort? Tun Sie, was Sie können, aber wenn die anderen Entwickler bereits aufgegeben haben und zu spät arbeiten, um die Sprintziele zu erreichen, anstatt praktischere Fristen geltend zu machen und darauf zu bestehen, dass die Verschuldung im technischen Bereich tatsächlich ein Blockierungsproblem darstellt, nehmen Sie das Schlimmste an und beginnen Sie, nach einem neuen Job zu suchen jetzt. Ihre Entwickler sind entweder nicht in der Lage oder nicht in der Lage, ihre Bedenken mitzuteilen, oder das Geschäft ist zu kurzsichtig, um zu verstehen, wie viel Geld sie verpissen.
Das Ignorieren dieser Probleme kostet IMMER auf lange Sicht mehr. Und nicht ein bisschen mehr, sondern VIEL mehr. Es ist nicht nur eine saugende Brustwunde, wenn es um Entwicklungszeit geht, sondern es wird auch zwangsläufig Ihr Talent reduzieren, da Entwickler, die es besser wissen und andere Optionen haben, Ihr Unternehmen wie die Pest meiden werden. Mein derzeitiger Chef ist ein Entwickler UND der Eigentümer des Unternehmens. Es gibt Dinge, die wir nicht neu schreiben, um uns auf andere Prioritäten zu konzentrieren, aber wenn etwas wirklich einen Refaktor benötigt, weil es eine konsistente Zeitsenke ist, bekommt es einen richtigen Refaktor. Und die Ergebnisse liegen auf der Hand. Das Ändern und Hinzufügen neuer Elemente wird durch mehrere Faktoren einfacher und schneller. Was einst Stunden gedauert hat, kann bei richtiger Architektur Minuten dauern. Unternehmen hören es nicht gern, aber es lohnt sich, die Dinge dafür zurückzustellen.
Scrum ist ein Fehler in Umgebungen, in denen Entwickler nicht viel Einfluss haben, IMO, weil es für die Unternehmenstypen zu einfach ist, Wartungen und Aktualisierungen zu ignorieren, um Stichpunkte zu finden, die sie in ihre Listen für erfolgreiche Initiativen aufnehmen können, wenn Auswertungszeit kommt herum. Sie werden immer ihre Häute und Beförderungsmöglichkeiten zugunsten der langfristigen bevorzugen, auch wenn es sie konsequent in den Arsch beißt, diese Themen auch zu ignorieren.
Scrum ist auch eine gewinnorientierte Branche und noch viel mehr. Unternehmen zahlen viel Geld für Scrum-Training. Menschen, die adoptieren möchten, sollten ein wachsames Auge darauf werfen, an wen vermarktet wird und wie realistisch es in ihrer jeweiligen Kultur sein wird.
Egal, wenn Sie sich wirklich für die Entwicklung interessieren, eine beschissene Codebasis, das Management mit Wachs in den Ohren und Entwickler ohne Rückgrat sind ein Rezept für Elend und eine Umgebung, die Ihre Fähigkeiten in keiner nützlichen Hinsicht verbessern wird. Zögern Sie nicht, GTFO in Bewegung zu setzen, bevor Sie tatsächlich feststellen, dass sich Ihre Bemühungen zur Behebung des Problems auszahlen.
quelle
Wenn Sie wirklich Scrum machen würden, was ich bezweifle, wäre der Product Owner dafür verantwortlich, über eine Neufassung zu entscheiden. Meistens ist ein Umschreiben keine gute Idee, übrigens, weil es keine neuen Funktionen hervorbringt, sondern nur neue Fehler einführt.
http://blog.objectmentor.com/articles/2009/01/09/the-big-redesign-in-the-sky
http://www.joelonsoftware.com/articles/fog0000000069.html
"Umschreiben ist keine gute Idee" zu erweitern:
Es ist fast immer besser, eine schrittweise Verbesserung zu versuchen. Finden Sie, wie Jarrod Robertson in einem Kommentar schrieb, ein Modul, das verbessert werden muss, und schreiben Sie eine Geschichte für den nächsten Sprint, um dieses bestimmte Modul zu verbessern. Erklären Sie dem Product Owner, warum dieses Modul Arbeit benötigt.
quelle
Ich werde wirklich stumpf sein ...
Sie haben angegeben, dass Sie gerade einen Job angefangen haben, und dennoch scheinen Sie ein Meister der Situation dort zu sein. Vielleicht habe ich die Absicht Ihrer Frage falsch verstanden, aber ich habe den Eindruck, dass Sie einen Job angetreten haben, bei dem Sie eine Reihe von Problemen sehen, und Sie sind zu der einfachsten Schlussfolgerung gelangt, in der der Code gebrochen ist und der einzige Weg in die Zukunft ist eine Umschreibung, aber haben Sie wirklich die Kosten für Ihren Arbeitgeber in Betracht gezogen, um dies zu tun?
Mit jeder vorhandenen Codebasis - egal in welchem schlechten Zustand sie sich befindet - hat der Eigentümer normalerweise eine beträchtliche Investition in die Produkte, die der Code darstellt. Mit der Codebasis sind sowohl direkte als auch indirekte Kosten verbunden. Als Softwareentwickler ist ein erneutes Schreiben oft das Letzte, was Sie tun möchten, da Sie das Risiko eingehen, Ihre Codebestände zu entwerten und somit eine geringere Rendite für alle vorherigen zu erzielen Bemühungen.
Nehmen Sie das Betriebssystem des Fensters als Beispiel. Mit jeder neuen Version wurde ein großer Teil des Codes aus der vorherigen Version übernommen. Manchmal werden ganze Bibliotheken und APIs über mehrere Betriebssystemgenerationen hinweg verschoben. Warum? Weil die Entwickler wissen, dass diese Elemente funktionieren, getestet, gepatcht und repariert wurden, um Sicherheits- und Speicherprobleme zu vermeiden, und weil sie verdammt viel Geld gekostet haben, um in diesen Zustand zu gelangen. Niemand möchte Arbeitscode wegwerfen, wenn er Geld verdient, auch wenn die Wartungskosten relativ hoch sind, die Kosten für den Neuanfang immer noch höher sind und in einem Unternehmen wie Microsoft Milliarden auf der Bank haben erlaube ihnen, von vorne zu beginnen, wenn sie wollen, aber sie tun es nicht t weil sie ihre Rendite aus ihrer Investition maximieren wollen. Ihr Arbeitgeber unterscheidet sich nicht von Microsoft, mit Ausnahme der Tatsache, dass Sie Milliarden in bar für ein Projekt ausgeben müssen.
Der Code ist also ein Chaos, und es scheint, als gäbe es Kommunikations- und Grenzprobleme zwischen den verschiedenen Bereichen des Unternehmens. Was können Sie oder Ihre Kollegen dagegen tun?
Eine Möglichkeit ist, einfach so weiterzumachen wie bisher und auf ein Wunder in der Zukunft zu hoffen. Wahrscheinlich keine gute Idee, und wahrscheinlich nur Ihre Frustration und Stress zu erhöhen.
Eine bessere Option ist es, sich einfach an die Arbeit zu machen, aber als Teil davon suchen Sie nach Möglichkeiten, Tests hinzuzufügen, um die Bereiche des Codes zu unterstützen, die am anfälligsten erscheinen, und sie dann zu überarbeiten, bis sie stabiler werden. Es fällt Ihnen leichter, ein überzeugendes Argument für die Verbesserung der Unternehmensinvestition vorzulegen, als sich zu streiten, alles einfach wegzuwerfen.
Eine noch bessere Option ist es, als Team organisiert zu sein und sicherzustellen, dass Sie jemanden mit einem ausreichenden Dienstalter an die Seite bekommen, der es dem Team ermöglicht, flexibler Zeit zu planen, um die Codebasis zu verbessern. Es ist mir egal, wie beschäftigt ein Unternehmen ist oder wie streng der Zeitplan zu sein scheint, es gibt immer wieder "Pausen" in der Aktivität, die genutzt werden können, um ein oder zwei Verbesserungen zu erzielen. Es ist jedoch noch besser, wenn die Verbesserungen während der Ausführung anderer Aufgaben vorgenommen werden können. Wenn ich es wäre, würde ich mich mit einem Manager anfreunden und ihn mit Konzepten in einigen der kanonischen Bücher bekannt machen, die Softwareentwickler lesen. Code bereinigenist wahrscheinlich die, die Ihr Team am meisten braucht. Pflanzen Sie ein paar Punkte ein, um den Code zu verbessern, und geben Sie ein paar Beispiele dafür, was Sie meinen. Ein guter Manager wird den Wert erkennen, inkrementelle Verbesserungen am Code vorzunehmen, insbesondere wenn Sie das Konzept der technischen Verschuldung beschreiben können . Helfen Sie Ihrem Teamleiter oder Manager, ein gutes Geschäftsmodell für die Verbesserung von Code zu erstellen, und er hat eine bessere Motivation, darauf zu reagieren.
Es ist auch nicht genug zu sagen "der Code ist unordentlich". Sie müssen Ihre Kollegen dazu ermutigen, die Codierung die ganze Zeit über zu üben und saubere Codierungstechniken zu verwenden, um ein wenig Aufräumen zu fördern. Ich habe ein kleines Plakat, das ich jedes Mal, wenn ich einen neuen Job annehme, ausdrucken und an meiner Bürowand aufhängen kann. Es heißt "Bemühe dich immer, den Code ein wenig schöner zu lassen, als du ihn gefunden hast". Gleich daneben füge ich ein weiteres hinzu, das besagt "Lilien müssen nicht vergoldet werden". Sie erinnern mich beide daran, dass ich immer versuchen sollte, das zu verbessern, was ich finde, aber vermeiden, einfach ein Problem mit dem anderen zu vergolden. Massive Rewrites sind oft die schlechteste Art der "Vergoldung", weil sie oft aus den falschen Gründen durchgeführt werden. Sicher, eine völlig neue Produktversion könnte irgendwann gerechtfertigt sein.
quelle
Hier ist die offizielle Definition des Scrum-Entwicklungsteams aus dem offiziellen Scrum-Handbuch . Ich lege Wert auf die Teile, die Sie direkt betreffen:
Das Entwicklungsteam ist daher für sein eigenes Durcheinander verantwortlich und sollte es selbst ansprechen, ohne jemanden außerhalb des Teams fragen zu müssen.
Nehmen Sie in jede Ihrer zukünftigen Schätzungen eine Zeit für die technische Schuldenbereinigung auf und stellen Sie sicher, dass die Qualität der von Ihnen gelieferten Software erstklassig ist.
Wenn Sie wirklich ein vollständiges Umschreiben durchführen müssen, müssen Sie das Problem in der Scrum-Restrospektive beheben. Möglicherweise bricht der Product Owner das Projekt ab und startet ein neues. Der Product Owner ist auch der einzige, der einen Sprint abbrechen kann.
quelle
Während Sie dies beschreiben, muss ich sagen, dass ich nichts sehe, was irgendetwas mit SCRUM zu tun hat, oder dass Ihr Produktentwicklungsteam derzeit ein Problem darstellt .
Das ist normal
Was Sie beschreiben, ist die normale Entropie einer Codebasis. In Ihrem Fall ist das Team wahrscheinlich weiter vom Ideal entfernt gestartet, aber dennoch wird jede Codebasis irgendwann zu einem Big Ball of Mud .
In einem vollkommen perfekten Szenario auf der grünen Wiese können Sie möglicherweise nur weiter von der absoluten Entropie entfernt beginnen und sich langsamer darauf zubewegen.
Ich stimme anderen zu, das Chaos in der Codebasis ist auf Entwickler zurückzuführen. Ich bin sicher, dass es viele Jahre vor der Einführung von SCRUM liegt.
Dies ist keine technische oder Entwicklerentscheidung, sondern eine geschäftliche Entscheidung.
Sie wissen nicht, warum die Produktbesitzer kein Neuschreiben wünschen. Sie als Entwickler denken, dass dies erforderlich ist, aber gibt es wirklich einen Geschäftsgrund dafür?
Wenn es einen echten Business Case gibt , winkt nicht nur eine Hand; "Der Code ist ein altes Durcheinander, mit dem ich auf der grünen Wiese anfangen möchte, weil ich genau das möchte" , dann würde das Management die Kosten für ein erneutes Schreiben in Anbetracht der Rendite dieser Investition in Kauf nehmen.
Sie haben kein solides Geschäftsmodell für ein erneutes Schreiben angegeben, nur eine Schimpfe über Ihre Meinung, wie alle anderen dieses Chaos verursacht haben, und Sie möchten nicht damit umgehen.
Beweis - Profit treibt Geschäftsentscheidungen an, um funktionierende Software wegzuwerfen, und nicht einige OCDs, die eine saubere Codebasis benötigen
Wenn Sie wirklich den Beweis erbringen können , nicht nur die Theorie, sondern auch den Beweis, dass das Ausgeben von
X
Dollars für ein Neuschreiben auf der grünen Wiese garantiert wird, umX * N
Dollars für das Geschäft imY
Zeitrahmen (woN
hoch undY
kurz ist) zu verdienen , erhalten Sie möglicherweise eine gewisse Unterstützung vom Management . Dies ist ein höchst unwahrscheinlicher Fall, den Sie vorlegen und beweisen können.Ansonsten muss man sich nur darum kümmern, das ist Realität. Entgegen Ihrer unerschütterlichen Behauptung, dass es ohne dieses großartige, makellose Umschreiben absolut keinen Weg vorwärts gibt, würde ich wetten, dass die von Ihnen beanstandete Codebasis in mehr als 5 Jahren noch irgendwo funktionieren und jemandem Funktionalität und Wert bieten wird Sie haben die Firma verlassen.
quelle
Ich bin in der Regel skeptisch, wenn Leute auf "große Umschreibungen" drängen. Es gibt Fälle, in denen es definitiv Sinn macht, aber in den meisten Fällen hat dieser Legacy-Code einen Wert (da er bereits in Produktion ist und für die Zwecke verwendet wird, die zu seiner Erstellung geführt haben). Das Durchführen eines großen Umschreibens ist in vielen Fällen das Gegenteil von Agilität. Wie lange würde es dauern, bis die neue Version der Anwendung so weit ist, dass sie die vorhandene Anwendung ersetzen kann?
Den Ansatz, den ich vorziehen würde, nennt Martin Fowler die Würgepflanze . Implementieren Sie neue Funktionen (einschließlich Änderungen an vorhandenen Funktionen) mit dem neuen Ansatz, aber verwenden Sie die vorhandene Anwendung als Gitter, auf dem die neuen Funktionen aufbauen können. Dies gibt Ihnen das Beste aus beiden Welten. Sie müssen nicht alles anhalten, während das große Umschreiben auf snuff gebracht wird, aber Sie erhalten den Vorteil, neuen Code zu schreiben, der die Vorteile aktualisierter Frameworks nutzt. Es ist definitiv ein schwierigerer Ansatz, als sauber anzufangen, und vielleicht nicht so sexy, aber es bietet mehr Wert für das Geschäft als alles wegzuwerfen, was da ist, weil es veraltet ist.
quelle
Wo ich bin und wie wir arbeiten, ist das, was wir tun würden: Schreiben Sie eine neue Geschichte und übergeben Sie sie dem Produktbesitzer, der dann entscheidet, wie er sie priorisieren soll. Ein Beispiel wäre: "Als Entwickler von Produkt X möchte ich den Code in diesem Bereich neu schreiben, damit die zukünftige Entwicklung effizienter ist." Die Akzeptanzkriterien müssten dann lauten: x neu schreiben / umgestalten damit es auf diese weise besser ist.
Ich weiß nicht, in welcher Situation Sie sich befinden, aber wenn wir von vorne anfangen wollen, müssen wir uns mit dem Produktbesitzer zusammensetzen und ihn überreden, warum und dann einen Stapel von Geschichten schreiben, um das Bestehende neu zu erschaffen Funktionalität.
Die anderen Dinge, die wir unternommen haben, um mit schlechtem Code und / oder Legacy-Code umzugehen, waren Aufgaben für die Überarbeitung, wenn die User Storys herausgegeben wurden.
quelle
Die Entscheidung für große Änderungen ist eine geschäftliche Entscheidung. Sie können versuchen, Geschäftsentscheidungen zu beeinflussen, indem Sie aus Ihrer Sicht an die Personen verkaufen, die für den geschäftlichen Teil der Dinge verantwortlich sind.
Jedoch; Die Änderung der Codequalität von einer Iteration zur nächsten ist eine Entscheidung des Entwicklers. Wenn Sie zulassen, dass die Codequalität abnimmt, fügen Sie technische Schulden hinzu, um die Erwartungen des Produktbesitzers jetzt zu erfüllen. Sie können die Verantwortung für den von Ihnen geschriebenen Code übernehmen und sicherstellen, dass die Codebasis verbessert wird, nicht umgekehrt. Dies bedeutet, dass Sie an Geschwindigkeit verlieren, da Sie die technische Verschuldung kontinuierlich verringern und Ihr Produktbesitzer mit Sicherheit enttäuscht sein wird. Sie können versuchen zu erklären, dass sich die Codequalität verschlechtert hat und Sie nun Schritte unternehmen, um dieses Problem zu beheben.
Jetzt ist mir klar, dass es ein schrecklicher Schritt ist, und es könnte sich verlockend anfühlen, ihn nur um einen weiteren Sprint zu verzögern, damit Sie Feature X vor einer wichtigen Frist beenden können. Leider wird es immer schwieriger, je länger Sie warten.
Übrigens handelt es sich nicht ausschließlich um ein Scrum-Problem, und ich schlage auch keine spezielle Lösung für Scrum vor. Hier geht es darum, dass Entwickler Eigentümer des Codes werden.
quelle
Die Entwickler sind dafür verantwortlich, die Welt über den aktuellen Status der Codebasis zu informieren. Dies kann während eines täglichen Scrums, einer Retrospektive oder einfach nur informell geschehen. Es mag offensichtlich erscheinen, aber wenn Sie nicht klar ausdrücken, was für ein Chaos es ist und wie viel Zeit Sie damit verschwenden, wird es niemandem auffallen. Der Scrum-Master ist in der Regel dafür verantwortlich, die Informationen an die PO und die für das Projekt verantwortlichen Personen weiterzuleiten, sie davon zu überzeugen, dass etwas getan werden muss, und dann die Implementierung einer Lösung durch das Team zu erleichtern.
Als Randnotiz, ein Big Bang Rewrite ist IMO nicht unbedingt die richtige Antwort auf diese Art von Problem. Wie satt die Entwickler mit der aktuellen Codebasis sind, kleine messbare Schritte in Richtung einer saubereren Architektur sind oft eine bessere Idee, da Sie den Fortschritt sehen, Ihre Arbeit rechtfertigen können, indem Sie der PO regelmäßig die Erfolge zeigen und den Implementierungsprozess für neue Benutzer fortsetzen parallele geschichten statt sich in einer endlosen, ressourcen-monopolisierenden verjüngungskur zu verlieren.
quelle
Du hast gefragt:
Als Manager und Entwickler besteht die einfachste Antwort auf Ihre Frage darin, dass Scrum, eine andere Methode oder ein Geschäftsszenario, in dem der Entwickler die Befugnis hat, genug zu sagen und a zu fordern, keine Rolle spielt umschreiben. Viele Leute hier haben gute, stichhaltige Argumente vorgebracht, um zu erklären, warum Umschreibungen häufig schlechte Ideen sind, und um zu erklären, wie Änderungen inkrementell und agil herbeigeführt werden können und sollten. Und ich stimme ihnen allen zu.
Aber das Endergebnis ist noch einfacher. Du wirst diese Entscheidung NIE treffen müssen. Sie sind der Angestellte, und die einzige Entscheidung, die Sie wirklich treffen müssen, ist "werde ich weiterhin für diese Arschlöcher arbeiten oder einen neuen Job finden, der meine verrückten Fähigkeiten fürchtet." Ihr neuer Job erlaubt Ihnen auch nicht, diese Entscheidung zu treffen, aber zumindest werden Sie das Gefühl haben, Ihr Schicksal unter Kontrolle zu haben, wenn Sie von Job zu Job springen.
quelle
Ich fühle deinen Schmerz, bin mir aber nicht sicher, was es mit Scrum zu tun hat. Die Entscheidung, ob Code neu geschrieben werden soll, hängt nicht vom Entwicklungsprozess ab.
quelle
Warte was?
Sie flicken ? Sie sollten umgestalten . Halten Sie sich an agile Werte. Verwenden Sie TDD und geeignete Praktiken und die Situation wird sich irgendwann verbessern.
quelle