Umgang mit meinem veralteten Kollegen


28

Ich bin ein relativ junger Programmierer und arbeite in der IT-Abteilung eines mittelständischen Unternehmens. Ich habe einen Kollegen, und er ist ein wirklich guter Visual Basic 6-Programmierer. Und ich meine wirklich gut. Ehrlich. Er kann in der Zeit, in der ich meine erste Tasse Kaffee holen und meinen Computer booten muss, funktionierende Anwendungen bereitstellen, die nur sehr wenige Fehler enthalten. Er ist einfach so gut.

Wir arbeiten mit einem Team und sein Arbeitsstil ist völlig veraltet. Er glaubt nicht an Versionssoftware (wenn Sie nur sicherstellen, dass Ihr Code korrekt ist, brauchen Sie diesen ganzen Unsinn nicht). Glaubt nicht an die Bereitstellung (ich kann eine funktionierende ausführbare Datei bereitstellen. Wie diese bereitgestellt wird, müssen die Sysadmins herausfinden). Glaubt nicht an Abstraktion. ('Wenn Sie eine Unterroutine erstellen möchten, fahren Sie fort, aber rufen Sie keine Unterroutinen von dieser Unterroutine auf. Auf diese Weise wird es chaotisch, und der Code ist schwer zu befolgen. Auf diese Weise kann jeder jedem Schritt auf dem Weg folgen. 'oder' Ja, sicher, Sie können diese Bibliothek verwenden, um das für Sie zu tun, aber auf diese Weise verstehen Sie nicht wirklich, was los ist ') und glauben sicher nicht an OOP. (wir arbeiten in VB.net)

Er ist so gut in dem, was er tut, dass er Anwendungen viel schneller als ich liefern kann. Aber es funktioniert einfach nicht in einem Team. Unser anderes Teammitglied ist ruhig und spricht nicht gern, obwohl er eher zustimmt. Unser Manager glaubt, dass ich gültige Punkte mache, ist aber kein Programmierer.

Es fällt mir wirklich schwer, die von ihm geschriebenen Programme zu pflegen, und das sorgt nicht für eine gute Teamatmosphäre. Was denkst du, ist das Beste, was ich tun kann?


2
"'Ja, sicher, Sie können diese Bibliothek verwenden, um das für Sie zu tun, aber auf diese Weise verstehen Sie nicht wirklich, was los ist'". Er meint hier, dass ER nicht versteht, was los ist. Das tun wir :) Scheint, als ob er Angst hat, etwas anderes zu lernen, um seine Produktivität zu verbessern.
Damien Roche

7
Ihr Mitarbeiter ist nicht altmodisch, er hat nur einige wichtige Programmierstunden verpasst. Versionierung, Abstraktion usw. waren vor 20 Jahren ebenso wichtig wie heute.
Jas

7
Der Begriff "antiquiert" ist ein ziemlich belasteter und nicht aufgeklärter Begriff. Ich habe jemanden, mit dem ich zusammenarbeite und der sich ähnlich beschreiben lässt wie Sie. Er ist jedoch wesentlich JÜNGER als ich.
Bill

1
Der Punkt über Bibliotheken ist durchaus gültig. Sie müssen wirklich verstehen, was sie tun - zum Beispiel können Dinge in Bibliotheken, die Threads erstellen oder Ausnahmen auslösen, Ihr Leben SEHR elend machen. Ein kurzer Blick auf das Dokument oder den Quellcode ist normalerweise ausreichend, um die Neugier zu befriedigen. Dies ist KEIN Argument, um KEINE Dinge in Bibliotheken zu benutzen. Es ist nur ein Argument, um zu wissen, was sie tun (und sie dann glücklich zu benutzen, anstatt sie zu ignorieren).
quick_now

Antworten:


25

