Was tun, wenn Ihr Arbeitskollege das Design, das beibehalten werden soll, nicht versteht? [Geschlossen]

8

An einem Softwareprojekt, an dem ich arbeite, sind ich und ein anderer Programmierer beteiligt. Das Projekt umfasste ein Engine-Backend mit einem MVC-Frontend. Anfangs habe ich viel an dem Projekt gearbeitet und so einige einfache Entwurfsmethoden eingerichtet, die sich hauptsächlich mit Abstraktion und Vorlagenstrategie befassen.

Seit einiger Zeit bin ich nicht mehr im Backend der Engine und arbeite an der Website. Ich habe jedoch immer noch ein Interesse an dem Motor bewahrt, als mir mitgeteilt wurde, dass ich irgendwann wieder dabei sein könnte.

Das Projekt ist unter einer sehr engen Frist, so dass wir uns alle beeilen, es sowohl am vorderen als auch am hinteren Ende fertig zu stellen.

Ich betrachte mich nicht als einen großartigen Programmierer und versuche daher niemals, Menschen ein bestimmtes Design oder eine bestimmte Reihe von Methoden aufzuzwingen, da ich nicht immer sicher bin, ob ich Recht habe und gerne möchte, dass andere Menschen ihre Meinung dazu abgeben bessere Lösungen finden. Ich habe jedoch bemerkt, dass Änderungen an diesem Motorcode vorgenommen wurden, die mich wirklich ärgern. Als ich den Entwickler konfrontierte, um ihm vorzuschlagen, die Arbeit auf eine andere Weise zu erledigen, sagte er, er verstehe den Punkt nicht, da es angesichts der engen Fristen wenig Nutzen zu geben schien.

Ich musste versuchen zu erklären, dass der Hack, den er eingesetzt hatte, eine Weiterentwicklung nach der Veröffentlichung bedeuten könnte, und ich hielt es nicht für fair, andere dazu zu bringen, die Lücke zu schließen, wenn wir sie jetzt beheben konnten. Ich verbrachte ungefähr 30 Minuten damit, das durchzugehen, was ich getan hatte, und am Ende bat er mich, den Code so ziemlich zu schreiben, damit er ihn einfach kopieren konnte.

Die Grundlage für das, was ich ursprünglich eingerichtet hatte, war:

  • Eine abstrakte Klasse x
  • Eine abstrakte Factory-Klasse zum Erstellen konkreter Instanzen von x

Was passiert war, war, dass er einige if-Anweisungen, die leicht als virtuelle / abstrakte Methoden in die abstrakte Klasse eingefügt werden konnten, platziert und dann entsprechend implementiert hatte, da die neue Änderung bereits dem gleichen Prinzip wie andere Methoden in der abstrakten Klasse folgte.

Das scheint mir trivial zu sein, aber er konnte es nicht einmal verstehen, selbst als ich ihm die beteiligten Klassen zeigte.

Jetzt ist meine Frage:

  1. Ist es unfair anzunehmen, dass er dieses Konzept hätte verstehen sollen? Mir ist klar, dass wir enge Fristen haben, aber ich fand das trivial. Der Programmierer soll mindestens eine Zwischenstufe sein.
  2. Dies ist an mehreren Stellen passiert und ich habe ständig versucht, ihn dazu zu bringen, sich zu ändern, aber er scheint es nicht zu tun. Soll ich es einfach ignorieren?
  3. Sollte ich dieses Problem an anderer Stelle ansprechen oder es einfach nur lutschen und wenn ich wieder mit dem Projekt beschäftigt bin, gehe ich einfach herum und ändere all diese Dinge.

Sein Teil des Projekts wird nicht abgeschlossen sein, weshalb ich zurückgehen und ihm helfen muss. Ich will es wirklich auch nicht, da er ein Projekt mit nicht großartiger, aber guter Architektur aufgenommen und wirklich eine Menge chaotischen Codes eingefügt hat, der mehr als oft nicht dem folgte, was erreicht werden wollte.

Wenn die Frage zu vage oder zu vage ist, lassen Sie es mich bitte wissen und ich werde versuchen, sie entsprechend zu bearbeiten.

BEARBEITET: Das Projekt wird voraussichtlich nach Ablauf der ersten Frist fortgesetzt, da bereits Folgearbeiten geplant sind und Arbeiten, in die wir nicht eingepasst haben und deren spätere Umsetzung vereinbart wurde.

