Es gibt mehrere Regeln, die ich Programmierer immer wieder auffordern muss, sehr oft zu befolgen. Sie schreiben Code und wenn es funktioniert, ist die Arbeit für sie erledigt. Die meisten Grundregeln könnten sein:
- Änderungen übernehmen
- Schreiben Sie keine Modellprobleme in View oder Controllern
- Vermeiden Sie Hardcoding
Kannst du mir etwas über deine Erfahrungen erzählen? Wie schaffen Sie das?
project-management
code-reviews
Listen Sugra
quelle
quelle
Antworten:
Alle Wissensarbeiter müssen aufgefordert werden, qualitativ hochwertige Arbeit zu leisten. Die Qualität leidet, wenn sie das Gefühl haben, dass ihnen willkürliche Zeitbeschränkungen auferlegt werden. Warum nicht einfach Dinge machen, die "gut genug" sind, wenn alle daran interessiert sind, die Spezifikationen zu erfüllen und die Fristen einzuhalten?
Ihre Beschwerdeliste ist ein Symptom für ein Unternehmen, das nur kurzfristige Ziele erreicht und keinen Wert auf hohe Qualität legt. Führen Sie ein Fünf-Sterne-Hotel oder eine Raststätte?
quelle
Um die Grundregeln befolgen zu können, müssen sie die Regeln kennen und ihnen zustimmen.
Der Weg, dies zu handhaben, besteht darin, gemeinsam ein Kodierungsrichtliniendokument zu erstellen , mit dem sich jeder einverstanden erklären kann. Versuchen Sie nicht, sie dazu zu zwingen, es wird nach hinten losgehen, wenn Sie dies tun.
Stellen Sie also das Team zusammen und arbeiten Sie an einer gemeinsamen Definition Ihrer Grundregeln!
Tun Sie es als Workshop, in dem alle Stimmen gehört werden. Timebox es, um endlose Diskussionen zu vermeiden. Sie versuchen, mehrere Köpfe zusammenzubringen, und möchten die Bühne mit der positiven Bemerkung eröffnen, dass Sie alle respektvoll und aufgeschlossen sein sollten (das Schreiben von Code ist persönlich ...).
Diese Richtlinien sollten lebendig geändert werden, wenn das Team der Ansicht ist, dass etwas hinzugefügt oder geklärt werden sollte.
quelle
Was ist deine Rolle? Wenn Sie nur ein anderer Entwickler sind, der ein besonderes Interesse an der Codequalität hat, verfügen Sie wahrscheinlich nicht über die Berechtigung, diese Ideen an das Management weiterzugeben, um Codestandards festzulegen, die eingehalten werden sollen / müssen gefolgt. Wenn Sie ein Manager / Teamleiter / Architekt sind und über eine gewisse Autorität verfügen, können Sie diese Praktiken selbst festlegen. Richten Sie ein Standarddokument und einen Codeüberprüfungsprozess ein, um diese Probleme zu beseitigen.
Es wird kein magischer Schalter sein, den Sie einschalten können. Es wird ein langsamer Prozess sein und niemals zu 100%. Das war sowieso meine Erfahrung.
quelle
Es muss eine sinnvolle Kombination aller bisherigen Antworten sein. Wenn Sie von einer Gruppe intelligenter Leute (Entwickler) sprechen, müssen Sie ihnen letztendlich Gründe nennen, warum das Verhalten wichtig ist, und ihnen ausreichend Kontrolle darüber geben, wie dieses Verhalten implementiert wird, damit sie es richtig machen können. Mandate von oben sind in der Regel ein Problem für kluge Köpfe, denn wenn sie sich nicht darauf geeinigt haben, dass das Problem ein Problem ist, verbringen sie wahrscheinlich mehr Zeit mit der Erledigung des Mandats als mit der Befolgung der Regel.
Hier sind einige meiner Taktiken:
Änderungen bestätigen:
Zunächst muss sich das Team darauf einigen, wann und was zu begehen ist. Unabdingbar ist ein Build-Setup, das Sinn macht, damit die Leute sich nicht zurückhalten, nur weil sie nicht wissen, wo sie etwas ablegen sollen. Und ein Konsens darüber, wann und wie oft Sie einchecken sollten. "Brechen Sie nicht den Build" ist eine naheliegende gute Regel, aber wie wird das überprüft und wem wird davon erzählt? Eine andere Grundlinie ist "es wird nicht gemacht, wenn es nicht eingecheckt ist".
Die meisten Entwickler, die ich kenne, checken gerne den Code IF ein:
Eine Sache, die mir kürzlich aufgefallen ist, war, dass das Einchecken häufiger und weniger schmerzhaft wurde, als wir uns auf ein neues CM-Tool vorstellten. Unser Team ist Vorreiter bei Rational Team Concert, das zuvor Clearcase verwendet hat. Ich möchte keine Werbung für Tools machen, aber die neue Welle von Streaming-Checkins mit vielen kleinen, schnellen Zusammenführungen macht es verlockender, früh und häufig einzuchecken.
Wenn Entwickler für die Beseitigung von CM-Schmerzen verantwortlich sind, erhöht sich in der Regel die Anzahl der Eincheckvorgänge.
Architektur einhalten - Modellprobleme in Views und Controllern nicht schreiben
Ich stelle das in den allgemeinen Klumpen von "die Architektur richtig machen". Ich bin damit einverstanden, wer auch immer Peer Reviews gesagt hat - der Gruppendruck ist dafür groß. Eine der Möglichkeiten, wie ich im Allgemeinen sehe, wie sich Menschen für Best Practices in diesem Bereich engagieren, ist, wenn ihre Kollegen sie fragen, warum sie es anders gemacht haben (der nicht so richtige Weg). Im Allgemeinen wird die "Warum" -Frage die Menschen auf den Weg bringen, sich selbst darüber klar zu werden, warum sie es anders hätten tun sollen. Wenn die Leute einen guten Grund für die Best Practice haben, ist es viel einfacher, daran festzuhalten.
Wenn eine Person formal mit einer Entscheidung verknüpft ist, kann es einfacher sein, Fehler in diesem Bereich zuzuweisen. Wenn also eine Person für die Behebung von Fehlern in einem Bereich mit fehlerhaftem Design verantwortlich ist, muss vorher etwas richtig gemacht werden Sie können zu etwas Neuem übergehen und Aufregendes kann ein großer Motivator sein.
Vermeiden Sie Hardcoding
Ich beginne mit klaren Codierungsstandards und der Integration einer Codierungsstandardüberprüfung in Peer Reviews. Hard Coding ist eines der Dinge, die leicht ein Kontrollkästchen auf einer Peer-Review-Agenda sein können.
Ich befürchte, dass dies die einzige Sache ist, bei der ich gesehen habe, dass es die Rolle des Teams ist, die zur Durchsetzung der Regel führt. In Teams, die ich geleitet habe, lassen wir im Allgemeinen niemanden weitermachen, bis er die Kommentare aus einer Peer-Review seines Codes korrigiert hat. "Keine harte Kodierung" ist ein häufiger Peer-Review-Kommentar.
Im Allgemeinen
Ich denke, mit fast jedem Best Practice müssen Sie Ihre Schlachten auswählen. Kein Team wird absolut perfekt. Aber Sie können Ihre Hauptschmerzpunkte im Auge behalten und sie in Gruppen angehen. Ich denke, es wird die Rolle des Führers, wirklich zu wissen, was für ein Problem das Team hat, im Gegensatz zu einer nervigen Eigenart eines bestimmten Individuums.
Wenn es Ihrem Team nicht gelingt, ein bestimmtes Best Practice zu bewerkstelligen, muss die erste Frage lauten: "Wie viel Schaden verursacht dies?" Wenn die Antwort "minimal" ist, dann ist es wahrscheinlich die Zeit nicht wert. Einige bewährte Methoden sind für bestimmte Systemtypen am relevantesten - obwohl sie insgesamt gut sind, lohnen sie möglicherweise nicht den Kampf um Systeme, bei denen die Praxis nicht häufig auftritt oder ein wesentlicher Teil des Systems ist.
Ist die Antwort auf "Wie viel Schaden?" ist "VIEL !!!", dann können Sie damit beginnen, dem Team zu zeigen, dass all diese Schmerzen und Leiden beseitigt werden können, indem Sie diesen einen Schwachpunkt in Best Practices festlegen. Die meisten Menschen sind glücklich, Schmerzen und Leiden zu vermeiden, und es ändert sich der Dialog von "Mach das, weil ich es dir gesagt habe" zu "Wir haben uns dazu entschlossen, weil es besser ist".
quelle
Code-Review. Akzeptieren Sie nur gut geschriebenen Code, der keine Fehler enthält.
quelle
Mindestens :
Wählen Sie außerdem aus, was basierend auf Ihrer Organisation, den Entwicklern und Ihrer Rolle im Team funktioniert.
quelle
Meine Rolle ist Manager, aber als kleines Team entwickle ich mich und leite lieber als Trainer.
Auf Elektroden im Stuhl, die mit einem Code-Parser verbunden sind, wurde bereits hingewiesen, aber Programmierer scheinen keine Angst zu haben. Feuern klingt nicht nach einem guten Ansatz, da dies den Verlust wertvoller Vermögenswerte bedeutet.
Ich werde mir all diese Tools ansehen und bin offen für alle anderen, die du mir sagst.
quelle
Es gibt drei Möglichkeiten, um dieses Problem zu beheben:
Statische Analyse des Quellcodes zur Überprüfung auf Probleme mit der Codierungskonvention. Verwenden Sie Tools wie cppcheck und solche von Grammatech . Wikipedia hat eine gute Liste: http://en.wikipedia.org/wiki/List_of_tools_for_static_code_analysis . In der Regel verfügen die meisten Versionsverwaltungssysteme über Hooks, mit denen Sie direkt beim Einchecken nach solchen Problemen suchen können. CVS-Hooks finden Sie unter folgendem Link: http://goo.gl/F1gd2 . Nichtbeachtung bedeutet fehlgeschlagenes Einchecken und mehr als 3 Fehler bedeuten, dass sich der Entwickler dem Team erklären muss.
Während des Codierungsprozesses selbst werden Probleme an den Entwickler gemeldet. Ein guter Weg, dies zu tun, sind benutzerdefinierte Skripte, die in die IDE Ihrer Wahl integriert sind. Überprüfen Sie diesen Link aus: http://goo.gl/MM6c4
Folgen Sie agilen Prozessen und stellen Sie sicher, dass die Codeüberprüfung Teil des Sprints ist
quelle
Hier ist mein 3-Stufen-Plan:
: D
Im Ernst, wenn sie nicht daran glauben, etwas anderes als Code zu schreiben, brauchen Sie ein abgerundeteres Team. Eine Programmiererin, in der ich gearbeitet habe, hat verschiedene Verzeichnisse auf dem Computer als CM verwendet. Wir haben uns fast ein Jahr lang mit ihrem Programmierer gestritten (da Änderungen beim Kopieren und Einfügen von altem Code zu Fehlern führen würden). Wir haben sie schließlich einfach gefeuert.
quelle
Alternativ ist es das grausamste, aber sehr überzeugendste, ihnen eine extrem schlecht geschriebene Codebasis zu überlassen, wenn ein enger Zeitplan eingehalten wird. : D
Lassen Sie sie zur Abwechslung eine gut geschriebene Codebasis mit einem engen Zeitplan beibehalten.
Im Allgemeinen bedeutet die mangelnde Bereitschaft, bestimmte Standards anzupassen, einen Mangel an Erfahrung in der Teamarbeit.
Am Ende lernen die Menschen nur aus Fehlern. Beheben Sie NIEMALS Probleme, die auf der Sturheit einer anderen Person beruhen. Wenn es für das Projekt wirklich wichtig ist (dh Ihr Unternehmen wird verklagt, wenn Sie nicht innerhalb von N Tagen liefern), stellen Sie es zuerst aus dem Projekt.
quelle
Ich denke, Sie als Programmierer werden Ihre Einstellung zu diesen von Ihnen angesprochenen Themen erst ändern, wenn Sie erkennen, dass diese Dinge zu einem Nutzen oder Vorteil für Sie führen werden. Erkläre ihnen, warum sie diese Dinge tun sollen. Lassen Sie sie die Vorteile noch besser erleben.
quelle
Stellen Sie einen professionellen Software-Ingenieur ein. Und dann am schwächsten feuern. Dann ersetzen Sie langsam diejenigen, die nicht adoptieren können. Solche Leute zu haben, kann langfristig mehr Schaden als Gewinn bringen.
Die Hauptidee dabei ist, dass der Fachmann den größten Teil seiner Arbeit erledigt und andere entlassen werden, was nicht zu einer Verringerung der wertvollen Humanressourcen führt.
quelle
Es ist ein bisschen ekelhaft, aber ich habe Code Complete für ein paar Monate im Badezimmer liegen lassen. Ich bin nicht sicher, ob es effektiv war, aber es schien zu der Zeit eine gute Idee zu sein.
quelle
Was sind die Konsequenzen für die Nichteinhaltung der Regeln und die Belohnungen für die Einhaltung der Regeln? Wenn die Antwort die gleiche ist - nichts - viel Glück, wenn ich etwas Traktion bekomme. Ich schlage einen abgestuften Ansatz vor. Nehmen Sie sie zuerst zusammen und besprechen Sie, ob sie die Regeln einhalten. Der nächste Schritt besteht darin, sie in Codeüberprüfungen einzuschließen. Sie können auch Karotten und Peitschen probieren. So etwas wie jeder, der eine Akte über Nacht ausgecheckt lässt, muss Donuts zum nächsten wöchentlichen Treffen mitbringen. Eine Karotte kann jeder sein, der die Regeln für einen ganzen Monat befolgt und ein Wochenende in Vegas bekommt. Für zwei.
Oder feuern Sie den schlimmsten Täter und lassen Sie den Rest ausschwitzen.
quelle
Lassen Sie sie unter den Folgen leiden, die Sie vermeiden möchten, indem Sie diese Regeln anwenden. Nur so können sie wirklich verstehen, warum Sie fragen, z. B.: Machen Sie ein kleines, kontrolliertes Durcheinander, das sie korrigieren müssen.
quelle
Wenn diese Crew wirklich Probleme beim Einchecken von Änderungen hat, sich an die Trennung von Bedenken hält und keine magischen Konstanten fest programmiert , würde ich die gesamte Crew abfeuern und sie durch echte Programmierer 1 ersetzen, die sich so schnell wie möglich um ihr Handwerk kümmern. Sei es einer nach dem anderen oder eine Menge, die ich nicht sagen kann, aber diese Joker müssen gehen.
Die Art der Codierung, die Sie beschreiben, eignet sich für Einweg-Skripts, die nur einmal verwendet werden können. Es ist nicht so, wie man eine echte Anwendung erstellt. Wenn sie als professionelle Programmierer bezahlt werden, ist es ihre Aufgabe, so etwas zu wissen.
1 Dies wird oft als Scherzbegriff für imaginäre Personen verwendet, die ihren Code direkt in Binärform oder in etwas ähnlich Lächerlichem schreiben. Hier scherze ich nicht. Ich bin ein ziemlich unerfahrener Programmierer und ich würde diese Dinge nicht erfahren müssen, weil mir mein Handwerk am Herzen liegt. Dies sind keine echten Programmierer, mit denen Sie es zu tun haben.
quelle
Die Aufgabe eines Managers ist es, nicht der Freund des Mitarbeiters zu sein, manchmal muss man der Bösewicht sein. Das Erzwingen von Codierungsstandards und -verpflichtungen, die Verweigerung der Einhaltung von Proscibed-Architekturen, die Nichtverwendung vorgeschriebener Tools usw. sind die Zeiten, in denen Sie unbeliebt sein müssen.
Drücken Sie die Richtlinien klar aus. Führen Sie formelle Codeüberprüfungen durch und prüfen Sie, ob die Richtlinien eingehalten werden. Erlauben Sie ihnen nicht, zu einer anderen Aufgabe zu wechseln, bis alle Probleme aus der Codeüberprüfung entschieden sind.
Wenn sich die Richtlinie darauf bezieht, keinen Code festzuschreiben, ist eine schriftliche Warnung erforderlich, wenn sie dies nicht tun können, wenn sie dazu aufgefordert werden. Wenn sie keinen Code schreiben, haben sie für Sie keinen geschrieben.
Wenn sie sich nicht verbessern, nachdem ihnen eine angemessene Chance zur Verbesserung eingeräumt wurde, feuern Sie sie ab. Unprofessionelle Entwickler belasten Ihr Team, egal welche Art von Code sie schreiben. Sie beeinflussen andere mit ihrem Mangel an Professionalität und es ist nicht zu tolerieren. Sie sind keine guten Leute, die man auf jeden Fall behalten kann. Gute Entwickler schreiben ihren Code fest, gute Entwickler folgen Architekturentscheidungen, auch wenn sie ihnen nicht zustimmen, und gute Entwickler schreiben keinen harten Code. Sie werden nichts außer Kopfschmerzen verpassen, wenn Sie die Cowboy-Programmierer loswerden.
quelle