Das klingt wie einer von denen "Er ist ein guter Kerl, aber ...", bei denen Sie wissen, dass die Wahrheit kommt. Und die Wahrheit klingt, als wäre er kein so guter Ingenieur. Bei guter Software geht es nicht nur um Arbeits- und Entwicklungsgeschwindigkeit. Es geht auch um die anderen Dinge, die Sie erwähnt haben - Wartbarkeit, Kompatibilität, Abstraktion (für zukünftige Effizienz) usw.

Abgesehen davon klingt es so, als hätten Sie ein Problem mit dem Entwickler. Schlimmer für Sie ist, dass er sich bewährt hat und sich wahrscheinlich auf seine Art und Weise verhält. Also was kannst du tun?

  • Arbeite um ihn herum.
  • Bemühen Sie sich, Ihre Projekte nach einem möglichst engen Zeitplan zu realisieren.
  • Und wenn Sie nicht können, erzielen Sie ein besseres Ergebnis.
  • Mit der Zeit werden sich die bewährten Konzepte, die er ablehnt, für Sie auszahlen.

Auf der anderen Seite, wenn Sie gezwungen sind, auf seine Weise zu arbeiten, gehen Sie.


Ich bin damit genauso einverstanden wie die Antwort von @pierre 303. Er wird die dunkle Seite verlassen, wenn er schöne Werkzeuge zu haben scheint, die die Guten haben.
Kortuk 20.12.10

3
Er braucht sehr wenig, um es zu codieren, aber Ihr Code ist wartbar. Ihre Auszahlung wird angezeigt, wenn der Code beibehalten wird. In einer guten Abteilung wird die für Wartungsarbeiten aufgewendete Zeit protokolliert, und die für den Code aufgewendete Zeit wird kürzer. Dadurch lohnt sich etwas mehr Zeit im Voraus.
Kortuk 20.12.10

+1 für die Demonstration unter Verwendung der guten Teamarbeitspraktiken.
Fordern Sie den

11

Versuchen Sie nicht, Ihren Kollegen zu ändern. Sie beschreiben ihn als jemanden, der funktionierende Software liefern kann. Es ist wahrscheinlich zu spät, um es in das Team zu integrieren.

Sie haben also zwei Möglichkeiten:

  • Passen Sie sich an. Vielleicht können Sie ihn mit der Zeit von der Nützlichkeit eines Versionsverwaltungssystems überzeugen? Sie müssen Ihren Einflusskreis vergrößern . Je widerstandsfähiger er gegen Veränderungen ist, desto mehr Zeit wirst du brauchen.

  • Entferne dich von der team. Sie haben viele Punkte, um dies zu rechtfertigen. Vielleicht sollten Sie es seine eigenen Anwendungen in Ruhe lassen und sich neuen Dingen widmen.

  • Entferne dich von der company. Manchmal ist dies die einzige Lösung.


4
303, ich denke das ist der beste Rat, ein neuer Typ, der einen sehr kompetenten, erfahrenen Mitarbeiter dem Manager kritisiert, wird einige sehr negative Gefühle hervorrufen, mit der Zeit können Sie sich anpassen und anderen helfen, sich auch anzupassen. Ich hatte Neueinstellungen bei mir und denke, sie wissen etwas, das besser funktioniert und gehen zum Chef. Mein Chef hört alles, aber es macht mich wütend, da sie in 3 Monaten herausfinden, warum ich es so gemacht habe, wie ich es getan habe und beschweren sich über die Änderung. Ich denke, es ist eine andere Ebene, als wir SVN und OOP, aber die Grundvoraussetzung gilt.
Kortuk 20.12.10

3
Es gibt 3 Arten von Menschen auf der Welt - diejenigen, die Binär verstehen, und diese, die nicht ...
Michael K

Der Trick besteht darin, die Bedienung zu vereinfachen UND zu zeigen, dass es erhebliche Vorteile gibt, wenn es wirklich darauf ankommt. Ähnlich wie Sicherheitsgurte ...

Ich stimme nicht zu. Einige Übungen sind nur dann gut, wenn Sie alleine arbeiten, und dieser Typ scheint voll davon zu sein.
Boris Yankov