dreza
quelle
Du bist nicht allein ... Manchmal möchte ich ein neues Design teilen, das ich gesehen habe, und am Ende muss ich es in Laienbegriffen erklären ... Nicht mehr so ​​aufregend.
Wleao
Es würde mir nichts ausmachen, wenn er als Junior-Programmierer arbeitet, aber er hat einen sehr wichtigen Teil des Projekts erhalten, da er ein mittleres Niveau sein soll. Ich habe mehrfach versucht, Diskussionen über Design zu führen, warum wir etwas getan haben, aber er starrt mich nur verständnislos an. Ich bin mir nur nicht sicher, was ich tun kann, um wirklich von hier fortzufahren.
Dreza
Beeinträchtigt dies Ihren Job? Das Ergebnis des Projekts? Hat dieses Projekt einen Kunden? Ein Chef? Wenn die Antworten auf all diese Fragen Ja Ja Ja Ja Ja ... waren, sollten Sie darüber nachdenken, dies mit Ihrem Kollegen und Ihrem Chef zu besprechen.
Wleao
4
Ich stimme dafür, diese Frage als nicht zum Thema gehörend zu schließen, da es nicht um Programmierung geht, sondern um die Interaktion mit Menschen am Arbeitsplatz.
Ixrec
1
Ich würde mit Viehfutter gehen ... aber ich denke, Arbeitsplatz. SE würde diese schlechte Praxis in Betracht ziehen.
James Snell

Antworten:

9

Von der Überwachung von vielleicht mehr als 200 Entwicklern in den letzten 25 Jahren schätze ich, dass der Anteil der Entwickler, die mit der Art von Designabstraktionen, über die Sie sprechen, intuitiv vertraut sind, ungefähr ein Drittel beträgt. Mein Ansatz hat sich von der Erwartung entwickelt, dies durch Coaching, Training und Ermutigung zu beheben, bis hin zur weiteren Arbeit am Coaching usw. - aber zu erkennen, dass dieser Komfort eine angeborene Qualität hat und man ihn oft nicht ändern kann. Sie haben gefragt, ob es fair ist. Ich denke, das, was nicht fair ist, ist, dass Ihr Management von einem Mitglied des Entwicklungsteams erwartet, dass es die Verantwortung für diese Spannung und deren Auswirkungen trägt. Wenn Sie einen Anführer in der Nähe haben, versuchen Sie, ihm die Spannung in IHREN Begriffen zu erklären, die nicht Ihre sind. Es geht nicht um den anderen Entwickler - es geht um Effizienz, zukünftige Auswirkungen und Risiken = Endergebnis und daher eine klare Managementverantwortung. Suchen Sie nach organisatorischen Lösungen, die Ihre relevanten Fähigkeiten nutzen. Können Sie mehr Designberatung übernehmen, und der andere macht mehr für die Endbearbeitung? Gehen Sie nicht davon aus, dass alle Entwickler diese Rolle nicht möchten - viele Entwickler lieben es, Dinge zu erledigen, um Kunden schnell zufrieden zu stellen - und sind dankbar, dass eine hochwertige Designumgebung von jemand anderem bereitgestellt wird.

Peter Howard
quelle
Prost pete. Ich gehe einfach davon aus, dass alle Entwickler an Design und Konzepten und Refactoring interessiert sein möchten, um etwas besser zu machen usw. Ich denke, ich muss lernen, dass es alle Typen gibt und es darum geht, die Passform für jeden zu finden und damit umzugehen Das.
Dreza
Ich würde dir ein weiteres + für den letzten Satz geben, wenn ich könnte.
Mattnz
4

Manchmal ist es nicht das Konzept, sondern die Zeit, die benötigt wird, um es zu analysieren. Die Leute bekommen keine Dinge, wenn sie ihnen von jemandem schnell erklärt werden, aber geben ihnen Zeit, sich selbst zu suchen, und dann bekommen sie es. Manchmal dauert es ein wenig, bis sich das Konzept durchgesetzt hat.

Ich verstehe, dass die Fristen eng waren und das Wissen begrenzt ist, was möglicherweise mehr Auswirkungen hatte, als Sie möchten, aber in diesem Fall (und ich gehe hier davon aus) haben Sie ihn auf ein Mustermuster für das Fabrikdesign hingewiesen oder haben Sie es getan Erwarten Sie einfach, dass er Ihren Code versteht, indem er ihn unter seiner Nase winkt und "Sie verstehen es einfach nicht, Mann, Sie verstehen es einfach nicht" :)

Ich hätte das vielleicht sogar selbst getan - den Leuten den Code gezeigt, von ihnen erwartet, dass sie ihn sofort verstehen, frustriert werden, wenn sie leer aussehen, in einem vergeblichen Versuch, ihn verständlich zu machen, durch ihn zoomen, sich ärgern, wenn sie nur noch verwirrter werden Entweder beugen Sie sie aus dem Weg und tun es selbst oder Sie werden angewiesen, es selbst zu tun, wenn ich so verdammt schlau bin. Das ist alles eine verständliche Reaktion auf meine schlechten Versuche als Lehrer.

gbjbaanb
quelle
Um fair zu sein, das habe ich getan. Ich ging vielleicht davon aus, dass dies leicht zu erlernen wäre. Werde vielleicht einige davon mit ihm durchgehen und sehen, ob er bereit ist, darüber zu lesen
dreza
3

