Zunächst ein paar Hintergrundinformationen: Mein aktueller Entwicklungsmanager nutzt Ende dieser Woche eine weitere Gelegenheit und verlässt unser Team mit vier Vollzeitentwicklern, einem Teilzeitpraktikanten und einem Webdesigner (der technisch Teil des Marketings ist, nicht AppDev). Derzeit befördern oder stellen wir keinen neuen Manager ein.
Der vorherige Manager würde sich nie die Zeit nehmen, eine Reihe von Codierungsstandards zu entwickeln, um diese einzuhalten (um dies ins rechte Licht zu rücken: Mein einjähriges Jubiläum bei diesem Job ist in zwei Wochen und ich habe seitdem mit ihm über Standards gesprochen Ich habe begonnen). Aus diesem Grund schreiben wir alle vier Entwickler Code auf unsere eigene Weise: Einige von uns folgen den Microsoft-Namenskonventionen für .NET, andere verwenden die ungarische Notation, andere verwenden eine Mischung (z. B. Mischen PascalCase
und camelCase
für Parameternamen), und es ist völlig zufällig, wenn Sie öffnen eine Codedatei nach dem Standard, dem sie folgen wird. Das einzige, was konsistent ist, ist, dass geschweifte Klammern in separaten Zeilen stehen.
Zwei meiner drei Mitarbeiter haben sich an mich gewandt, um ein Standard-Codierungsdokument zu erstellen, das wir verwenden und in Zukunft durchsetzen können (obwohl ich technisch gesehen nicht der älteste Entwickler bin, der vierte Entwickler ist seit mehreren Jahren hier, zwei Mitarbeiter und der Praktikant bittet mich um Rat / Anleitung, aber wir haben keinen Teamleiter). Ich hatte vor, dies für eine Weile zu tun, aber der jetzt abtretende Manager würde es immer in den Hintergrund rücken; Seine Abreise gibt uns jetzt die Möglichkeit, uns etwas Zeit zu nehmen und die Dinge richtig zu konfigurieren, um eine ordnungsgemäße Softwareumgebung zu ermöglichen, und nicht das überstürzte Durcheinander, das wir derzeit haben.
Wie soll ich vorgehen und diesen Standard meinem Team vorstellen, ohne Reibungspunkte zu verursachen? Ich möchte nicht, dass es so aussieht, als würde ich "übernehmen", obwohl mir die Managerposition angeboten würde, würde ich sie akzeptieren. Wie ich bereits sagte, sind zwei von drei anderen Entwicklern an Bord, um einen zu erstellen, aber der vierte (der wahre "Senior" in der Zeitspanne) kann dies akzeptieren oder auch nicht. Ich habe vor, mit den .Net-Konventionen von Microsoft zu beginnen (z. B. keine ungarische Notation verwenden), einige persönliche Präferenzen hinzuzufügen (z. B. _camelcase
für Felder) und bestimmte seltsame Praktiken, die wir hier verwenden, als nicht zu verwenden zu bezeichnen (z. B. eine Klasse mit zu benennen) ein Unterstrich am Anfang), aber was soll ich noch einschließen? Ich möchte nicht auf architektonische Richtlinien eingehen verursachen Reibung und wir haben eine sehr große und stinkende vorhandene Codebasis, die sich nicht daran halten würde, und wir sind noch lange nicht in der Lage, eine Refactoring-Strategie zu entwickeln.
Zusammenfassend: Über grundlegende Namenskonventionen hinaus, was, wenn überhaupt, sollte ich in ein Dokument mit Codierungsstandards aufnehmen (Beispiele wären großartig - ich habe keine konkreten Beispiele dafür gefunden, wie ein solches Dokument aussehen sollte) und wie sollte ich Präsentieren Sie es meinem Team, ohne wie der neue Diktator zu klingen.
quelle
Antworten:
Sie sagen auch:
Sieht so aus, als hätten Sie bereits ein Buy-In von den meisten Teammitgliedern. Machen Sie die Erstellung des Dokuments zu etwas, das von Ihnen allen gemacht wird (wenn möglich alle vier). Wenn dies zu zeitaufwändig ist, erstellen Sie Ihr Dokument und zeigen Sie es Ihren Kollegen als Entwurf. Sobald Sie alle eine Version vereinbart und fertiggestellt haben, können Sie loslegen.
Ein guter Anfang ist ein Blick auf die verschiedenen Stylecop- Regeln - Sie müssen sich nicht an alle halten, aber diese geben Ihnen eine Vorstellung davon, was Ihr Dokument enthalten sollte. Als zusätzlichen Bonus können Sie Stylecop einfach in Ihre Lösungen implementieren und sogar in einen automatisierten Build integrieren (der Build schlägt fehl, wenn Verstöße vorliegen).
Zusammenfassen:
Sehen Sie sich vorhandene Tools und Standards an, um zu entscheiden, was Sie von Ihren erwarten.
Um zu vermeiden, dass Sie wie ein Diktator aussehen, nehmen Sie die Änderung gemeinsam vor.
quelle
Nichts.
Lassen Sie sich Zeit. Mach langsam. Verschwenden Sie keine Zeit mit Schreiben. Codierungskonventionen funktionieren nur , wenn sie Teil der gemeinsamen Kultur sind.
Wenn sie nicht Teil der Kultur sind, werden sie einfach ignoriert.
Code-Bewertungen. Es ist ein großartiger Ort, um das Problem vorzustellen, das durch Codierungskonventionen gelöst wird.
Konventionen sind meistens nur Zeitverschwendung. Wenn Sie ein tatsächliches Problem haben (dh unlesbare Programme), das Sie durch Codierungskonventionen lösen können, können Sie schnell zu 100% Konformität gelangen.
Codierungskonventionen, die lediglich persönliche Präferenzen sind, lösen kein Problem. In der Tat können Sie während einer Codeüberprüfung etwas Besseres herausfinden und tatsächlich Ihre persönlichen Vorlieben ändern.
Kanonisieren Sie nicht zu viel in einem Dokument mit Codierungskonventionen. Arbeiten Sie kooperativ, um zu einem gemeinsamen Verständnis zu gelangen.
Schlechte Politik.
Ein architektonischer Standard ist niemals etwas mit 100% iger Einhaltung. Es kann nicht sein. Es ist immer eine "vorausschauende" Beschreibung, zu der sich die Entwicklung entwickelt.
Jede gute architektonische Idee wird zu einer neuen architektonischen Richtung führen. Und so sieht Innovation aus - ein Weg, kein Ziel.
Gut. Entwickle keinen. Damit meine ich "ersticken Sie Innovationen nicht, indem Sie zu viele Dinge aufschreiben, die der bestmögliche Ansatz sein können oder nicht."
quelle
Mit so etwas wie Codierungskonventionen würde ich sagen, dass jede spezifische Konvention zu 100% einstimmig sein sollte oder einen Mittelweg finden sollte, der sie zu 100% einstimmig macht.
Legen Sie eine Frist für die Fertigstellung des Dokuments fest. Dies zwingt andere dazu, es ernst zu nehmen.
Wenn Sie das Dokument zusammenstellen, wird niemand Lust haben, Ihnen zu helfen, aber wenn Sie die Arbeit besitzen, wird Sie niemand damit bekämpfen.
Senden Sie Vorschläge für verschiedene Codierungskonventionen, die auf verschiedenen Stilen basieren, die jetzt in der Codebasis vorhanden sind. Sammeln Sie Feedback und vereinbaren Sie ein Meeting, über das abgestimmt werden kann.
Niemand verlässt das Treffen, bis jeder Konvent zu 100% einstimmig vereinbart wurde
Neue Mitarbeiter des Teams müssen sich an das Dokument halten und haben kein Mitspracherecht. Es ist wie die Verfassung zu diesem Zeitpunkt.
Oh und keine ungarische Notation. Im Ernst, ich würde lieber meine Augen papierschneiden, als Code in ungarischer Notation betrachten zu müssen.
quelle
_Customer oCust = new _Customer();
ich so etwas sehe, schüttle ich verwirrt den Kopf.Codierungsstandards werden eine Herausforderung sein, um akzeptiert zu werden. Einige Leute codieren gerne in ihrer Sandbox und machen einfach ihr Ding, obwohl es Probleme verursachen kann, wenn es kaputt geht und andere versuchen, es zu beheben.
Wenn Sie Visual Studio mit .NET verwenden, schauen Sie sich StyleCop an. Sie können die vordefinierten Regelsätze verwenden oder eigene schreiben. Lassen Sie dann alle zustimmen, bevor Sie Codeüberprüfungen durchführen (falls vorhanden), dass Sie die Einstellungen einhalten sollten.
quelle
Aus technischer Sicht:
Weisen Sie auf die Inkonsistenzen hin, die für das Team wirklich ein Problem darstellen, und definieren Sie Codierungsregeln zur Lösung dieser Probleme.
Aus relationaler Sicht:
Wenn Sie den Senior einbeziehen möchten, lassen Sie sich von seinen eigenen Codierungskonventionen inspirieren.
quelle
GetFoo
Methode geben, und dann eineGetFoo_WithSomethingElse
Methode, die dasselbe hat, aber mit einem zusätzlichen Parameter, wobei die gesamte Logik kopiert und dann die zusätzliche eingefügt wird Bits hinzugefügt) und er versteht kein anderes Klassendesign als nur viel Logik in eine CodeBehind-Datei zu stecken. Der abgehende Manager kümmerte sich nicht darum, Dinge anders zu machen, also stimmte er einfach diesem Stil zu.Solange Sie nicht der neue Manager Ihres Teams sind, benötigen Sie einen Konsens über einen Kodierungsstandard (und wenn Sie der Manager waren, sollten Sie sich wirklich bemühen, einen Konsens im Team zu erzielen, bevor Sie eine solche Entscheidung treffen "von oben "). Und es mag einfach klingen, aber nur ein Gespräch - insbesondere mit dem vierten Entwickler - kann dieses Problem lösen.
quelle
Haben Sie ein Firmen-Wiki? Oder, falls dies nicht der Fall ist, einen Server, auf dem Sie einen ablegen können?
Wenn ja, dann erstellen Sie einfach eine Seite. Nennen wir es ein lebendiges Dokument. Legen Sie einige nicht umstrittene Standards fest und ermutigen Sie alle anderen zur Zusammenarbeit. Fügen Sie alle paar Wochen weitere Elemente hinzu, regen Sie zur Diskussion an, aber auf eine Weise, die besagt: "Wenn niemand anderer Meinung ist, sollten wir damit rechnen, dass dies befolgt wird." Wenn Sie können, überzeugen Sie alle, die Standarddokumente zu abonnieren, damit Sie alle Änderungen sehen können, die Ihre Kollegen vornehmen.
Versuchen Sie auch, das Team dazu zu bringen, mit der Codeüberprüfung zu beginnen. Jeder Job durchläuft zwei Entwickler. Dies wird die Diskussion und die Durchsetzung von Standards fördern und dafür sorgen, dass alle gleich sind und nicht ein Entwickler die Regeln diktiert.
Als Antwort auf einen Kommentar bearbeiten:
Sie können Code-Reviews verkaufen, um Dev # 4 seine Weisheit zu verbreiten. Selbst wenn sein Code überprüft wird, ist es eine Gelegenheit für die Menschen, seinen magischen Code zu sehen und sich darüber zu wundern. Es ist wirklich ein Weg, die Diskussion zu fördern. Wenn sich der Programmierer und der Prüfer nicht einigen können, sollte dies an das Team gehen. Wo das Team nicht zustimmen kann, sollte recherchiert werden.
Apropos Forschung, machen Sie einige auf Code-Überprüfungen. Niemand, dessen Meinung viel zählt, hält sie für eine schlechte Idee. Schreiben Sie es dem Team, einschließlich des CIO, in einer E-Mail mit vielen Links. Es ist schwer, gegen sie zu argumentieren, ohne wie ein obstruktiver Idiot auszusehen.
Hier sind einige, um Ihnen den Einstieg zu erleichtern:
Für ein Wiki würde ich wirklich empfehlen, sich die Zeit zu nehmen, um eines einzurichten (Wikis geben die Illusion einer Zusammenarbeit, auch wenn es nicht wirklich da ist). Wenn Sie dies jedoch nicht können, erledigt ein Word-Dokument auf einem freigegebenen Laufwerk die Aufgabe.
quelle
Kommentar- und Whitespace-Standards sind gut, zusammen mit Tools zum Migrieren zwischen verschiedenen Stilen. Ich verwende Tabulatoren in meinem Python-Code, was als schlechter Stil angesehen wird. Eine einfache VIM-Funktion konvertiert jedoch bei Bedarf zwischen beiden.
Denken Sie auch an die Code-Verständnisstufen. Der Zweck eines Stils besteht darin, dem Programmierer, der den Code liest, Informationen zu übermitteln. Wenn Sie verstehen können
reduce(lambda x, y: x+y, map(lambda x: x + 1, theList))
, aber Ihre Mitarbeiter lieber sehen würden:Dann ist es wichtig, dies zu überprüfen. Gleiches gilt für Leerzeichen. Sie müssen herausfinden, mit welcher Codekomprimierungsstufe jeder vertraut ist.
Wie werden schließlich neue und aktuelle Projekte zerschnitten? Eine Klasse pro Datei, Dienstprogrammfunktionen folgen einem Namensschema, keine globalen Variablen oder Bereichsverluste, zufällige Projektdateien sind orthogonal und lose gekoppelt und so weiter. Dies bietet eine wichtige Verständnisbasis für alle. Es spielt keine Rolle, was der Codierungsstandard ist, wenn jedes Projekt so miteinander verflochten ist, dass ich die gesamte Codebasis durchgehen und das Projekt wirklich bearbeiten muss, bevor ich zwitschere
foo()
.quelle