Als ich auf diese Frage und diese Antwort zurückkam, stellte sich Option 3 nach mehr als einem Jahr als die richtige Lösung heraus
Martijn

6

Wenn ich Sie wäre, würde ich jetzt mein eigenes Versionsverwaltungssystem einrichten. Beginnen Sie, es für alles zu verwenden, was Sie codieren, und verwalten Sie es, damit Ihre anderen Teammitglieder über Konten verfügen und darauf zugreifen können. Ihre anderen Mitarbeiter werden wahrscheinlich begeistert davon sein, es zu verwenden.

Ihr Kollege, der nicht an solche Praktiken glaubt, ist möglicherweise nicht leicht zu überzeugen. Jeder Code, mit dem Sie arbeiten müssen, der von ihm geschrieben wurde, sollte jedoch in die Versionskontrolle aufgenommen werden, damit Sie damit arbeiten können. Wenn er Zugriff auf Ihre Änderungen benötigt, senden Sie ihm eine einfache, schrittweise Anleitung zum Abrufen Ihres Codes aus dem Repository.

Sie müssen nicht kämpferisch sein oder über ihn hinausgehen, um ihn in modernere Prozesse einzubeziehen. Manchmal ist es effektiver, einfach nur seinen eigenen Weg zu gehen und eine Führungspersönlichkeit zu haben, als jemanden mit Worten zu überzeugen. Kleine Schritte. Wenn er schneller auf die Versionskontrolle reagiert, fangen Sie an, Unterprogramme umzugestalten und Komponententests hinzuzufügen, um sich vor den Änderungen zu schützen. Automatisieren Sie die Tests und zeigen Sie ihm, wie er sofort nach dem Einchecken auf die Ergebnisse zugreifen kann.

Oft sind die Leute nur widerstandsfähig, weil sie Veränderungen nicht mögen. Wenn ihnen die Änderungen jedoch schrittweise und so präsentiert werden, dass sie sie leicht nachvollziehen können, werden sie die Vorteile oft sehr schnell bemerken.

Machen Sie ihm vor allem alles so einfach wie möglich (Keep It Simple Stupid). Erlauben Sie ihm, diese Praktiken zu seinen eigenen Bedingungen auszuführen. Aber lass dich nicht runterziehen.


Ich habe schlechte Erfahrungen gemacht, als ich versucht habe zu glänzen: Ein privates Repository hilft nicht viel, wenn es kein definitives Konzept für 'Revision' gibt (was ändert sich vom Mitarbeiter zur Integration?). Oft ist es bei Leuten, die CVS nicht verwenden, so Funktion, aber nicht die '). Dasselbe gilt für automatisierte Tests: Was nützt ein Build, der von demjenigen, der ihn bricht, nicht repariert wird? Sie refaktorieren und schreiben die Tests, er defaktoriert und bricht die Tests. wieder: Ihr Wort gegen sein, aber jetzt "scheitern" Ihre Tests, was "beweist", dass sie nichts Wertvolles fangen. Sie können nicht gegen Ihre Mannschaft übertreffen .
Keppla

4

Ich bin ehrlich, Sie malen kein gutes Bild von ihm. Archaische Methoden, schwer zu pflegende Software, hartnäckige neue Arbeitsweisen, gegen Abstraktion etc etc

Wenn er, wie Sie gesagt haben, FASCHER fehlerfreie Software produziert als Sie, ohne wiederverwendbare Bibliotheken und Entwurfsmuster, die auf eine schnelle Anwendungsentwicklung abzielen, sagt er mehr über sich selbst aus als über ihn ...

..über ihn..ja, finde einen Weg, NICHT mit ihm zu arbeiten und NICHT mit seiner Arbeit verbunden zu sein. Scheint, als hätte er eine typische egoistische Einstellung zu seiner Arbeit. Mit so jemandem kann man nicht arbeiten, man kann nur beobachten, wie er arbeitet und aufräumt (so wie Sie es derzeit sind).


