Könnten ein interner Repräsentant, eine Abstimmung und Abzeichen gute Programmierpraktiken fördern?


17

Lautes Nachdenken - wir Programmierer lieben all diese Abstimmungen / Abzeichen / Repräsentanten, also könnte ein solches Schema in den Code-Überprüfungsprozess eines Unternehmens eingeführt werden, um eine bessere Codierung zu fördern.

Etwas wie

  • Sie (oder andere Personen in Ihrem Namen) können eine Bewertung (z. B. Snippet, Single Commit oder Serie von) für eine Codeüberprüfung abgeben

  • Andere können es kommentieren (wäre ähnlich wie Antworten in SE)

  • Abzeichen können vergeben / vorgeschlagen werden (manche wären gut, manche wären schlecht wie "Comment Desert" oder so)

  • Sie können über den Code selbst und die Kommentare und Abzeichen abstimmen (z. B. wenn jemand ein Abzeichen vorgeschlagen hat und Sie dem zugestimmt haben / nicht zugestimmt haben).

Das Ziel eines solchen Schemas wäre

  • Machen Sie ein bisschen Spaß, um die Verwendung von Code-Reviews zu fördern

  • Verbessern Sie die Qualität (in diesem Schema lernen wahrscheinlich sowohl der Code-Rezensent als auch die Rezensenten)

  • Reduzieren Sie die Wahrscheinlichkeit, dass Code-Reviews zu Ego-Kriegen führen.

  • Geben Sie einige Metriken an, um die individuelle Leistung zu messen

Könnte das funktionieren? Gedanken?


2
Nur fand diese Seite - Stack für Code - Reviews - nette Idee für Open - Source / persönliche Projekte , aber die öffentlichen für viele Unternehmen ihre ein Rohrkrepierer codereview.stackexchange.com
Ryan

5
Es klingt, als wäre es eine gute Idee für eine Weile, aber das Einzige, was ich anders machen würde, ist, die Strafabzeichen loszuwerden. Sie tragen ein Stigma und Demut mit sich, die diejenigen, die zurückfallen, davon abhalten, aufzuholen.
maple_shaft

1
Es ist eine schwierige Frage. Ich denke, die brutale Wahrheit ist, dass wir aus Fehlern (unseren und anderen) oft mehr lernen können als aus Erfolgen. Und bei all dem blumigen Hippie-Gerede wirken faire Strafen. Fragen Sie Ihre Eltern;)
Ryan

9
Das einzige Problem ist, dass Jon Skeet immer mit 100k Wiederholungen an der Spitze sitzen wird. Jon Skeet arbeitet nicht für Ihr Unternehmen? Spielt keine rolle Er wird immer noch da sein.
Tom Anderson

1
Ein guter Punkt - vielleicht sollte das Abzeichen "Ich habe eine Klasse ohne eine einzige Kommentarzeile eingecheckt" nach einiger Zeit ablaufen oder widerrufen werden, wenn Sie etwas Positives getan haben - da es sonst keinen Anreiz gibt, sich zu verbessern, wie Sie es bereits getan haben habe 'die Note' und es spielt keine Rolle mehr
Ryan

Antworten:


20

Extrinsische Belohnungen wie Geld, Abzeichen oder Repräsentanten funktionieren kurzfristig , wie Diäten und jedes andere Belohnungs- / Bestrafungssystem.

Stattdessen sollte eine intrinsische Belohnung wie Zweck und Autonomie verwendet werden, um langfristigere Ergebnisse zu erzielen. Es ist viel schwieriger, es in die Praxis umzusetzen als einfache extrinsische Belohnungssysteme, aber es zahlt sich aus.

Viele Experten haben zu diesem Thema recherchiert. Hier sind meine beiden Favoriten:

Daniel Pink hielt auf der TED eine großartige Präsentation zu dem Thema, das leicht zu sehen und zu verstehen ist.

Alfie Kohn , Autor von Punished by Rewards , schrieb zu diesem Thema:

