Frage

Einer unserer Entwickler schreibt ständig Code und es in der Versionskontrolle setzen, ohne sie zu testen. Die Qualität unseres Code wird als Folge leiden.

Neben den Entwickler loszuwerden, wie kann ich dieses Problem lösen?

EDIT

Ich habe mit ihm darüber einige Male gesprochen und sogar gegeben ihm geschrieben Warnung

War es hilfreich?

Lösung

Wenn Sie systematisch durchführen Code-Reviews , bevor ein Entwickler so dass der Code begehen, na ja, Ihr Problem gelöst ist meistens. Aber dies scheint nicht Ihr Fall zu sein, so ist dies, was ich empfehlen:

  • Sprechen Sie mit dem Entwickler. Diskutieren Sie die Folgen für die anderen im Team. Die meisten Entwickler wollen durch ihre Peer anerkannt werden, so könnte dies ausreichen. Auch weist darauf hin, es ist viel einfacher, Fehler im Code zu beheben, die in Ihrem Kopf als Wochen-alte Code frisch sind. Dieser Teil macht Sinn, wenn Sie irgendeine Form von Code owneship an der richtigen Stelle.
  • Ist dies nicht nach einiger Zeit nicht funktioniert, versuche, eine Politik im Ort zu setzen, die fehlerhafte Code unangenehm für den Autor machen commiting. Eine beliebte Art und Weise ist es, die Person zu machen, die die Build verantwortlich für die Aufgaben brachen die nächsten zu schaffen. Wenn Ihr Build-Prozess vollständig automatisiert ist, suchen Sie eine andere niedere Aufgabe, anstatt zu kümmern. Dieser Ansatz hat den zusätzlichen Vorteil, dass nicht jemand insbesondere Ortung, ist es akzeptabel für alle zu machen.
  • Mit Disziplinarmaßnahmen . Je nach Größe Ihres Teams und Ihre Firma, die viele Formen annehmen.
  • Starten Sie den Entwickler. Es gibt eine Kosten im Zusammenhang mit faulen Äpfel zu halten. Wenn Sie so weit kommen, hat der Entwickler nicht über seine Kollegen Entwickler kümmern, und Sie haben bereits ein Volk Problem auf Ihre Hände bekam. Wenn die Arbeitsumgebung vergiftet wird, könnten Sie verlieren viel mehr - Produktivität weisen und Menschen weise -. Als dieser einzige schlechte Entwickler

Andere Tipps

Wenn Sie Code-Reviews tun -. Das ist ein perfekter Ort, um es zu fangen

Wir benötigen Bewertungen vor verschmelzenden Stamm Iteration, so normalerweise alles dann gefangen wird.

Ritual Schläge! Für jeden Fehler, ein Hieb der Peitsche!

(Ein Witz für alle, die es nicht bekommen)

Als ein Entwickler, der nur selten seinen eigenen Code testet, kann ich Ihnen sagen, die eine Sache, die mein Verhalten gemacht hat mich langsam verschieben ...

Sichtbarkeit

Wenn die Umgebung Code ermöglicht es heraus drängen, wartete auf Benutzer Probleme zu finden, und dann im Wesentlichen zu fragen: „Wie jetzt?“ nach einer Änderung des Codes zu machen, gibt es keinen wirklichen Anreiz Ihre eigenen Sachen zu testen.

Code-Reviews und die Zusammenarbeit fördern Sie dazu bei, ein qualitativ hochwertiges Produkt zu arbeiten, viel mehr, als wenn Sie gerade ‚Widget X‘ zu liefern, während der Mitarbeiter auf ‚Widget Y‘ arbeiten und ‚Widget Z‘

Je mehr sichtbar Ihre Arbeit ist, desto wahrscheinlicher werden Sie kümmern, wie gut es funktioniert.

Code-Überprüfung. Halten Sie alle Ihre Devs in einem Raum jeden Montagmorgen und sie bitten, sie am meisten stolze Code-Basis zu bringen Leistung der vergangenen Woche zusammen mit ihnen auf das Treffen.

Lassen Sie sie den Scheinwerfer nehmen und Aufregendes zu erklären, was sie taten. Haben sie bringen Kopien des Codes, so dass andere Entwickler die sehen können, was sie reden.

Wir begannen vor ein paar Monaten diesen Prozess, und es ist erstaunlich, die Menge der unterbewussten Qualitätskontrollen, um zu sehen, die stattfinden. Schließlich ist, wenn die Entwickler der einfach über das, was sie sind am meisten begeistert gefragt zu sprechen, werden sie total geschürt werden, um Menschen ihren Code zu erhalten. Dann andere Devs wird die Qualitätsfehler sehen und öffentlich diskutieren, warum sie falsch ist und wie der Code sollte wirklich stattdessen geschrieben werden.

