Wir sind gerade auf eine dieser Situationen gestoßen, die gelegentlich auftritt, wenn ein Entwickler während eines Projekts für einige Tage krank wird.
Es gab ein paar Fragen dazu, ob er die neueste Version seines Codes festgeschrieben hatte oder ob auf seinem lokalen Computer etwas Neueres vorhanden war, das wir prüfen sollten, und wir hatten eine Lieferung an einen Kunden anstehend, sodass wir nicht warten konnten ihn zurückzukehren.
Einer der anderen Entwickler meldete sich als er an, um eine Unordnung von Arbeitsbereichen zu sehen und zu finden, von denen viele anscheinend von denselben Projekten stammten, mit Zeitstempeln, die unklar machten, welche "aktuell" waren (er erstellte einige Prototypen für andere Versionen des Projekts als sein "Kern" ein).
Offensichtlich ist dies ein Nackenschmerz, aber die Alternative (die strenge Standards für die Arbeitsweise jedes Entwicklers auf seinem eigenen Computer zu sein scheint, um sicherzustellen, dass jeder andere Entwickler die Dinge mit minimalem Aufwand aufnehmen kann) wird wahrscheinlich viele zerbrechen Entwickler persönliche Arbeitsabläufe und führen zu Ineffizienz auf individueller Ebene.
Ich spreche nicht von Standards für eingecheckten Code oder gar allgemeinen Entwicklungsstandards, sondern davon, wie ein Entwickler lokal arbeitet, eine Domäne, die (meiner Erfahrung nach) im Allgemeinen fast ausschließlich der Kontrolle des Entwicklers unterliegt.
Wie gehen Sie mit solchen Situationen um? Gehört das zu den Dingen, die gerade passieren und mit denen Sie sich auseinandersetzen müssen: Der Preis, den Sie für Entwickler zahlen, darf so arbeiten, wie er am besten zu ihnen passt?
Oder bitten Sie Entwickler, Standards in diesem Bereich einzuhalten - Verwendung bestimmter Verzeichnisse, Benennung von Standards, Notizen in einem Wiki oder was auch immer? Und wenn ja, was decken Ihre Standards ab, wie streng sind sie, wie überwachen Sie sie und so weiter?
Oder gibt es eine andere Lösung, die ich vermisse?
[Nehmen wir an, dass der Entwickler nicht kontaktiert werden kann, um zu besprechen, was er hier getan hat - selbst wenn er wissen und beschreiben könnte, welcher Arbeitsbereich welcher aus dem Gedächtnis ist, wird dies nicht einfach und fehlerfrei sein und manchmal können es die Leute wirklich nicht kontaktiert werden und ich möchte eine Lösung, die alle Eventualitäten abdeckt.]
Bearbeiten: Ich habe festgestellt, dass die Arbeitsstation von jemandem in einer schlechten Form durchlaufen wird (obwohl es eine interessante - und wahrscheinlich nicht zum Thema gehörende - Frage ist, warum das so ist), und ich schaue mit Sicherheit nicht auf unbegrenzten Zugriff. Denken Sie mehr nach dem Vorbild eines Standards, bei dem ihre Codeverzeichnisse mit einer schreibgeschützten Freigabe eingerichtet sind - nichts kann geändert werden, nichts kann angezeigt werden und so weiter.
quelle
Antworten:
" Wenn es nicht in der Quellcodeverwaltung ist, existiert es nicht. "
Dies ist eines der wenigen Dinge in unserem Beruf, über die ich dogmatisch bin. Aus den folgenden Gründen:
Eine Möglichkeit, das Problem des Anzeigens von Code auf den Arbeitsstationen der Benutzer zu mindern, besteht darin, eine Kultur des regelmäßigen Eincheckens zu fördern. Ich habe einmal in einer Firma gearbeitet, in der es - obwohl es kein offizielles Mandat gab - eine Art Stolz war, immer alles für das Wochenende eingecheckt zu haben. In den Wartungs- und Release-Kandidatenphasen wurden CR-Elemente bewusst sehr feinkörnig gestaltet, um kleine, sauber sichtbare Änderungen zu ermöglichen, und regelmäßige Überprüfungen, um diese nachzuverfolgen.
Auch vergewissert hat alles, bevor Sie gehen auf Urlaub war obligatorisch .
TL; DR-Version : Durch die Arbeitsplätze der Menschen zu schießen ist eine schlechte Form. Anstatt zu versuchen, eine Kultur zu pflegen, die es einfach macht, die Arbeitsplätze der Menschen zu durchsuchen, um das zu finden, was wir wollen, ist es besser, eine Kultur der vernünftigen Verwendung der Quellcodeverwaltung und der regelmäßigen Überprüfung zu pflegen. Möglicherweise sogar übermäßige Überprüfungen und fein abgestimmte Aufgaben in kritischen Phasen von Projekten.
quelle
Anstatt einen Standard für die Organisation Ihrer Arbeitsstationen durchzusetzen, sollten Sie einen Standard durchsetzen, bei dem alle Arbeiten am Ende eines jeden Tages eingecheckt werden . Die Eincheckvorgänge können in Filialen erfolgen, wenn sie noch unvollständig sind.
Auf diese Weise sollte niemand jemals auf die Workstation eines anderen Entwicklers zugreifen müssen.
Ich würde mir vorstellen, dass diese Richtlinie auf Widerstand stoßen würde, aber nichts im Vergleich zu dem, was ich erwarten würde, wenn Sie Regeln für die Organisation Ihrer Workstation durchsetzen würden.
quelle
Ich sage dir die Wahrheit, ich fühle mich unwohl über die Idee, dass sich jemand auf meinem Computer anmeldet und meine Sachen durchstöbert. Zugegeben, es ist die Ausrüstung und das Eigentum des Unternehmens, aber es ist einfach eine schlechte Sache.
Als ich das letzte Mal für ein Wochenende abreiste, haben die Jungs die Server mit der Datenbank- und Quellcodeverwaltung neu konfiguriert und es aus irgendeinem Grund für notwendig gehalten, sich an meinem Computer anzumelden und das System für die neue Einstellung neu zu konfigurieren.
Schade, dass sie keine Ahnung hatten, was sie taten und einen Prototyp gelöscht haben, an dem ich die letzten zwei Monate gearbeitet hatte.
Es wäre nicht passiert, wenn die richtige Kommunikation zustande gekommen wäre. Das brauchen Sie auch. Gehen Sie zu diesem Entwickler und finden Sie den Stand der Dinge heraus. Bitten Sie die Leute noch besser um einen Bericht, bevor sie in Urlaub gehen, damit Sie eine fundierte Entscheidung treffen, ob Sie etwas von ihnen brauchen oder nicht.
Aber leg dich nicht mit den Arbeitsplätzen der Leute an.
PS Wir haben eine Konvention für eine Verzeichnisstruktur, aber der Hauptgrund für die Existenz ist eine Mischung aus Verlauf / Konfiguration - stellen Sie sie an eine andere Stelle und sie wird nicht kompiliert.
quelle
Vor ein paar Monaten arbeitete ich an einem ziemlich großen Projekt und musste die Arbeit abrupt verlassen, als ich herausfand, dass ich ins Krankenhaus eingeliefert wurde. Ich hatte keine Zeit, meinen neuesten Code für das Projekt einzuchecken.
Glücklicherweise ist es hier üblich (wenn auch nicht "notwendig"), Code zu speichern
/var/www/ourdomain.com
, um die Produktion nachzuahmen. Mit solch einer logischen und leicht zu befolgenden Konvention war es für einen Mitarbeiter einfach, sich bei meinem Computer anzumelden und meine neuesten Änderungen abzurufen.Ich denke, einige Konventionen sind gut. Obwohl ich Bobby zustimme, wenn er sagt
"Wenn es nicht in der Quellcodeverwaltung ist, existiert es nicht."
Eine sinnvolle Ergänzung für den Arbeitsbereich eines jeden Programmierers könnte ein Front-Bay-Hot-Swap-SATA-Laufwerk sein, auf dem alle Quell- und Entwicklungsprojekte gespeichert werden können. Auf diese Weise kann ein Mitarbeiter bei Auftreten eines solchen Problems problemlos neue Quelländerungen am Projekt abrufen, ohne sich bei der Entwickler-Workstation anmelden zu müssen.
quelle
Im ersten Teil Ihrer Frage werden Kommunikationsprobleme in Ihrem Team klar identifiziert. Haben Sie tägliche Stand-ups ausprobiert ?
Ich stimme Ihnen zu, wenn Sie sagen, dass Normen zu Ineffizienz führen können, wenn sie zu streng sind. Standards müssen vom Team festgelegt werden , an denen alle beteiligt sind.
In Ihrem Fall würde ich einige Tage warten, nachdem der betroffene Entwickler wieder bei der Arbeit ist. Dann organisieren Sie ein Meeting, um über diese Standards zu sprechen.
Nennen Sie keine Personen oder bestimmte Dinge, die Sie gesehen haben, um psychologische Blockaden und Widerstände zu vermeiden. Halten Sie es allgemein, das Ziel hier ist es, Input von allen zu bekommen, einschließlich des Entwicklers, von dem Sie denken, dass er seine Arbeitsweise verbessern sollte. Der Typ kann Ihre Organisation auch als Chaos betrachten.
Präsentieren Sie während des Meetings das Problem und fragen Sie klar, wie das Team die Situation verbessern könnte.
quelle
Dieser Benutzer litt wahrscheinlich an einem Mangel an geeigneten Werkzeugen. Insbesondere die Verwendung eines verteilten Versionskontrollsystems hätte für ihn die Notwendigkeit beseitigt, unterschiedliche Codeverzeichnisse in unterschiedlichen Zuständen zu haben. Er hätte das alles in Zweigen behalten und viel glücklicher sein können.
Nein, ich möchte nicht, dass mir Standards auferlegt werden, wie ich meine eigene Workstation organisiere. Ich kehre gerade dazu zurück, meine Abteilung auf eine IDE zu standardisieren (mein Chef möchte WIRKLICH, dass wir alle in Eclipse sind, weil es das ist, was er verwendet und gut weiß, auch wenn IMO nicht das beste Werkzeug für meinen Job ist).
Lassen Sie die Entwickler alles tun, was ihnen Spaß macht. Ein komfortabler Entwickler ist produktiver als ein unkomfortabler. Und wenn jemand NICHT produktiv ist und Sie vermuten, dass er vor Ort mit den Tools herumfummelt, ist dies eine Gelegenheit zum Trainieren und kein guter Zeitpunkt, um neue Regeln zu erstellen.
quelle
An meinem alten Arbeitsplatz hatten wir ein System, bei dem jede Aufgabe in unserem Bugtracking einen eigenen Zweig in der Quellcodeverwaltung hatte. Es wurde verstanden, dass die meiste Zeit ein Fehler / eine Aufgabe von einem Entwickler beseitigt wird, sodass fehlerhafter Code in die Quellcodeverwaltung eingecheckt werden konnte.
Sobald sich der Code in einem Zustand befand, in dem er im Entwicklungszweig stabil war, wurde ein Rebase durchgeführt, indem der Code aus dem Zweig, in den Sie integrieren wollten, hineingezogen wurde. Sobald Sie diese Zusammenführung getestet haben, müssen Sie den Code lediglich für den Integrationszweig festschreiben. Es ist kein Zusammenführen erforderlich, da Sie die Zusammenführung für Ihren Zweig bereits durchgeführt haben.
Auf diese Weise ersparen Sie Entwicklern das Problem, dass sie sich Sorgen um fehlerhaften Code machen, und können mit der Anwendung der Sozialpolitik beginnen, dass das Einchecken von Code vor dem Verlassen des Büros in der Nacht sehr akzeptabel ist - nett und sicher.
quelle
Rufen Sie in dieser besonderen Situation die Person zu Hause an, und machen Sie deutlich, dass Sie nicht daran zweifeln, dass sie krank ist. Sie müssen jedoch jemanden bitten, seine Arbeit fortzusetzen, und fragen Sie, wo sich die neuesten Informationen befinden und in welchem Zustand.
Dann müssen Sie sich überlegen, was Sie von hier aus tun sollen. Wenn das Problem darin besteht, dass Personen zu selten einchecken, sollten Sie ein verteiltes Versionsverwaltungssystem verwenden, mit dem Personen in Zweigstellen arbeiten können, ohne sich gegenseitig zu stören.
Wenn das Problem darin besteht, dass Sie keine Entwickler mögen, die mehrere Arbeitsbereiche auf ihrem Computer haben, sollten Sie es hinter sich lassen. Der Arbeitsstil ist individuell und Sie sollten sich grundsätzlich von ihren Systemen fernhalten, solange sie den Regeln für das Quell-Repository entsprechen. Persönlich checke ich sehr häufig eine neue Kopie für verschiedene Projekte aus und räume nur ab und zu auf.
Wenn das Problem darin besteht, dass Sie nicht wissen, was Ihr Entwickler tut, ist das Problem politisch und nicht technisch und Sie müssen Ihren Führungsstil ändern. Bitte denken Sie daran , dass die Entwickler sind hoch qualifiziertes Personal , die selten wie Mikromanagement und Sie müssen delegieren. Andernfalls werden Sie die erfahrensten Personen von sich weisen.
Daher würde ich empfehlen, eine bessere Arbeitsweise mit dem gemeinsamen Quellrepository zu fördern - sagen wir, es ist in Ordnung, in Zweigstellen zu arbeiten, und lassen Sie sie häufig festschreiben, solange sie ihre lokale Kopie täglich mit dem Master-Repository synchronisieren (wie sie es tun) wird immer Entwicklungsarbeit in einer Branche leisten, dies wird andere nicht beeinflussen).
quelle
Sie können dieses Problem mit einem Versionsverwaltungssystem lösen, das persönliche instabile Zweige unterstützt und häufige Commits verwaltet. Ein Commit muss nicht erfolgen, wenn ein ganzes Problem gelöst ist. Es sollte kommen, wann immer Sie von der Quellcodeverwaltung profitieren. Das Ende des Tages ist einer von vielen Punkten, an denen ein Commit stattfinden sollte, damit Sie sehen können, wo Ihre Änderungen vorgenommen wurden, diese sichern und sie Ihrem zukünftigen Selbst oder anderen erklären können.
Wir haben ein umfangreiches Konfigurationsdokument für die Umgebung, das Konventionen, aber keine Standards angibt. Standards gelten für Produktionscode und Umgebungen. Viele unserer Entwicklungstools sind jedoch so eingerichtet, dass sie die Konventionen unterstützen, und die meisten Entwickler geben sich keine Mühe, sich dem Trend zu widersetzen.
quelle