Bestechungsgelder und Drohungen können zu vorübergehender Compliance führen. Bieten Sie Erwachsenen eine Belohnung für den Besuch des Fitnessstudios oder Kindern für das Aufheben eines Buches, und es könnte - für eine Weile - funktionieren. Aber sie sehen sich selbst als extrinsisch motiviert. Wenn die Belohnung nicht mehr verfügbar ist, gibt es keinen Grund, weiterzumachen. Tatsächlich sind sie möglicherweise weniger an Sport oder Lesen interessiert als zuvor.

Ein weiteres Problem bei Belohnungen (und Bestrafungen) besteht darin, dass sich das Verhalten der Menschen ändert. Wenn Sie beispielsweise Ihrem Mitarbeiter einen Bonus geben, werden diese unabhängig von den anderen (unternehmensweiten) Zielen auf den Erhalt dieser Boni fokussiert. Es schafft Individualismus und Wettbewerb zwischen Abteilungen und Mitarbeitern. Ressentiments werden stattfinden und jeder wird jeden beobachten. Vor allem, wenn es Ihr Ziel ist, "die individuelle Leistung zu messen".

Der Rest der Mitarbeiter kann die Regeln des widerlegen Spiel und beenden. Der Umsatzanstieg wird dann zu einem neuen Problem.

Bitte beachten Sie, dass in dieser Community viele Vorschläge zur Verbesserung der Motivation gemacht wurden .


2
Pierre, obwohl ich einigen Ihrer Aussagen und Erkenntnissen von Daniel Pink zustimme, glaube ich nicht, dass sie auf die Lösung, wie er sie beschrieben hat, zutreffen. Es wäre anders, wenn Repräsentanten, Abzeichen usw. an eine finanzielle Belohnung gebunden wären, aber hier werden sie nur verwendet, um das Verhalten zu verbessern, das eine intrinsische Bedeutung hat. In gewisser Hinsicht unterscheidet es sich nicht von den Gaming-Aspekten des Stack-Austauschs, von denen man sagt, dass sie insgesamt von Vorteil sind. Es ist jedoch ein komplexes Problem, daher muss es sorgfältig umgesetzt werden
Homde,

2
@mko: Geld ist eine Art Belohnung. Abzeichen oder Ruf ist eine andere. Ich glaube, sie haben genau die gleiche Wirkung.

2
Pierre, ich muss nicht zustimmen. Diese Belohnungen sind nicht nur rein idealistisch, sondern werden Ihnen auch nicht von Ihrem Häuptling, sondern von Ihren Kollegen verliehen. Ihre Anerkennung ist für uns einer der wichtigsten Bezugspunkte, um unsere Meisterschaft und die Zweckmäßigkeit unseres Handelns zu messen. Ein System aus Stimmen, Abzeichen und Reputationswerten quantifiziert nur das Feedback und verdichtet die Schleife. Ich meine, deshalb funktioniert SE.
back2dos

1
Pierre, ich empfehle dir wirklich, Daniel Pinks Buch "Drive" zu lesen, in dem es um Anreize und Motivation geht. Es gibt viele Beispiele, bei denen eine finanzielle Belohnung tatsächlich nachteilig war, während eine inhärente Belohnung nicht "
Homde

1
Ja, aber wenn es sich um ein Abzeichen handelt, ist die Bewertung ein gutes Maß, um das Verhalten hervorzuheben und in Richtung intrinsischer Belohnungen zu treiben. Dh ich vielleicht nicht so viel über meine tatsächlichen Ruf kümmern , aber ich tun will ein guter Entwickler sein. Daher ist der Repräsentant möglicherweise eine gute Möglichkeit, meine absoluten Fähigkeiten zu messen, den relativen Fortschritt zu messen und mich zu motivieren, ihn und mich selbst zu verbessern. Die Dinge, die wir nicht messen können, können wir nicht ändern. Der schwierige Teil ist natürlich, die Messung so zu gestalten, dass sie tatsächlich eine Bedeutung hat und das richtige Verhalten fördert.
Homde

5

Ja, das könnte es

Aber nur, wenn Sie es sehr sorgfältig entwerfen, sonst könnte es nach hinten losgehen. Ich habe einige Anmerkungen gemacht, aber ich dachte, ich würde meine Position zusammenfassen