Wenn dies nicht Ihre Entwickler bekommt Qualität, Code zu schreiben, er ist wahrscheinlich nicht eine gute Passform für Ihr Team.

Machen Sie es Teil seiner Annual Review Ziele. Wenn er es nicht erreichen, keine Lohnerhöhung.

Manchmal aber Sie müssen einfach akzeptieren, dass jemand für Ihr Team / Umwelt einfach nicht richtig ist, sollte es das letzte Mittel sein und kann hart sein zu handhaben, aber wenn Sie alle anderen Optionen ausgeschöpft haben kann es das Beste, was in die lange Sicht.

Sagen Sie den Entwickler Sie mögen, dass eine Änderung in ihrer Praxis innerhalb von 2 Wochen, um zu sehen, oder Sie werden Ihre Unternehmen Disziplinarverfahren beginnen. Bieten Sie so viel Hilfe und Unterstützung, wie Sie können, aber wenn Sie diese Person nicht ändern kann, er ist nicht das Richtige für Ihr Unternehmen.

Cruise Control verwenden oder ein ähnliches Werkzeug, können Sie checkins automatisch machen einen Build und Unit-Tests auslösen. Sie müßten noch um sicherzustellen, dass Unit-Tests für jede neue Funktionalität fügt er hinzu, die Sie mit Blick auf seinen checkins tun können. Dies ist jedoch ein menschliches Problem, so eine technische Lösung nur so weit gehen kann.

Warum sprechen nicht nur mit ihm? Er wird wahrscheinlich nicht wirklich beißen.

  • Machen Sie ihn "babysitten" den Build, und werden die Build-Manager. Dies wird ihm weniger Zeit geben, Code zu entwickeln (und damit jeder der Leistung zu erhöhen) und lehre ihn, warum ein gutes baut so notwendig ist.

  • Erzwingen Testfälle - Code kann nicht ohne Einheit Testfälle vorgelegt werden. Ändern Sie das Build-System so, dass, wenn die Testfälle kompilieren nicht und korrekt ausgeführt werden, oder sind nicht vorhanden, so wird die gesamte Aufgabe checkin verweigert wird.

-Adam

Veröffentlichen Statistiken über Test Code Coverage pro Entwickler, würde dies nach ihm zu reden sein.

Hier sind einige Ideen von einem Shanty.

Intro
   What shall we do with a drunken sailor, (3×)
   Early in the morning?
Chorus
   Wey–hey and up she rises, (3×)
   Early in the morning!
Verses
   Stick him in a bag and beat him senseless, (3×)
   Early in the morning!
   Put him in the longboat till he’s sober, (3×)
   Early in the morning!

usw. Ersetzen Sie „betrunkener Seemann“ mit einem „schlampig Entwickler“.

Je nach Art der Versionskontrollsystem Sie verwenden Sie Check-in Richtlinien einrichten könnten, die den Code zwingen, bestimmte Anforderungen zu bestehen, bevor der Check-in zu dürfen. Wenn Sie ein Sytem wie Team Foundation Server verwenden es gibt Ihnen die Möglichkeit, Code-Coverage und Unit-Tests Anforderungen für die Check-In zu spezifizieren.

Sie wissen, ist dies eine perfekte Gelegenheit, ihn zu vermeiden Vereinzelung (obwohl ich stimmen Sie mit ihm sprechen müssen) und einen Test ersten Prozess im Haus umzusetzen. Wenn die Regeln nicht klar, und die Erwartungen sind alle bekannt, habe ich festgestellt, dass, was Sie beschreiben, ist gar nicht so selten. Ich finde, dass das Test-First-Entwicklung Schema tun funktioniert gut für mich und verbessert die Codequalität.

Sie können zu sehr auf Geschwindigkeit konzentrieren als auf Qualität.

Dies kann einige Leute in rauschen durch Fragen dazu verleiten, ihre Liste zu löschen und sehen, was später in Bugreports kommt zurück.

Um dieses Gleichgewicht zu beheben:

  1. assign nur ein paar Elemente zu einem Zeitpunkt in Ihrem Issue-Tracking-System,
  2. Code-Review und prüfen alles, was sie „abgeschlossen“ so bald wie möglich haben, um es mit ihnen wird sofort wieder, wenn es irgendwelche Probleme gibt
  3. Sprechen Sie mit ihnen über Ihre Erwartungen darüber, wie lange ein Element richtig zu tun, nehmen

