Wer sollte Codeüberprüfungen durchführen?

12

In meiner Firma führt meistens der Architekt Codeprüfungen durch. Er ist ein sehr erfahrener und kluger Software-Typ, also kann er das sehr gut. Wenn Entwickler die Codeüberprüfungen durchführen, machen sie es nicht halb so gut. Wir haben versucht, den Entwicklern mehr Code-Überprüfungen zu ermöglichen, aber die Qualität der Code-Überprüfungen war nicht gut. Wir verwenden Scrum als Entwicklungsmethode.

Mit dem gegenwärtigen System gibt es jedoch zwei Probleme:

  1. Der Architekt wird zum Engpass

  2. Entwickler übernehmen keine Verantwortung für die Qualität des Codes und der Architektur (was zu allen möglichen Problemen führt).

Wie können wir diese Probleme angehen? Sollten wir ändern, wer den Code überprüft?

Eugene
quelle
1
Ich sehe es nicht als Duplikat. Die Fragen hängen zusammen, aber das mögliche Duplikat konzentriert sich auf leicht unterschiedliche Themen.
Bart van Ingen Schenau
Könnten Sie das, was Sie unter der Qualität von Codeüberprüfungen verstehen, näher erläutern? Meinen Sie die Qualität des Codes, der am Ende der Überprüfung auftaucht? Klingt für mich so, als ob Sie nur einen Entwickler haben, der Code von akzeptabler Qualität produzieren kann. In diesem Fall würde ich sagen, dass Sie größere Probleme haben ...
AakashM

Antworten:

15

Entwickler sollten Codeüberprüfungen durchführen. Sie sollten Codeüberprüfungen durchführen, da sie den Code, die Standards und Praktiken des Unternehmens kennen sollten. Indem Sie von einer anderen Person Code-Überprüfungen durchführen lassen, erklären Sie Ihren Entwicklern, dass es nicht ihre Verantwortung ist, sicherzustellen, dass der Code den Unternehmensstandards entspricht.

Wenn Sie der Meinung sind, dass sie eine Schulung für das Durchführen von Codeüberprüfungen benötigen, holen Sie sie sich. In Anbetracht Ihrer aktuellen Situation kann ein Entwickler die Codeüberprüfung durchführen und diese dann von Ihrem Architekten kommentieren lassen. Lassen Sie den Entwickler die Überprüfung dem Architekten zur Genehmigung vorlegen, bevor Sie sie an den Absender weiterleiten.

jmoreno
quelle
2
" Indem Sie von einer anderen Person Code-Überprüfungen durchführen lassen, erklären Sie Ihren Entwicklern, dass es nicht ihre Verantwortung ist, sicherzustellen, dass der Code den Unternehmensstandards entspricht. " - Ja und Nein. Sie sagen auch „ Der Code unterliegt (hoffentlich) kritische Peer Kritik, so dass Sie es gleich beim ersten Mal besser machen.“
JensG
@JensG: aber es ist kein Peer, der die Überprüfung in der Situation des OP durchführt.
Jmoreno
3
Deshalb habe ich es mutig gemacht.
JensG
8

In dieser Situation benötigen Sie das Wissen dieses erfahrenen Entwicklers, um den Rest des Teams wachsen zu lassen. Die Qualität eines Teams wird nicht durch die Fähigkeiten des besten Entwicklers bestimmt. es wird durch die Fähigkeiten des Schlimmsten definiert. Sie können Dinge ausprobieren wie:

  • Kollaborative Überprüfungen. Das hat in meiner letzten Mannschaft sehr gut geklappt. Wir stellten das gesamte Team in einen Raum mit einem Projektor und begannen, einige Gegenstände zu überprüfen. Vielleicht ist der Architekt am Anfang derjenige, der die Überprüfung leitet, aber in einigen Wochen (wir haben jeden Freitag ein oder zwei Stunden reserviert) beginnt das gesamte Team, die Schlüsselkonzepte zu sprechen und zu verstehen, die derzeit nur der Architekt zu kennen scheint.

  • Paar-Programmierung. Für mich ist dies das beste Werkzeug, um Wissen im Team zu verbreiten.