Für die Reputation sollte das Hauptziel darin bestehen, eine Messung bereitzustellen, anhand derer die Mitarbeiter ihre Fähigkeitsverbesserungen im Laufe der Zeit verfolgen können. Entwerfen Sie es sehr sorgfältig und denken Sie daran, dass es schwierig ist, gute Methoden zum Messen von Fähigkeiten zu finden. Das kann ich nicht von oben tun.

Abzeichen sind hauptsächlich eine "lustige" Sache, ich würde sie hauptsächlich von eher fähigkeitsorientierten Themen fernhalten. Dh Abzeichen wie "Diese Woche Nachtschwärmer" oder eine Gruppe "Versand! Abzeichen" wären in Ordnung. Wenn Sie einige geschicklichkeitsbezogene Abzeichen wie "Die meisten Fehler behoben" oder "Die meisten Fehler gemeldet" haben, überlegen Sie genau, wie diese wahrgenommen und gespielt werden können. Bei Abzeichen sollte es mehr darum gehen, das Verhalten hervorzuheben, als es IMO zu fördern. Stellen Sie sicher, dass Sie sowohl Team- als auch Einzelabzeichen haben.

Ich würde dringend gegen negative Abzeichen empfehlen, diese Dinge sollten Spaß machen und Menschen Angst davor zu machen, Fehler zu machen, ist gefährlich. Generieren Sie stattdessen eine freundliche hilfreiche E-Mail für diese Fälle.

Ich würde dringend davon abraten, sie über Abzeichen entscheiden und abstimmen zu lassen. Die Leute können ihre Vorschläge für Abzeichen einreichen, aber da ihre Auswirkungen auf die Leute ziemlich schwerwiegend sein können, sollten die verwendeten Abzeichen durch sorgfältige Entscheidung einer Person getroffen werden, die weiß, was sie tun, und nicht durch Stimmenmehrheit.

Code Reviews sind eine interessante Idee und ich denke, eine der Möglichkeiten, wie Sie einen Skill-Wert generieren können. Das Hervorheben und Erörtern von Code kann sehr hilfreich sein. Es könnte jedoch nach hinten losgehen, wenn jeder weiß, dass er potenziell alles beurteilt, was er schreibt. Die Entwicklung könnte sich verlangsamen. Besonders bei iterativen Entwicklungen, bei denen Sie manchmal schnell etwas schreiben und dann umgestalten, möchten Sie dieses Verhalten nicht.

Möglicherweise könnte dies dadurch ausgeglichen werden, dass entweder die Person, die den Code einreicht, selbst oder eine andere Person, die nur einen Code eines bestimmten Alters einreichen kann. Trotzdem kann es schwierig sein zu wissen, welche Auswirkungen das haben wird

Am Ende denke ich, dass Sie es versuchen müssen, um zu sehen, was funktioniert und was nicht, es gibt ein gutes Buch mit dem Titel Reality is broken , das interessant sein könnte. Auch Daniel Pinks Buch "Drive" ist ein Muss.


2

Meiner Meinung nach , nein , da es misst nicht die gute Praxis selbst, sondern ein Symptom (wenn andere denken , es gute Praxis).

Um ein Buch von Onkel Bob zu paraphrasieren (den Titel vergessen): Guter Code scheint fast mühelos zu sein, es lässt das Problem trivial aussehen, als ob die Sprache dafür geschaffen wäre, ihn zu schreiben.

Meiner Erfahrung nach bleibt ein solcher Code unbemerkt, und erst nach einer langen Zeit stellt sich heraus, dass dieser Code nie zu Problemen geführt hat, und vielleicht erinnert man sich dann, dass das Problem vor der Einführung des Codes ein riesiges Durcheinander von Unsicherheiten war und Unbestimmtheit. Der Code, der in Bewertungen gelobt wird, ist in der Regel derjenige, den die Prüfer an einem guten Tag sehen, wenn sie nicht in der Stimmung sind, zu picken, und der die geringsten Änderungen aufweist.