Peer-Programmierung ist eine weitere Möglichkeit. Wenn er mit einem anderen Fach Entwicklern im Team, die die Qualitätsstandards sterben und kennen Verfahren dann dies einige benifits hat:

  1. Mit einem erfahrenen Entwickler über die Schulter wird er lernen, was von ihm erwartet wird, und den Unterschied zwischen seinem Code und Code sehen, dass die Erwartungen
  2. erfüllt
  3. Der andere Entwickler kann eine Test erste Richtlinie erzwingen: nicht Code geschrieben werden, so dass bis Tests für sie geschrieben wurden,
  4. In ähnlicher Weise können die anderen Entwickler überprüfen, ob der Code der Norm ist, bevor es eingecheckt wird reduicing die nmber schlechten Check-In

All dies erfordert natürlich das Unternehmen und Entwickler zu diesem Prozess empfänglich sein, die sie möglicherweise nicht.

Es scheint, dass die Menschen haben mit viel einfallsreich und hinterhältigen Antworten auf dieses Problem kommen. Aber die Tatsache ist, dass dies kein Spiel ist. Erarbeitung von aufwendigen Peer-Druck-Systeme „name and shame“ ihn gehen nicht auf die Wurzel des Problems zu bekommen, dh. warum ist er nicht schreiben Tests?

Ich glaube, Sie direkt sein sollte. Ich weiß, Sie sagen, dass Sie mit ihm gesprochen haben, aber haben Sie versucht, um herauszufinden, Warum er ist nicht das Schreiben von Tests? Deutlich an dieser Stelle er weiß, dass er sollte sein, so sicher muss es einen Grund geben, warum er nicht tut, was er gesagt zu tun. Ist es Faulheit? Aufschub? Programmierer sind berühmt für ihren Egos und starke Meinungen - vielleicht ist er aus irgendeinem Grunde davon überzeugt, dass die Prüfung eine Zeitverschwendung ist, oder dass sein Code ist immer perfekt und nicht getestet werden muß. Wenn er ein unreifer Programmierer ist, könnte er nicht in vollem Umfang die Auswirkungen seines Handelns verstehen. Wenn er „zu reif“ ist vielleicht auch er auf seinem Weg eingestellt werden. Was immer der Grund, Adresse es.

Wenn es eine Sache der Meinung kommt nach unten, müssen Sie, um ihn zu verstehen, dass er seine eigene persönliche Meinung beiseite legen muss und nur die Regeln folgen. Machen Sie deutlich, dass, wenn er nicht kann trauen folgen den Regeln dann wird er ersetzt. Wenn er immer noch nicht, genau das tun.

Eine letzte Sache - Dokument alle Ihre Diskussionen zusammen mit allen möglichen Problemen, die als Ergebnis seiner Änderungen auftreten. Wenn es zum Schlimmsten kommt man gezwungen sein, Ihre Entscheidungen zu rechtfertigen, wobei in diesem Fall sicher Belege, die von unschätzbarem Wert sein wird.

Haften Sie ihn auf seinen eigenen Entwicklungszweig, und nur seine Sachen in den Kofferraum bringen, wenn Sie es wissen gründlich getestet wird. Dies könnte ein Ort sein, wo eine verteilte Source-Control-Management-Tool wie GIT oder Mercurial würde treffen. Obwohl mit der erhöhten Verzweigung / Zusammenführung Unterstützung in SVN, könnten Sie nicht zu viel Mühe haben es zu verwalten.

EDIT

Dies ist nur, wenn Sie nicht ihn loswerden kann oder erhalten ihn, seine Gewohnheiten zu ändern. Wenn Sie einfach nicht dieses Verhalten (durch Änderung oder Brennen) zu stoppen bekommen kann, dann ist das Beste, was Sie tun können, ist der Rest des Teams von den schlechten Auswirkungen seiner Codierung puffern.

Wenn Sie an einem Ort, wo Sie die Richtlinien beeinflussen können, einige Änderungen vornehmen. Hat Code-Reviews vor dem Check-In und macht einen Teil des Entwicklungszyklus zu testen.

Es scheint ziemlich einfach. Machen Sie es eine Anforderung, und wenn er es nicht kann, ersetzen Sie ihn. Warum würden Sie ihn behalten?

Ich befürworten in der Regel nicht, es sei denn dies alles andere fehlschlägt ...

Manchmal ist ein öffentlich-angezeigt Diagramm der Bug-count-by-Entwickler können genug Peer Druck ausübt positive Ergebnisse zu erhalten.