AlfredoCasado
quelle
+1 für die Paarprogrammierung. Tatsächlich war meine erste Frage "Jeder", aber die Paarprogrammierung macht es besser. Ich denke, wir können das Beste daraus machen, wenn wir es neben dem Qualitätsaspekt zu einer Lernquelle machen.
JensG
3

Ich kann zwar nachvollziehen, dass der System- / Software-Architekt alle Änderungen / Festschreibungen abzeichnet, aber die Software-Entwickler sollten in der Lage sein, Überprüfungen durchzuführen, ohne den Architekten einzubeziehen - mit Ausnahme von Schiedsverfahren.

Meine bevorzugten [*] Überprüfungsverfahren sind:

  • Gruppenänderungen nach Anforderung / Problem.
  • Laden Sie alle Entwickler, den Softwarearchitekten und den Autor der Anforderung / des Problems zur Überprüfung ein. (Sie sind nicht alle erforderlichen um eine Bewertung zu tun.)
  • Betrachten Sie eine Überprüfung als abgeschlossen, wenn:
    • Zwei Entwickler haben überprüft.
    • Alle Kommentare werden beantwortet. (Möglicherweise, indem der Software-Architekt eine Entscheidung trifft.)
    • Ein Arbeitstag ist ohne weitere Diskussion vergangen (oder alle eingeladenen Parteien haben überprüft).

Meine kurze Antwort auf Ihre Frage lautet also: Die Entwickler sollten Überprüfungen ändern.

[*] Leider funktionieren die Projekte, an denen ich beteiligt bin, nicht immer so.

Jacob Sparre Andersen
quelle
jetzt immer oder nicht immer?
Martijn
Wie Sie vielleicht erraten haben: "nicht immer". Danke, dass du es gesehen hast. Ich habe die Antwort korrigiert.
Jacob Sparre Andersen
3

Ich mag die Praxis der gelegentlichen Team-Code-Überprüfungen, die das gesamte Team und die Architekten umfassen, aber dann viele, viele Code-Überprüfungen zwischen zwei oder drei Mitgliedern des Teams.

Wenn es sich um wirklich kniffligen oder sensiblen Code handelt, ziehen Sie den Architekten oder leitende Mitglieder des Teams hinzu.

Ehrlich gesagt, klingt es irgendwie lächerlich, wenn ein Architekt Code-Reviews durchführt. Er sollte Designüberprüfungen oder gelegentliche Codeüberprüfungen informell durchführen, um sein Fachwissen zu teilen. Das Engineering-Team sollte die Verantwortung für den Code übernehmen. Wenn es Probleme gibt, werden sie es mit der Zeit besser machen.

rauben
quelle
2

Ich stimme zu, wenn nur eine Person Reviews macht, wird der Rest der Jungs wahrscheinlich einfach sagen: "Ich weiß nicht, es scheint zu funktionieren, aber lassen Sie den Schlauen herausfinden, ob es in Ordnung ist oder nicht." Ich kann mir Folgendes vorstellen:

  • Machen Sie Ihren Code öffentlich, damit jeder sehen kann, woran jeder arbeitet. Geben Sie am Anfang jeder Datei, die Code enthält, Namen ein. Vielleicht drucken Sie sie aus und stempeln sie im Bad oder wo immer Sie das Gefühl haben, es wird ein paar Blicke auf sich ziehen
  • Paar-Programmierung; Wenn Sie ein anderes Gehirn neben sich haben, werden Sie zweimal darüber nachdenken, bevor Sie Ihre Variable benenneni
  • Nehmen Sie Ihren Hausmeister und erklären Sie ihm, wie diese Vererbung funktioniert (oh, ja, es funktioniert nicht). Jemand anderem Ihren Code zu erklären, hilft. Vielleicht kompiliert es, vielleicht macht es das Richtige, aber Sie haben nicht wirklich verstanden, warum. Jetzt ist deine Chance
  • eine Reihe von Richtlinien haben und alle dazu bringen, ihnen zu folgen; Was auch immer die Richtlinie ist, es ist besser als keine Richtlinie
mihai
quelle