1
Ähm - re: Ihr erster Punkt - ja, aber das ist das Beste, was wir haben, nicht wahr? Codemetriken ergeben für sich allein kein gutes Bild.
Ryan

1
Gilt das nicht für irgendeine Art von Codeüberprüfungsmethode?
Nikie

Das Problem ist imho nicht, dass Sie versuchen, es zu messen, sondern dass Sie eine Rückkopplungsschleife zwischen Ihrer Messung und der Motivation des Teams einrichten. Nach meiner Erfahrung führt dies schnell dazu, dass das Team motiviert wird, die Tests zu bestehen und nicht besser zu programmieren.
Keppla

1
"Beat the tests" ist für Metriken weitaus besser geeignet als die manuelle Codeüberprüfung. Um Ihr erstes Argument aufs Äußerste zu bringen, sagen Sie, dass es keine Möglichkeit gibt, jemals zu entscheiden, dass etwas „gut“ ist. Nun, das stimmt, aber auf einer gewissen Ebene müssen wir akzeptieren, dass, wenn genug Leute denken, dass etwas gut ist, es wahrscheinlich gut ist.
Ryan

1
+1 für das 2. Argument tho - großartiger Code kann unbemerkt bleiben.
Ryan

1

Die Idee würde dem Team eine neue Dynamik verleihen. Wenn Sie das Gefühl haben, das Team ist in einem Rutsch, dann ist dies eine gute Möglichkeit, die Dinge durcheinander zu bringen.

Denken Sie daran, dass es nicht nur Einhörner und Regenbogen sein werden. Einige werden die Initiative nicht mögen, so dass die allgemeine Produktivität / Qualität darunter leiden kann. Dieses Risiko kann sich jedoch lohnen. Kommt auf deine Situation an.


1

Ich schlage vor, die extrinsische Motivation (was Sie vorschlagen, ist eine Form der extrinsischen Motivation) zu verwenden, um Menschen zu motivieren, Dinge zu tun, die "mechanisch", repetitiv und langweilig sind, wie:

  • Pünktlich zu den Meetings erscheinen
  • Stundenzettel rechtzeitig einreichen lassen
  • Aktualisierung der Dokumentation
  • Informationen mit dem Team teilen

Ich würde es nicht als Motivation für Arbeiten verwenden, die Kreativität erfordern oder bei denen die Qualität nicht objektiv gemessen werden kann. Wenn Sie zum Beispiel eine Person haben, die Widgets herstellt, und Sie können mechanisch überprüfen, ob ein Teil gut oder schlecht ist, und Sie haben einen Prozess, bei dem ein Teil nur dann hergestellt werden kann, wenn er dem genehmigten Prozess folgt, ist es produktiv, zu motivieren Der Arbeiter erhält eine enorme Belohnung für die Produktivität, da er aufgrund des Prozesses keine Abkürzungen nehmen kann, um auf Kosten der Qualität mehr Einheiten herzustellen.

Wenn Sie diese Sicherheitsvorkehrungen nicht getroffen haben, wird Ihr Versuch einer extrinsischen Motivation mit Sicherheit fehlschlagen. Die Programmierung fällt genau in diese Kategorie - wir können die Softwarequalität einfach nicht zuverlässig messen. Wenn Sie ein Widget erstellen, verlässt es die Fabrik und wirkt sich nicht auf die Arbeit aus, die Sie am nächsten Widget ausführen. Wenn Sie jedoch Software erstellen, müssen Sie diese immer wieder überarbeiten. Was Sie jetzt tun, hat langfristige Auswirkungen. Es sind diese langfristigen Effekte, die sehr wichtig sind, aber nicht gemessen werden können. Intrinsische Motivation ist ein viel nützlicherer Motivator für solche Dinge.

Das bedeutet:

  • Lassen Sie die Menschen Verantwortung für ihre Arbeit übernehmen
  • Ermutigen Sie die Menschen, miteinander darüber zu sprechen, was gut funktioniert und was nicht
  • Zeigen Sie echte Wertschätzung für die Arbeit der Menschen