Abstrakte Klassen, Klassenfabriken, verstehen Sie mich nicht falsch, aber es klingt wie eine Artillerie, um einen Vogel zu töten. Muster sind dazu da, Probleme zu lösen, sie nicht zu erzeugen. Sie haben zugegeben, dass das Projekt ein 2-Personen-Projekt ist.

Was Ihr Kollege jedoch falsch macht, ist, dass er die Richtlinien nicht befolgt. Es wird etwas Chaos stromabwärts verursachen. Wenn das Projekt in jeder Hinsicht abstrahiert ist, sollte er versuchen, zu folgen.

Codierer
quelle
Ich denke, es ist ein Zwei-Personen-Projekt. Ich arbeite mit einer anderen Person an der Web-Benutzeroberfläche, also denke ich, dass es insgesamt 3 Personen sind, aber diese bestimmte Person war nur wir zwei.
Dreza
@dreza: Wie auch immer, versuche gute Argumente zu finden, warum das Projekt so gemacht wird, wie es gemacht wird. Versuchen Sie, die Idee zu unterstützen, dass Konsistenz und ungeteilte Architektur die Wartung und Erweiterbarkeit unterstützen. Versuchen Sie, diese Ideen Ihrem Kollegen zu übermitteln. Vielleicht hat er auch Probleme, einige der Konzepte zu verstehen. In diesem Fall versuchen Sie, einfache, konkrete Beispiele zu finden, die zeigen, wo Sie durch den von Ihnen gewählten Ansatz wirklich etwas erreichen können. Sie müssen beweisen, dass zusätzliche Arbeit nicht umsonst geleistet wird, damit Ihr Mitarbeiter sie ohne Widerstand akzeptiert.
Coder
Prost Codierer. Ich dachte, dass ich die Vorteile vielleicht nicht genug vermittelte, aber mich bemühte, eine einfachere Sache zu finden als das, was ich tat.
Ich
1

Sie wollten ihm das Muster nicht von Anfang an aufzwingen, aber Sie hätten eine kurze Diskussion über einige der Dinge führen können, die Sie getan haben. Unter den zeitlichen Einschränkungen bezweifle ich, dass er Ihr Konzept so gut verstehen kann, dass es so schnell wie sein "Hack" umgesetzt werden kann. Sie möchten, dass er die Dinge jetzt repariert, um zu verhindern, dass jemand anderes / Sie sie später reparieren muss, aber das Projekt wird nicht rechtzeitig abgeschlossen. Entweder versteht er nicht, was Sie getan haben, oder er glaubt, dass es zu lange dauern wird und es nicht wert ist, eine Verzögerung zu riskieren.

Lassen Sie uns wissen, wann das Projekt abgeschlossen werden kann, und äußern Sie Bedenken hinsichtlich dieser Einschränkungen in der Zukunft und des Bedarfs an zusätzlicher Zeit. Wenn der Kunde zufrieden ist, werden Sie Schwierigkeiten haben, alle dazu zu bringen, es so zu sehen, wie Sie es wollen. Es mag nicht richtig sein, aber es ist Realität.

JeffO
quelle
Ich dachte, ich würde diese Bedenken nachträglich äußern, dachte aber, dies sei so gering, dass ich versuchen könnte, es ihm zu erklären, und er würde es einfach tun. Ich wusste nicht, dass das Erstellen und Überschreiben einer abstrakten Methode eine so komplexe Programmieraufgabe ist.
Dreza
@Dreza - Hat dieser Kollege länger in diesem Unternehmen gearbeitet als Sie?
Ramhound
Nein, ich habe 1 Monat länger gearbeitet. Wir waren beide für dieses Projekt angestellt, also hatte ich zu Beginn angenommen, dass wir gleichberechtigt sind usw.
Dreza
1

Wahrscheinlich kein technisches Problem, definitiv kein Programmierproblem. Klingt nach nichts anderem als der traditionellen Debatte "Programmieren für die mögliche Zukunft gegen Einhaltung der heutigen Fristen", die ein spezifischer Fall von "Ich mag die Art und Weise, wie der andere seinen Job macht, ich möchte, dass er es auf meine Weise macht ". Passiert jeden Tag an jedem Arbeitsplatz mit mehr als einem Mitarbeiter.

Ihre Management- und Verkäuferfähigkeiten sind wichtiger als jede technische Überlegenheit in Ihrem Design, wenn Sie dieses "gewinnen" möchten.

Ich schlage vor, Bücher wie "Wie man Freunde gewinnt und Menschen beeinflusst" und "Welche Farbe hast du parakut" und Bücher über andere Fähigkeiten zu lesen.

mattnz
quelle
Die meisten der in der Frage angegebenen Praktiken sind keine langsamere Alternative zu dem, was heute existiert. Hierbei geht es hauptsächlich darum, den Code an der richtigen Stelle zu platzieren, nicht an einer radom. Also nein, dies ist keine «Programmierung für die mögliche Zukunft gegen die Einhaltung der heutigen Fristen». Wie auch immer, richtig über Menschen Fähigkeiten Buch.
Deadalnix