1
Ich kann viel schneller programmieren, wenn ich bei kleinen Projekten nichts Besonderes benutze, aber verdammt noch mal, Sie pflegen eine gut gestaltete Codebasis besser. Hier zahlt sich gutes Design aus. Das gesamte Design der Software-Code-Überprüfung basiert auf der Tatsache, dass die Behebung von Fehlern mehr Zeit für die Wartung benötigt als für die Codierung.
Kortuk 20.12.10

Schlüsselrolle "bei kleinen Projekten". Ich bezweifle sehr, dass es sich hier um kleine Projekte handelt (siehe: Teamleistung).
Damien Roche

vollkommen anderer Meinung sein. Das sagt nichts über Walter aus, außer dass er weiß, was all diese guten Praktiken sind und wie sie dem Team nützen können. Wenn Sie diese Praktiken nicht anwenden, geht es um RAD, weil Sie dadurch langsamer werden.
Ross

4

Ich habe das schon gesehen ,

Und ich bin fast bereit zu wetten: Dieser Typ erscheint nur "schnell", weil er eine Reihe von erprobten "Mustern" im Kopf hat. 99% der Line of Business-Apps sind CRUD , grundlegende Dinge.

Wahrscheinlich verwendet er eine Tonne Copy & Paste aus seinem eigenen Code (daran ist nichts auszusetzen).

Aber..

In dem Moment, in dem er auf etwas Komplexes stößt, fällt es runter, warum? weil es nicht mehr zu den grundlegenden "Mustern" passt.

Eine kleine Herausforderung ...

Ich würde nebenbei ein Projekt erstellen, ein komplexes, das wirklich von der Wiederverwendung von OOP und Code profitiert.

Zeigen Sie ihm dann das Projekt und bitten Sie ihn, es Feature für Feature zu implementieren.

Ich würde dann wetten, dass sein Code mit ziemlicher Sicherheit 10x größer und 10x hässlicher sein wird, wenn er ihn auf seine Weise implementiert hätte.


ja, einverstanden, aber was kann er dann dagegen tun?
Ross

Warum Zeit für die Neuimplementierung eines Spielzeugprojekts aufwenden?

@Andersen, weil einige Programme, die sich die Vernunft nicht anhören wollen, Beweise erst akzeptieren, wenn sie vor ihnen aufgelegt sind
Darknight,

@Darknight, wahrscheinlich nicht, aber warum sollte man überhaupt darüber nachdenken, Zeit für die Neuimplementierung von Spielzeugprojekten aufzuwenden, die sich nicht auf reale Probleme beziehen?

3

Betrachten Sie dies von der geschäftlichen Seite.

Sie nehmen sich mehr Zeit, um fehlerhaften Code zu erstellen. Sie produzieren weniger Einnahmen, deshalb saugen Sie.

Wenn Sie dies im Laufe der Zeit rückgängig machen können, können Sie dies rückgängig machen.

Aber vielleicht, nur vielleicht, kann Ihnen dieser antiquierte Programmierer tatsächlich ein paar Dinge beibringen, wie man Code schnell und so fehlerfrei produziert? Vielleicht sind seine Techniken nicht so altmodisch, wie Sie denken?

Ich vermute, dass jemand so großartigen Code ohne einige sehr gute Praktiken produzieren kann. Möglicherweise können Sie diese Praktiken erlernen und auf die "Best Practices" und trendigen Dinge anwenden, die Sie verstehen.


2

Wenn Ihr Manager kein Programmierer ist, versuchen Sie es mit Begriffen, die er verstehen wird.

  • Wir sollten sourecontrol verwenden, da wir sonst große Probleme haben könnten, uns zu erholen

  • Ich brauche x mehr Zeit, weil er sich weigert, ein paar recht einfachen Prozessen zu folgen.

Stellen Sie andererseits sicher, dass Sie nicht zu sehr in Perfektion verfallen, dh dies ist eine bewährte Vorgehensweise, die wir befolgen müssen. Es ist wahrscheinlich, dass Ihr Kollege eine Menge hinzuzufügen hat. Möglicherweise müssen Sie ihn nur langsam in die richtige Richtung schubsen.