Versuchen Sie, die Karotte, es ist ein lustiges Spiel machen.
Z Die Continuous Integration Spiel-Plugin für Hudson
http://wiki.hudson-ci.org/ Anzeige / HUDSON / Die + Continuous + Integration + Game + Plugin

Setzen Sie Ihre Entwickler auf Zweige des Codes, basierend auf einem gewissen Logik wie pro Feature, pro Bug-Fix, pro Entwickler-Team, was auch immer. Dann schlecht Check-Ins sind auf jene Zweige isoliert. Wenn es darum geht, einen Build zu tun, zu einem Testzweig zusammenführen, finden Probleme, lösen, und dann Freisetzung in einen Hauptzweig wieder zusammenführen.

entfernen oder für die Entwickler Rechte verpflichten und haben sie ihren Code zu einem jüngeren Entwickler für die Überprüfung und Tests senden, bevor sie begangen werden kann. Das könnte eine Änderung des Verfahrens motivieren.

Sie könnten zusammen einen Bericht mit Fehlern im Code mit dem Namen des Programmierers gefunden, die für dieses Stück Software verantwortlich ist.

Wenn er eine vernünftige Person ist, besprechen Sie den Bericht mit ihm.

Wenn er für seinen „Ruf“ kümmert sich veröffentlicht den Bericht regelmäßig und es alle seine Kollegen zur Verfügung stellen.

Wenn er sich nur auf die „Autorität“ hört, tun den Bericht und eskalieren das Problem zu sein Manager.

Wie auch immer, ich habe oft gesehen, dass, wenn Menschen bewusst gemacht werden, wie schlecht sie scheinen von außen, sie ihr Verhalten ändern.

Hey, das erinnert mich an etwas, das ich auf zu lesen xkcd :)

Beziehen Sie sich auf das Schreiben automatisierte Unit-Test oder manuell Unit-Tests vor dem Check-in?

Wenn Ihr Geschäft nicht automatisierte Tests schreibt dann seine Prüfung in dem Code, der nicht ist rücksichtslos funktioniert. Wirkt sich es das Team? Haben Sie eine formalisierte QA-Abteilung?

Wenn Sie alle schaffen automatisierte Unit-Tests, dann würde ich diesen Teil des Code-Review-Prozess vorschlagen, umfassen die Unit-Tests als auch. Es wird deutlich, dass der Code nach Ihren Standards während Ihrer Bewertung nicht akzeptabel ist.

Ihre Frage ist ziemlich breit, aber ich hoffe, dass ich eine Richtung zur Verfügung gestellt.

würde ich mit Phil darüber einig, dass der erste Schritt zu ihm individuell zu sprechen und die Bedeutung der Qualität zu erklären. Schlechte Qualität oft auf die Kultur des Teams, Abteilung und Unternehmen verknüpft werden.

ausgeführt Stellen Testfälle eine der zu erbringenden Leistungen, bevor etwas betrachtet wird „done.“

Wenn Sie keine Testfälle ausgeführt haben, dann ist die Arbeit nicht abgeschlossen ist, und wenn die Frist verstreicht, bevor Sie den dokumentierten Testfallausführung haben, dann hat er nicht rechtzeitig geliefert, und die Folgen wären die gleichen wie wenn er die Entwicklung nicht abgeschlossen hatte.

Wenn Sie Ihre Unternehmenskultur nicht dies ermöglichen würde, und es schätzt Geschwindigkeit über Genauigkeit, dann ist das wahrscheinlich die Wurzel des Problems, und der Entwickler einfach auf die Anreize reagiert, die an Ort und Stelle sind - er wird dafür belohnt eine Menge Dinge halbherzig und nicht weniger Dinge richtig.

Machen Sie die Person sauber Latrinen. in der Armee arbeitet. Und wenn Sie in einer Gruppe mit Menschen arbeiten, die eine Menge indische Nahrung essen, es wird nicht lange dauern, bis sie in Linie fallen.

Aber das ist nur meine Meinung ...

Jedes Mal, wenn ein Entwickler überprüft etwas, dass nicht, in ein Gefäß legen etwas Geld nicht kompilieren. Sie werden zweimal überlegen, bevor in dann zu überprüfen.

Leider wenn man ihm schon oft gesprochen hat und ihm geschrieben Warnungen gegeben, würde ich sage es ist an der Zeit zu beseitigen ihn aus dem Team.

Sie könnten einige hilfreiche Antworten finden Sie hier: Wie man junior Programmierer schreiben Tests ?

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top