Ist Feature-Besitz eine gute Praxis?

22

Kürzlich wurde in meinem Unternehmen vorgeschlagen, dass sich ein Entwickler auf eine Funktion konzentrieren sollte (und nur auf eine). Das würde bedeuten, dass der Entwickler von der normalen Teamroutine Abstand nimmt und andere Verantwortlichkeiten (Besprechungen und dergleichen) aufgibt, und diese Person wäre "nur" für die Funktion in technologischer Hinsicht verantwortlich.

Für die Aufzeichnung verwenden wir SCRUM innerhalb von SAFe, und wir haben für jedes Team Vollzeitentwickler, die die Qualitätssicherung und die Produktbesitzer zwischen unseren beiden Teams (Android und iOS) teilen.

Obwohl ich zustimme, dass dies kurzfristig die Produktivität steigern würde, habe ich das Gefühl (und ich glaube, ich habe es an der Universität gelernt), dass dies aus vielen Gründen eine schlechte Praxis ist:

  • Code-Überprüfung verliert an Wert.
  • Minimaler Wissensaustausch.
  • Risikozunahme.
  • Verlust der Teamflexibilität.

Habe ich recht oder ist es überhaupt keine schlechte Übung?

mdelolmo
quelle
3
Meine sofortige Reaktion ist, dass dies vielleicht funktioniert, wenn es in Maßen durchgeführt wird, aber Sie haben Recht mit den Problemen, wenn es zu weit geht. Andererseits habe ich die Erfahrung gemacht, dass jedes Feature bereits einen De-facto-Eigentümer hat: Die letzte Person, die viel Zeit damit verbracht hat, daran zu arbeiten.
Ixrec
" Ein Entwickler sollte sich konzentrieren (und nur einer) " - Wenn Sie einen SPOF wollen, ist es eine gute Idee, dies so zu tun. Ich habe kürzlich eine empirische Theorie formuliert, die besagt, dass die Person, die Sie in einer bestimmten Situation am dringendsten benötigen (" wtf?!? Warum hat er das so geschrieben? "), In der Regel genau diejenige ist, die tatsächlich absolut unerreichbar ist.
JensG
@JensG: meh, ich habe eine empirische Theorie, die besagt, dass die Person, die ich am häufigsten benötige ("wtf? Warum hat er das so geschrieben?"), Ich bin und als solche der Busfaktor für "das Erinnern an Dinge, die hätte aufgeschrieben werden müssen zur Zeit "ist 0. Es ist nur bemerkenswerter, wenn ich von jemand anderem geblockt werde, weil ich mich darüber ärgere, anstatt den vorhandenen Code von Grund auf neu zu untersuchen ;-)
Steve Jessop
@SteveJessop: Sicher, der Versuch, die Denkweise anderer Völker neu zu konstruieren, indem ein Haufen KLOC-Code untersucht wird, während der Kunde Sie anschreit, dass er jetzt eine Lösung braucht ( oder auch! ), Ist für manche eine coole Idee, aber ich Ich bin nicht sonderlich witzig, meine Zeit damit zu verschwenden, dass ich stattdessen produktiver arbeiten könnte.
JensG
@JensG: Zum Glück sind meine Kunden sozialisierter als Ihre. Deshalb stehe ich nicht so sehr unter Druck, mich auf magisches Denken einzulassen, das zu dem Schluss führt, dass es für mich sehr wichtig ist, dass Menschen für mich weniger erreichbar sind. Aus diesem Grund dachte ich, dass das, was Sie gesagt haben, ein Scherzfaktor ist. Ja, ich bin komisch genug, um eine Situation zu finden, in der Sie unverständlichen Code kompensieren, indem Sie versuchen, mehrere Personen in der Nähe zu halten, die sich daran erinnern, wie es funktioniert. Zumal solche wtfs häufig meine eigene blöde Schuld sind und nicht die meiner Kollegen.
Steve Jessop

Antworten:

37