"Recovering" == Rollback.

2

Scheint so, als hätten Sie sich noch nie in einem Team entwickelt. Diese Art von Solo-Guru-Partner erlaubt keine gute Gruppendynamik. Erzählen Sie Ihrem Vorgesetzten davon und versuchen Sie, die Vor- und Nachteile mit Ihrem Partner zu besprechen, bevor Sie dies tun. Wenn Sie es besser machen könnten, aber wenn er ablehnt, steigen Sie in das Kommando ein


5
Wenn Sie die Befehlskette hinaufsteigen, werden Sie zu Feinden jeder Person, auf die Sie getreten sind, und dies führt häufig nicht zum Erfolg.
Kortuk

1

Sprechen Sie ganz einfach mit Ihrem Manager, wie Sie es hier getan haben. Hier gibt es Potenzial für Wachstum - wenn Ihr Mitarbeiter gut ist, wie Sie sagen, sollte er nicht viel Überzeugungsarbeit leisten, um ihn dazu zu bringen, auf die Verwendung von Quellcodeverwaltung und .Net mit geeigneten OO-Konzepten umzusteigen.


1
Das ist, wenn er sich ändern will ..
Walter

3
Viele Manager, die ich in der Vergangenheit hatte, schätzen es nicht, wenn ein neuer Mann etwas ändert, das zu funktionieren scheint. Sie schätzen ein schnell erledigtes Produkt, da sie nicht genau verstehen, was Sie tun. Es scheint, dass Sie einen Chef haben, der nicht technisch ist, was Ihrer Abteilung möglicherweise großen Schaden zufügt.
Kortuk 20.12.10

1
Ist dies nicht der Fall, ist es umso wichtiger, dass der Manager (sofern es einen gibt) davon weiß.
Otávio Décio

@Kortuk - das ist ein sehr guter Punkt, und wenn das stimmt, dann steckt das OP in echten Schwierigkeiten.
Otávio Décio

Ich denke, dass, wenn das OP versucht, diese Dinge plötzlich zu ändern und sie zu zwingen, die Finger darauf getreten werden. Dies macht Feinde und könnte ein Arbeitsumfeld schädigen, in dem er viel von seinem Kollegen lernen könnte.
Kortuk

1

Ich würde mit anderen reden, um ein umfassenderes Bild davon zu bekommen, wie die Dinge aussehen, wo Sie sind. Vielleicht gibt es dort einige Separationen, damit sich sein Code nicht zu sehr mit anderen vermischen muss, da es das Potenzial gibt, ihn auf eine Weise in seinen eigenen Bereich zu trennen, die behandelt werden könnte, obwohl dies eher für ein höheres Level wie ein Regisseur oder CIO zu machen, anstatt ein Entwickler.

Vielleicht möchten Sie mit ihm sprechen, um zu sehen, welche Art von größeren Systemen er gebaut hat, da es einige große Unternehmenssysteme gibt, die in der Regel viele Bausteine ​​enthalten, in denen Spaghetti-Code in das Land von "Oh, das ist der Grund, warum OOP" laufen kann kann gut sein! " Dies ist jedoch manchmal der Fall, wenn es sich als sehr nützlich herausstellt, zu sehen, wie nützlich dies in der eigenen Toolbox sein kann.

Apathie könnte ein weiterer Verdächtiger sein, um zu sehen, ob er aus diesem Grund einige Dinge ablehnt, die ich für grundlegend halte, wenn es darum geht, Code zu entwerfen, aber vielleicht hatte ich zu viel von der Kool-Hilfe.


1

Fordern Sie ihn (auf eine gute Weise) auf, Ihnen das Gegenteil zu beweisen, und zeigen Sie ihm die kühle Seite der Werkzeuge und Methoden. Nicht bevormunden.

Zum Beispiel glaubt er vielleicht nicht an die Versionierung als Hilfsmittel, sondern zeigt ihm, wie Verzweigungen / Zusammenführungen durchgeführt werden können und wie er an mehreren experimentellen Funktionen arbeiten kann, ohne dass ein Schwall an Dateien erforderlich ist.