Würde nicht eine Art internes SO all diese drei Dinge tun? Ich meine, warum widmen die Leute SO so viel Zeit? Und der Punkt bei der Abstimmung ist, dass es meiner Meinung nach viel wahrscheinlicher ist, in einem Bereich wie diesem fair, genau und wertvoll zu sein, weil ich vollkommen damit einverstanden bin - wir haben keine gute nicht-objektive Möglichkeit, die Qualität zu messen.
Ryan

0

Teil dieser Arbeit ist die große Anzahl von Teilnehmern, die sich nicht kennen oder täglich miteinander arbeiten müssen. Ich würde denken, dass es in einer kleinen Gruppe eher eine Möglichkeit sein würde, das System so zu spielen, dass es gut aussieht oder Ihre Konkurrenz um Beförderung schlecht aussieht. Aus diesem Grund sind formelle Peer-Bewertungen oft ein schlechtes System. In einer kleinen Gruppe sind die Leute mit dem besten Ruf diejenigen, die am politisch klügsten sind und nicht die besten Programmierer.


0

Die kurze Antwort lautet: Ja, es könnte funktionieren.

Die etwas längere Antwort lautet: Ja, es könnte funktionieren, aber es könnte auch nach hinten losgehen.

Ich bin nicht nur ein professioneller Programmierer, sondern auch ein Amateur-Verhaltensanalytiker.

Eine der wichtigsten Erkenntnisse der modernen Verhaltenswissenschaft ist, dass das Verhalten stark von seinen Konsequenzen beeinflusst wird.

Wenn Sie die Konsequenzen kontrollieren, können Sie das Verhalten bis zu einem gewissen Grad beeinflussen. Der Grad hängt davon ab, wie wichtig bestimmte Konsequenzen für jeden Einzelnen sind, dessen Verhalten Sie zu ändern versuchen, und wie einfach es für ihn ist, Ihre Konsequenzen zu vermeiden und andere zu finden, für die er bereit ist, zu arbeiten.

Als professioneller Programmierer ist eine Konsequenz des Schreibens von Code, dass ich bezahlt werde; Hör auf, mich zu bezahlen, und ich werde bald nicht mehr auftauchen. Die Bezahlung ist eine sehr wichtige Konsequenz für mich (ich ziehe eine Familie auf), und es gibt in meiner jetzigen Firma keine anderen Konsequenzen, für die ich bereit wäre zu arbeiten, anstatt bezahlt zu werden.

Wenn Sie mein Chef wären, könnten Sie entscheiden, welche Konsequenzen (Anreize, Verstärkungen) Sie mir bieten möchten. Aber Sie können sich nicht entscheiden, wie ich sie wahrnehme. Zum Beispiel könnte mein Chef beschließen, einen speziellen Parkplatz anzubieten, wenn ich als "Kodierer des Monats" ausgewählt werde. Wenn ich in San Francisco oder New York City gelebt und ein Auto gefahren hätte, wäre ich vielleicht bereit, dafür zu arbeiten. Aber wo ich jetzt wohne, ist das Parken kein Problem, und ich kann sowieso zur Arbeit laufen.

Meiner Erfahrung nach besteht das größte Risiko, das Sie mit der Implementierung eines Programms wie SO am Arbeitsplatz eingehen, darin, dass Sie als Partnerstimmen wahrgenommen werden, anstatt den Leuten zu zahlen, was sie wert sind.


"Eine der wichtigsten Erkenntnisse der modernen Verhaltenswissenschaft ist, dass das Verhalten stark von seinen Folgen beeinflusst wird." Das ist ein Befund? Ja wirklich?? Lernen wir das nicht alle sehr früh in unserem Leben? Berühren Sie keine heißen Dinge, denn die Folge ist, dass es weh tut! Allerdings trinke ich manchmal immer noch zu viel ...
Ryan

@ Ryan: Du würdest denken. Aber "Berühre keine heißen Dinge, weil es weh tut" ist keine Wissenschaft. Zeigen, wie man Verhaltensänderungen messbar, wiederholbar, reproduzierbar und vorhersehbar macht - das macht Verhaltensforschung zu einer Wissenschaft.
Mike Sherrill 'Cat Recall'
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.