In meinen 20 Jahren Erfahrung ist es besser, dass die Verantwortlichkeiten für die Code-Inhaberschaft zwischen Designern rotieren oder zumindest ein Paar von Inhabern haben. Der Besitz einzelner Features hat die folgenden Probleme, von denen Sie mehrere erwähnt haben:

  • Es neigt dazu, Designer in die Schublade zu stecken und ihre Wachstumschancen zu begrenzen
  • Es legt alle Eier in einen Korb. Wenn jemand von einem Bus angefahren wird oder aussteigt, kann dies zu einer Wissenslücke führen
  • Eine einzelne Person sieht möglicherweise kein Problem im Code und ohne einen Peer-Owner-Code sind Überprüfungen weitaus weniger effektiv
  • Es ist schwierig, die Codekonsistenz und -lesbarkeit aufrechtzuerhalten, wenn jeder mit seinem eigenen Stil an Code arbeitet. Dies kann zwar mit Stilrichtlinien umgangen werden, es können sich jedoch Feinheiten einschleichen, insbesondere wenn Konventionen über Konfigurationen verwendet werden, bei denen sich die Benutzer auf das Standardverhalten verlassen
  • Entwickler können dazu neigen, ihren Code zu schützen und zu verteidigen, wenn sie ihn besitzen, was die Entwicklung des Codes hemmen kann. Wenn mehrere Leute ihn besitzen, wird diese Tendenz verringert
Jason K.
quelle
6
Absolut. Wichtig zu erwähnen, dass der Bus-Faktor das offensichtlichste Problem ist, wenn nur eine Person beteiligt ist.
JensG
1
Der Busfaktor muss jedoch gegen Kosten und YAGNI getauscht werden und ob der Bus Ihre Organisation wirklich lähmen oder nur viel Ärger verursachen würde. Wenn Sie die Wahl haben, zum Beispiel 3 Stunden pro Woche für immer zu verlieren, um sicherzustellen, dass zwei Personen über ein bestimmtes Stück Code informiert sind, anstatt nur über einen Um zu beschleunigen, falls einer Ihrer Entwickler getroffen wird, würden Sie in vielen Fällen die einmaligen Kosten wählen. Aber aus den genannten Gründen haben Wissenssilos andere Nachteile, die wichtiger sind (wenn auch weniger offensichtlich).
Steve Jessop
13

Feature-Besitz ist unvermeidlich, und gut gemacht kann eine gute Sache sein. Es hilft beim Aufbau von Meisterschaft und ermöglicht Autonomie - zwei der allgemein anerkannten Säulen des Engagements . Es macht deutlich, wer für diesen Code verantwortlich ist, und hilft bei der Delegierung, Kommunikation und anderen Aufgaben.

Aber darüber redest du nicht. Sie sprechen davon, ein neues Team zu bilden - diese Person vom Rest des Codes abzuschneiden. Das ist nicht so toll Das schränkt ihre Karriere ein. Es erhöht das Risiko für das Projekt / Unternehmen. Es schadet Kameraden.

Eine gewisse Mäßigung könnte also angebracht sein, um dies von einer schlechten Idee abzuwenden.

Telastyn
quelle
1
Ich bin nicht einverstanden, dass der Besitz von Code durch eine einzelne Person unvermeidlich ist, aber nur durch eine kleine Anzahl von Personen. Ich habe Organisationen gesehen, die schlechte Arbeit geleistet haben, Code gemeinsam genutzt zu haben, es aber trotzdem getan haben. Die effektivsten Setups, die ich gesehen habe, waren, als 2 bis 3 Personen Teile des Codes kannten und zusammenarbeiteten. Dies verringerte den Stress und die Isolation unter den Programmierern, da sie nicht alleine am Haken waren, wenn die Dinge versagten, und den verzögerten Funktionen mehr Aufmerksamkeit geschenkt werden konnte, um Termine einzuhalten, ohne die Rampen anderer Personen in der Organisation schnell zu trainieren.
Jason K.
1
@jason - sicher, es sollten ein paar Leute im Team sein, die sich wohl fühlen und in der Lage sind, an einem Stück Code zu arbeiten. Aber eine Person wird den Fachexperten am Ende einfach davon abhalten, am meisten daran zu arbeiten.
Telastyn
Ich bin mir einig, dass dies häufig vorkommt, das wahrscheinlichste Szenario ist und dass Fachwissen eine gute Sache ist. Nur Uneinigkeit ist unvermeidlich, weil ich durch erhebliche Überschneidungen einen besseren Erfolg mit mehreren KMUs in einem Gebiet gesehen habe
Jason K . ,