Zeigen Sie ihm in Bezug auf OOP einige coole / komplexe Entwurfsmuster, z. B. das Befehlsmuster, das Aufgabenmuster und wie es ihm und Ihrem gesamten Team wertvolle Zeit ersparen kann.

Wenn Sie nicht das geringste Interesse an ihm haben ... ist er vielleicht ein verlorener Fall, aber andererseits haben Sie die Werkzeuge für Ihr Team und Sie, um ihn zu übertreffen. Versuchen Sie, eine Repository-Software zu verwenden, die Commit-Nachrichten für Ihren Manager anzeigt / per E-Mail sendet, die Transparenz für Ihren Manager schaffen und Ihren Mitarbeiter vom Bild abhalten.

Am Ende versuchen Sie nicht, mit Worten zu überzeugen, sondern mit unwiderlegbaren Taten. Das ist der beste Weg, um mit hartnäckigen Menschen umzugehen, IMHO (umgekehrte Psychologie funktioniert manchmal auch, lol).


1

Nun, die Techniken, die Sie erwähnen, sind offensichtlich gut, aber Sie müssen sich auch fragen, ob Sie sie als Ideologie durchsetzen. Ich finde, dass jüngere Programmierer in Bezug auf das, was sie am College gelernt haben, ein bisschen evangelisch sind. Denken Sie daran, dass diese Techniken aufgrund der Ergebnisse gut sind: Die Versionskontrolle ermöglicht die gleichzeitige Entwicklung und übersichtlichere Nachverfolgung von Design-, Entwicklungs-, Test- und Bugfix-Phasen. Wenn Ihre Projekte wirklich kurzfristig sind, ist vieles davon einfach unangemessen und wird Sie weniger agil machen. Es ist einfach nicht der Fall, dass Best Practice bedeutet, jede bestmögliche Best Practice anzuwenden. Abstraktion zum Beispiel kann definitiv mehr eine Verbindlichkeit als eine Hilfe sein, zumindest manchmal. Versionskontrolle ist am sinnvollsten, wenn Sie längere Entwicklungszeiten, komplexen Code und mehrere Programmierer haben - es gibt eine Art von Synergie, die mit Piecemeal nur schwer zu erreichen ist.

Ich denke, der Ausgangspunkt besteht darin, nach einer möglichen Wiederverwendung Ausschau zu halten - im Laufe der Projekte, nach Gemeinsamkeiten oder allgemeineren Rahmenbedingungen. Der Versuch, sich vor den Projekten zu behaupten, wäre ein kraftvoller Schachzug und könnte Sie in mehr Technik arbeiten lassen ...


Die Versionskontrolle bietet auch einen Verlauf. Wichtig, wenn keine Menschen mehr da sind.

0

Sie sollten Ihren Vorgesetzten bitten, für JEDEN eine Präsentation darüber zu halten, warum "Versionierungs" -Software gut ist. Wählen Sie Ihren Mitarbeiter nicht aus.

Ich bin selbst skeptisch gegenüber Software für die Quellcodeverwaltung, weil ich sehe, dass die Leute sie ständig missbrauchen - als eine Möglichkeit, Arbeit zu vermeiden.

Meine Mitarbeiter verschmelzen STÄNDIG und treten einander ständig auf die Zehen. Aber ein guter, freundlicher Vortrag über seine Vorteile wäre eine schöne Sache und würde Diskussionen anregen.


1
Ständiges Treten ist ein Zeichen dafür, dass die Software schlecht aufgebaut ist. Es hat nichts mit der Quellcodeverwaltung zu tun und kann ohne diese noch schlimmer werden.
Deadalnix

@deadlnix Das könnte auch der Grund sein, aber ich denke, es kann in einigen Fällen auch auf die übereifrige Verwendung von Verzweigungen zurückgeführt werden, wenn dies nicht die geeignete Lösung ist.
Nicole
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.