Ich habe zwei Jahre in einer großartigen Investment Bank gearbeitet.
Ich habe einige technische Projekte mit dem Wunsch gemacht, den Code unter Berücksichtigung der angepassten guten Entwurfsmuster, des SOLID-Prinzips, des Demeter-Gesetzes und der Vermeidung aller Arten von doppelten Codes zu optimieren.
Bei Auslieferung in Produktion => Null Fehler ist alles wie erwartet verlaufen.
Eine Mehrheit der Entwickler kam jedoch zu mir, um zu präzisieren, dass mein gesamter Code zu komplex ist, um das Leseverständnis zu verbessern. Ich habe zum Beispiel zugehört: "Machen Sie einige wenn und wenn, vergessen Sie Polymorphismus, so dass es sehr einfach sein wird, Produktionsfehler im Notfall zu korrigieren". Ich wollte nicht antworten ......
Zu wissen, dass diese Entwickler überhaupt nicht neugierig sind, verweigert die Bemühungen, ein gutes Design zu verstehen (zum Beispiel wissen 90% der Entwickler nicht, was ein Strategiemuster ist, und schreiben prozeduralen Code und entwerfen niemals, weil sie, wie sie sagten, Einfachheit wollen ), sagten mir meine Projektmanager, dass ich wirklich falsch und zu idealistisch für die Bankwelt bin.
Was würdest du mir raten? Sollte ich mich nach wirklich gutem Code sehnen oder mich an die Mehrheit der Entwickler anpassen, die, wie ich wiederhole, nach dem Design-Code, der meiner Meinung nach die ganze Schönheit unserer Entwicklerarbeit ausmacht, wirklich nicht interessant sind.
Oder sollten sie im Gegenteil grundlegende OO-Prinzipien und Best Practices erlernen, um sich an meinen Code anzupassen?
quelle
ITradeSettlementVisitor
Schnittstelle tun soll), können sich Ihre Kollegen zu Recht beschweren. Es ist eine Sache, schönen Code zu schreiben, den Sie mögen, und eine andere, ihn so zu strukturieren und zu dokumentieren, dass er für andere zugänglich und verwendbar ist.Antworten:
GTFO!
Zeit zu gehen und sie zu bemitleiden. Warum solltest du ficken? Sie wissen, dass sie mit ihren inkompetenten Mitarbeitern auf lange Sicht Geld kosten werden. Dies ist kein Spiel der technischen Diskussion. Hier geht es um Politik. Lassen Sie sie die anderen Entwickler oder GTFO schulen! Wenn Sie nicht genug politisches Gewicht haben, dann GTFO! Suchen Sie nach einem Unternehmen mit besseren Praktiken.
Der einzige Grund, dort zu bleiben, ist eine angemessene Entschädigung für Ihre Kopfschmerzen. Also zahlen sie besser weit überdurchschnittlich oder GTFO! Ich bezweifle, dass Sie dort auch als Softwareentwickler wachsen können. Wachstum in unserem Beruf wird hauptsächlich durch die Zusammenarbeit mit Menschen erreicht, die besser sind als Sie und die Best Practices fördern. Und je besser Sie sind, desto höher ist Ihr Marktwert für Unternehmen, die sich darum kümmern.
Ja, ich weiß, dass dies nicht meine übliche Antwort ist, aber wirklich, wenn Sie das Politikspiel in dieser Firma, GTFO, nicht spielen können.
Ich würde nicht für ein Unternehmen arbeiten, das von mir suboptimale Lösungen verlangt. Ich möchte meinen Namen in die Software einarbeiten. Ich möchte stolz darauf sein. Ich schreibe keine prozeduralen Anwendungen in Sprachen, die auf dem OO-Paradigma basieren. Ich glaube an qualitativ hochwertige Software und wenn das Unternehmen dies nicht tut, werde ich GTFO! Hoffe du hast genug "Fick dich Geld".
quelle
Starker Punkt. Ich denke, Sie können zwei Wege parallel gehen, Ihren Standpunkt vertreten und Kompromissbereitschaft zeigen:
Hier geht es um Geld. Wie jeder Entwicklerjob in der Tat, aber da Sie das Bankumfeld betonen, sollte dies noch besser funktionieren;). Zeigen Sie ihnen, dass Ihr Stil Geld spart. Finden Sie ein Beispiel dafür, wie eine Änderung der Anforderungen aufgrund Ihres Designs sehr einfach durchgeführt werden kann. Versuchen Sie, einen anderen Code zu finden (Sie müssen sicherstellen, dass Sie hier nicht zu aggressiv werden, aber hey, es geht darum, Codestile zu vergleichen), der leicht kaputt geht, und zeigen Sie ihnen, wie Sie das nicht müssen Kümmern Sie sich um solche Probleme, weil Ihr Code von Anfang an eine bessere Qualität aufweist.
Hier geht es um Geld. Was ist, wenn Ihr Codierungsstil tatsächlich Geld kostet? Dies kann durchaus sinnvoll sein, wenn andere Personen mehr Zeit damit verbringen, Ihren Code zu verstehen, als durch das richtige Design gespart wird. Möglicherweise tun Sie technisch das Richtige und tragen dennoch nicht positiv zur Teamleistung bei. Es ist auch möglich, das OOP-Design zu übertreiben. Ich bin mit Ihnen auf der Seite "Gutes Design ist schön", aber ich versuche Sie hier auf ihre Sichtweise aufmerksam zu machen und wie sie aus ihrer Perspektive tatsächlich richtig sind. Versuchen Sie parallel zum vorherigen Punkt, eine Stelle zu finden, an der Sie sie übertrieben haben. Das gibt Ihnen einen gewissen Handlungsspielraum: Sie können sagen, ok, ich kann hier und da etwas pragmatischer sein, aber schauen Sie, es gibt auch Stellen, an denen dieser Code wirklich besser ist.
quelle
Ist Ihnen überhaupt in den Sinn gekommen, dass sie Recht haben könnten?
Ich habe mit jemandem zusammengearbeitet, der sich viel Mühe gegeben hat, Code zu schreiben, den er als elegant bezeichnet. Er verbrachte viel Zeit damit, die Arbeit anderer Leute als nicht elegant zu entschlüsseln. Wenn es notwendig ist, Code zu pflegen, ist sein Code nicht der Code, den ich ändern möchte. Es ist so präzise und genau, dass es mit einer großen Gefahr verbunden ist, es zu ändern.
Das interessante Wort, das Sie hier erwähnen, ist "komplex". Code, der als komplex bezeichnet werden kann, kann selten auch als besonders gut bezeichnet werden.
quelle
Möbelhersteller aus der viktorianischen Zeit (zumindest diejenigen, deren Arbeit wir heute noch sehen) waren echte Handwerker, was sie machten, war funktional, schön, gut verarbeitet und entworfen und gebaut, um ein Leben lang zu halten. In den letzten 150 Jahren hat sich die Welt jedoch verändert. Nicht viele Menschen sind bereit, für diese Handwerkskunst zu zahlen, wenn billigere Alternativen beim Kauf eines Esstisches kommerziell pragmatischer sind.
Viele Programmierer möchten die Handwerker der alten Zeit sein. Leider schreibt der Handel vor, dass dies nicht immer passieren kann. Sie haben die Wahl, passen sich an oder gehen. Es gibt Unternehmen, die Handwerker wollen, aber sie sind massiv unter denjenigen, die Produkte suchen, die meistens funktionieren, billig und jetzt.
Der Hinweis für mich, dass Sie für die meisten kommerziellen Softwareentwicklungen nicht geeignet sind, lautet "Bei Auslieferung in Produktion => Null Fehler". Nicht einmal die Nasa hat das mit den Space Shuttles geschafft.
Die einzigen Stellen, an denen die Liebe zum Detail und damit die anfänglichen Kosten akzeptabel sind, sind lebenswichtige Systeme der Stufe 1 - z. B. Avionik / Luft- und Raumfahrt, Automobil, Militär und Medizin.
quelle
Das Problem ist, dass Sie am falschen Ort arbeiten. Es hört sich so an, als ob Sie ein sehr akademisch orientierter Programmierer wären. Sie werden in der Umgebung, in der Sie sich befinden, nicht gut abschneiden und es ist sehr wahrscheinlich, dass eine Ausrede erfunden wird, um Sie und Ihren "zu komplexen" Code loszuwerden. Möglicherweise erhalten Sie Junk-Aufträge und / oder schlechte Leistungsbeurteilungen und dergleichen, bis Sie entweder von sich aus abreisen oder eine ausreichende Papierspur vorhanden ist, um Sie zu entlassen.
Ich würde empfehlen, dass Sie einen Arbeitsplatz suchen, der Ihre akademischen Neigungen wertschätzt. Sie sind da draußen. Sie werden auch einige finden, die zwischen pragmatisch und akademisch angesiedelt sind. Ein Job wie dieser könnte Ihre beste Option sein, da Sie dadurch ein gewisses Chaos in Ihre Herangehensweise einladen können, während Sie anderen dabei helfen, ihr Chaos einzudämmen.
quelle
Bevor Sie so drastische Maßnahmen wie den Wechsel Ihres Arbeitgebers ergreifen, würde ich versuchen, Ihre eigene Fähigkeit zu verbessern, Nicht-Programmierern wie Ihren Führungskräften zu erklären, warum Ihre Codierungsmethode für das Unternehmen besser ist, und ihnen Zeit und Geld zu sparen. Stellen Sie außerdem sicher, dass Sie Designmuster nicht nur zum Zweck der Designmuster angewendet haben - sind Sie sicher, dass Sie auch die Regeln von KISS und YAGNI befolgt haben? (Okay, Strategiemuster und Polymorphismus sind keine Hexerei. Geben Sie Ihren Kollegen Zeit, sich anzupassen, und erklären Sie ihnen, warum Sie sich für diesen Ansatz entschieden haben.)
quelle
In meiner Firma haben wir eine Reihe von Workshops durchgeführt, die auf Clean Code Developer basierten . Ziel war es, ein Forum außerhalb des normalen Geschäftsalltags mit hektischen Terminen und unlauteren Kompromissen zu schaffen, in dem Entwickler die Prinzipien des Softwaredesigns (wie von Ihnen erwähnt), Programmiertechniken usw. kennenlernen und über ihre Projekte nachdenken können ihre eigene Arbeit.
Auch Beispiele aus der Praxis aus konkreten Projekten wurden besprochen. Das Feedback der Teilnehmer war von AFAIK sehr positiv. Es ist jedoch schwierig, einen tatsächlichen Nutzen zu messen.
Die Teilnahme an diesen Workshops war zum Teil von der Firma gesponsert, zum Teil von der Freizeit der Teilnehmer. Sie werden die Kollegen nicht erreichen, denen das Lernen egal ist und die einfach ihren Job machen und nach Hause gehen möchten, aber für alle anderen, die Interesse an ihrer eigenen Arbeit haben, könnte dies interessant sein.
quelle
Ich würde zuallererst überprüfen, ob dein Weg wirklich besser ist. Objektorientierter Code kann sehr schön sein, aber auch ein Albtraum von versteckten Nebenwirkungen sein, und jede Aktion kann mehrere verschiedene Klassen erfordern.
Gehen Sie noch besser zu InfoQ und sehen Sie sich Rich Hickeys Vortrag über "Simple Made Easy" an.
quelle
Sie werden ein wenig nachgeben müssen, wenn Sie dort ohne ständige Kämpfe weiterarbeiten möchten. Eine Dev-Gruppe, die nur prozedural arbeitet, wird Polymorphismus nicht sofort akzeptieren. Obwohl sie möglicherweise nicht in der Lage sind, auf OO-Weise zu entwerfen, können sie aus Ihrem Code lernen. Sie mögen es zu schätzen wissen, dass einige von Ihnen Code einfacher zu pflegen sind.
Als Randnotiz müssen Sie während des Interviewprozesses Fragen stellen, um zu sehen, welcher Entwicklungsprozess und welche Codierungsmethode verwendet werden, wenn Sie der Meinung sind, dass es wichtig ist, Ihre Präferenzen zu erfüllen.
quelle
Notfälle passieren. Sie sind nicht perfekt und ihre Hände werden irgendwann Ihren Code verderben. Das ist nicht gut für Ihre Gesundheit, es sei denn, Sie nehmen sich niemals frei, was Ihr Hausarzt bestätigt. Und führt zu höheren Chancen, schlechten Code zu emittieren.
Ihr Code hat möglicherweise eine höhere Qualität (unbewiesene Tatsache), aber sie haben Richtlinien . (verdammt sicher)
Sie wurden gewarnt, Richtlinien zu befolgen, und sind dafür verantwortlich, dass Sie diese nicht befolgt haben. In einer Notsituation. In einer Bankanwendung. Ich meine, wenn Ihr Ziel schlecht endet und ich im Gefängnis bin, kann ich viele lustigere und sinnvollere Wege finden, um das gleiche Ergebnis zu erzielen .
Ihre Zellengenossen würden sich freuen , wenn Sie über die mangelnde Neugier Ihrer ehemaligen Kollegen schwärmen würden.
(Andererseits hat Ihr Unternehmen wahrscheinlich keine internen Richtlinien gegen das OO-Design, aber der ungeschickte COBOL-geschulte Ingenieur, der versucht, Ihren Code zu reparieren, wird einiges aus der Luft schaffen, und im schlimmsten Fall wird er ' (40% Chance einen kritischen Treffer zu erzielen)
quelle
Denken Sie daran, dass die Programmierung von manchen eher als Mittel zum Zweck denn für sich selbst betrachtet wird. Denken Sie an all die Produkte und Dienstleistungen, die Sie nutzen: Nehmen Sie sich viel Zeit, um zu überlegen, ob der Code darunter elegant gestaltet ist? Oder schätzen Sie sie einfach, weil sie einfach funktionieren? Suchen Sie sich eine Branche oder eine Branche, für die Sie eine Leidenschaft haben, und finden Sie dann eine Organisation, die Ihnen Lösungen anbietet, die nicht nur die Programmierung umfassen . Probleme lassen sich auf verschiedene Arten hervorragend lösen.
quelle