Ich bin ein Auftragnehmer einer großen Firma. Derzeit sind drei Entwickler an dem Projekt beteiligt, ich selbst eingeschlossen.
Das Problem ist, dass die anderen 2 Entwickler es nicht wirklich verstehen. Mit "es" meine ich Folgendes:
- Sie verstehen die Best Practices für die von uns verwendete Technologie nicht. Nach 6 Monaten, in denen ich und andere ihnen Beispiele geben, werden schreckliche Anti-Muster verwendet.
- Sie sind "Copy and Paste" -Programmierer, die hauptsächlich Spaghetti-Code produzieren.
- Sie brechen ständig Dinge, nehmen Änderungen vor, führen aber keinen grundlegenden Rauchentest durch, um zu prüfen, ob alles in Ordnung ist
- Sie weigern sich / fragen selten nach Code-Reviews.
- Sie lehnen sogar grundlegende Dinge wie das Formatieren von Code ab.
- Keine Dokumentation zu Klassen (jsdocs)
- Angst, Code zu löschen, der nichts tut
- Hinterlassen Sie überall kommentierte Codeblöcke, obwohl wir die Versionskontrolle haben.
Ich bin immer frustrierter, wenn ich anderen Code formatiere, Fehler behebe, defekte Funktionen entdecke und Abstraktionen zum Entfernen der Spaghetti erstelle.
Ich weiß wirklich nicht, was ich tun soll. Ich versuche nicht zu frustriert zu werden, aber es ist nur ein Chaos. Ich mag diese Leute als Menschen, aber ich denke, die Codierungssituation ist so schlecht, dass ich mich schneller bewegen könnte, wenn sie einfach den ganzen Tag im Internet surfen würden.
Wäre es nicht angebracht, unseren Manager zu bitten, die anderen SVN-Commit-Zugriffe zu überprüfen? Commits können nur nach einer Überprüfung durch jemanden durchgeführt werden, der mit unseren Tätigkeiten vertraut ist. Als Auftragnehmer bin ich mir nicht sicher, ob dies der beste Schritt ist.
Gibt es eine subtile / nicht so subtile Methode, um deutlich zu machen, wie viele Dinge ich behebe?
Antworten:
Ich habe so etwas in meinem Team. Ich habe mich sehr bemüht, die Leute dazu zu bringen, das Richtige zu tun, und es hat nicht wie erwartet funktioniert, also bin ich zu einer anderen Lösung übergegangen.
Zuerst ging ich zu meinem Manager und wir arbeiteten einen Deal aus, bei dem kein Code in die Quellcodeverwaltung gelangt, es sei denn, er wird durch Unit-Tests abgedeckt. Wenn der Code ohne Komponententests eingeht, kann ich das Commit sofort rückgängig machen und den Verantwortlichen anpingen, um die Tests zu bearbeiten und dann den Code weiterzuleiten.
Mit dieser Regel führe ich regelmäßig Code-Coverage-Tools aus (in diesem Fall jacoco in unserem sbt- Build), um sicherzustellen, dass Teile korrekt abgedeckt werden. Außerdem führe ich ständig Refactorings und Code-Überprüfungen in jedem von ihnen gepushten Code durch. Da es sich um ein Java- und Scala- Projekt handelt, habe ich viele Tools, die mir dabei helfen, Dinge zu finden, die nicht vorhanden sein sollten oder die unserer Meinung nach nicht so funktionieren, nicht sicher, wie Sie dasselbe mit JavaScript tun können, aber vielleicht gibt es sie eine Lösung.
Die Hauptsache, von der ich glaube, dass sie mir dabei hilft, mitzuhalten, ist, dass ich eine klare Vorstellung davon habe, was ich von dem Projekt und seiner Hauptarchitektur erwarte. Wenn ich also etwas sehe, das diese Ansicht nicht widerspiegelt, kann ich dorthin gehen und repariere es. Sie sollten das Gleiche tun, Ihre Ansicht definieren, die zu verwendenden Muster sowie die Art und Weise, wie Code geschrieben werden soll, und sich selbst über diese Informationen informieren, damit sie (und Ihr Management) immer wissen, was passiert und was das Projekt davon abhält, weiterzumachen schneller.
Es wird sicher einen Moment geben, in dem sie entweder aufgeben und das Richtige tun oder das Management die Nachricht erhält und sie aus dem Projekt entfernt.
quelle
Ich bin mir sicher, dass Sie meine Kommentare und meinen anderen Beitrag bereits gesehen haben. Ich werde also nicht so tun, als wüsste ich die Antwort. Das Beste, was ich anbieten kann, ist eine Zusammenfassung dessen, was ich von anderen gehört / gelesen habe und einige meiner eigenen Erfahrungen in die Mischung einfließen zu lassen.
Zunächst möchte ich sagen, dass ich vor einiger Zeit auf einen Blog gestoßen bin, der einem unserer eigenen Programmierer SE-Mitglieder, Martin Blore und IMO, gehört. Dieser eine spezifische Beitrag über die TDD-Selbstaktualisierung ist sehr genau. TDD ist die letzte, höchste Ebene, die alles miteinander verbindet, aber ohne vorherige Ebenen, insbesondere die größte, Prinzipien und Praktiken der Erzeugung von klarem und lesbarem Code, wird es sehr schwierig, wenn nicht unmöglich sein, TDD zum Laufen zu bringen.
In meiner Firma wurden uns sowohl Agile als auch TDD vom Management auferlegt, und zuerst haben wir sie einfach getan, weil uns gesagt wurde (was das Gegenteil von Agile ist). Wir haben TDD zweimal ausprobiert und obwohl ich ein großer Befürworter der Verwendung automatisierter Tests bin, habe ich persönlich alle herausgeschmissen, die das Team in der letzten Version zusammengeschlagen hat. Sie waren zerbrechlich, gigantisch, kopierten / fügten den Wazoo ein und waren gespickt mit Schlafanweisungen, die sie wirklich langsam und unvorhersehbar laufen ließen. Mein Rat an Ihr Team: DO NOT TDD ... yet.
Ich weiß nicht, wie es Ihnen geht, weil Sie erwähnt haben, dass Sie erst seit 6 Monaten im Unternehmen sind und Unternehmer sind. Sind Ihre langfristigen Ziele, bei diesem Unternehmen zu bleiben, oder läuft der Vertrag aus? Ich frage, denn selbst wenn Sie etwas tun, kann es einige Zeit dauern, bis tatsächlich Ergebnisse erzielt werden.
Auch wenn Sie einem Team beitreten, dauert es in der Regel eine Weile, bis Sie genügend Glaubwürdigkeit und Respekt für Ihr Team erhalten, wo sie (Entwickler und Management) sogar alles in Betracht ziehen, was Sie vorschlagen. Nach meiner Erfahrung ist es hilfreich, wenn Sie nur wenige Brände löschen und nachweisen, dass Sie über Fähigkeiten und Kenntnisse verfügen, auf die sich andere verlassen können. Ich bin mir nicht sicher, ob 6 Monate ausreichen. Ziemlich oft trat eine neue, ehrgeizige Person dem Team bei und fragte hier, wie sie die Welt verändern könne. Traurige Realität ist, dass sie einfach nicht können.
Vorausgesetzt, Sie haben den Respekt und die Aufmerksamkeit Ihres Teams. Was jetzt?
Zunächst müssen sich sowohl das Management als auch die Entwickler des Problems bewusst sein. Managementmaßnahmen resultieren in geleisteter Arbeit. Wenn sie mit der aktuellen Menge und Qualität der Features zufrieden sind, dann ist die traurige Realität, dass sie nicht zuhören. Wie andere betont haben, wird es ohne die Unterstützung des Managements äußerst schwierig sein, irgendeine Art von Veränderung einzuführen.
Sobald Sie Managementunterstützung erhalten haben, müssen Sie tiefgreifend nach den Ursachen suchen, warum das Team so arbeitet, wie es funktioniert. Dieses nächste Thema ist seit einiger Zeit eine persönliche Aufgabe von mir. Bisher war dies meine Reise:
quelle
Ich schlage vor, dass Sie mit Ihrem Manager über das Problem sprechen, aber er wird mit ziemlicher Sicherheit nicht jeden einzelnen Check-in überprüfen wollen.
Stattdessen schlage ich vor, dass Sie eine Reihe von Unit- / Regressionstests vorschlagen, die in SVN eingebunden werden und für jedes Einchecken ausgeführt werden. Das hilft dir zumindest dabei, kaputte Builds zu vermeiden. Sie können schrittweise andere bewährte Methoden vorschlagen.
Wenn er sich als völlig unempfänglich herausstellt, sollten Sie vielleicht über seinen Kopf gehen. Wenn Sie sich dazu entschließen, müssen Sie Ihr bestes Spiel mitbringen. Wenn Sie dies tun, werden Sie sich grundsätzlich an das Management wenden, um auf einer höheren Ebene eingestellt zu werden.
quelle