Das ist kein Witz, ich könnte es nicht ertragen, wenn dies ein viertes Mal passiert, es wirkt sich mental auf mich aus.
Diese Zeile ist wichtig, denn sie zeigt, dass Sie das Gefühl haben, dass es Zeit ist, sich zu ändern. Sie zeigt, dass Sie dies als ein Muster erkennen und möchten, dass das Muster aufhört. Dieser Wunsch ist wahrscheinlich der wichtigste Teil der Lösung. Um diese Art von Situationen zu lösen, müssen Sie oft Ihre eigene Denkweise ändern. Es ist unmöglich für jemanden, das für Sie zu tun, also wird Ihr Wunsch, sich zu ändern, das Einzige sein, was die Veränderung bewirkt.
Vor einem gewissen Hintergrund war ich schon früher in ähnlichen “zu gut im Kodieren für meinen Job”-Situationen, wenn auch nie in dem von Ihnen beschriebenen Ausmaß. Ich könnte Krebs mit Template-Metaprogrammierung in C++ heilen, aber viele, mit denen ich arbeite, sind kaum mit den Grundlagen des objektorientierten Designs vertraut. Ich habe Code geschrieben, der SFINAE missbraucht und gegen den exakten Wortlaut der C++-Spezifikationen verstieß, als viele Projekte, an denen ich arbeitete, noch veraltete und fehlerhafte Versionen von gcc verwendeten. Mein Ansatz war einfach, ihnen zu zeigen, wie erstaunlich diese Werkzeuge sind, und all die Probleme, die sie lösen können. Ich habe es geliebt, den Leuten kleine Programmiertipps zu erklären, und sie haben es größtenteils genossen.
Kommt Ihnen das bekannt vor?
“Ja, aber man sollte ein gutes Niveau haben, um [Miks Code] zu verstehen, weil die Komponenten intelligent entkoppelt sind.”
Betrachten Sie diese Aussage aus einer risikobasierten Perspektive. Ihr Chef muss die Dinge am Laufen halten, egal was passiert. Wenn Sie sich auf die Suche nach einem tollen Job machen, muss Ihr Chef trotzdem dafür sorgen, dass der Code beibehalten wird. Was Ihr Mitarbeiter gerade gesagt hat, war, dass er, wenn er Sie ersetzen muss, einen sehr guten Coder nötig hat, denn wer nicht so gut ist, wird nicht in der Lage sein, den Code zu warten. Das ist ein Risiko. Was ist, wenn sie keinen ausreichend guten Entwickler finden oder es sich nicht leisten können, sie ausreichend zu bezahlen?
Sie haben vielleicht etwas produziert, das Sie “guten Code” nennen würden, aber die Definition von “gutem Code” ist sehr stark vom Kontext abhängig. Was bei Google mit seiner hochmodernen Denkweise “guter Code” ist, kann für jemanden, der bei der FAA arbeitet und dem es in erster Linie um Zuverlässigkeit geht und nicht darum, auf dem neuesten Stand der Technik zu bleiben, sehr schlechter Code sein. Die Definition Ihres Chefs für “guten Code” schließt die Fähigkeit ein, ihn in allen möglichen Situationen aufrechtzuerhalten, auch ohne Sie. Wenn sich Ihre Mitarbeiter nicht wohl dabei fühlen, Ihren Code zu pflegen, dann sind Sie plötzlich eine Haftung für das Unternehmen, weil Sie Produkte herstellen, die sie nicht pflegen können, wenn Sie sich entscheiden, woanders hinzugehen.
Aus dieser Perspektive kann man argumentieren, dass Sie sie zwingen, Ihre Definition von “gutem Code” zu akzeptieren. Instinktiv mag dies als eine gute Sache erscheinen, aber es ist mit Schwierigkeiten behaftet, wie z.B. dieser risikobasierten Denkweise, an die Sie vielleicht nicht gedacht haben.
Wir haben eine Phrase, “das Pferd beim Schwanz aufzäumen”. Eine der vielen Bedeutungen, die damit verbunden sind, ist, den Inhalt, der Ihnen am wichtigsten ist (die Fähigkeit, Ihre fortgeschrittenen Techniken anzuwenden), über die Kräfte zu stellen, die ihn vorwärts ziehen sollten (das Verständnis Ihres Mitarbeiters für diese Techniken). Sie haben den Code in diesem fortgeschrittenen Stil geschrieben und dann die anderen Entwickler ermutigt, zu diesem Stil “aufzuschließen”. Das kann effektiv sein, aber wenn Ihnen etwas passiert, bevor sie “aufgeholt” haben, ist das Unternehmen plötzlich in Gefahr, weil niemand den Code warten kann.
Wie kann ich das in Zukunft vermeiden?
Dies zu beheben, kann furchtbar schwer sein, weil es bedeutet, das Problem auf eine andere Weise anzugehen, als Sie sich normalerweise wohl fühlen. Anstatt zuerst Code in diesem fortgeschrittenen Stil zu schreiben und dann Ihren Mitarbeitern beizubringen, wie man so denkt, sollten Sie das Ganze umdrehen. Bringen Sie Ihren Mitarbeitern bei, diesen Codierstil zu mögen, und fangen Sie dann an, Code in diesem Stil zu schreiben. Es mag rückwärts erscheinen, aber es ist viel stabiler. Aus der Sicht des Chefs ist es wenig bis gar kein Risiko, wenn das Team lernt, besser zu programmieren. Sobald sie besser codieren, ist der Stil, in dem Sie entwickeln wollen, plötzlich weniger riskant.
In der Zwischenzeit werden Sie Code schreiben müssen, der nach Ihren Maßstäben “weniger gut” ist, aber das ist in Ordnung. Ihr Code ist hier nicht Ihr einziges Produkt. Ihr anderes Produkt hilft dabei, die anderen Entwickler zu unterrichten, und der Wert davon kann leicht den Wert des Schreibens von “perfektem Code” übersteigen.
Natürlich kann es schwer zu sagen sein, wann es sicher ist, Code in dem Stil zu schreiben, in dem Sie schreiben wollen. Wenn es leicht zu erkennen wäre, hätten Sie es sicher schon herausgefunden! Eine mächtige Technik, die Sie einsetzen können, besteht darin, andere auf die fortgeschrittenen Codierstile drängen zu lassen, anstatt selbst darauf zu drängen. Es ist eine Sache, jemandem den Unterschied zwischen Vererbung und Komposition beizubringen. Es ist eine ganz andere Sache, sie so gut zu unterrichten, dass sie dafür plädieren, Ihre bestehende Codebasis so zu ändern, dass sie klarer erkennen kann, wann sie verwendet wird. Letzteres lässt Sie wirklich wissen, dass sie nicht nur das Konzept verstehen,
Ein Ideal für die Vermittlung solcher Konzepte ist es, nichts zu lehren. Lassen Sie die Schülerinnen und Schüler etwas entdecken, und dann weisen Sie ihnen eine Richtung, in die die Entdeckung gehen kann. Vielleicht entdeckt einer von ihnen etwas Ordentliches über Vererbung, und Sie können sie auf der Grundlage dessen, was sie entdeckt haben, auf das Gestaltungsmuster der Besucher hinweisen. Geben Sie ihnen nicht nur den Visitor, sondern geben Sie ihnen einen Orientierungssinn, damit sie den Visitor selbst finden können.
Es ist eine viel schwierigere Herangehensweise, und Sie werden sicherlich einen goldenen Mittelweg zwischen dieser und Ihrer derzeitigen Herangehensweise finden wollen, aber es kann sehr lohnend sein. Wichtiger für Ihre Antwort ist jedoch, dass sie für das Unternehmen ohne Risiko einen Mehrwert bieten kann. Wenn Sie für ein Unternehmen Wert schaffen und das Unternehmen nicht in Gefahr bringen, werden Sie praktisch nie jemals entlassen. Und in den wenigen Fällen, in denen Sie immer noch entlassen werden können, wird das Management einen Grund dafür angeben (z.B. einen Konjunkturabschwung oder eine Richtungsänderung des Unternehmens). Wenn Sie es sehr gut machen, werden Sie feststellen, dass das Management stattdessen anfangen wird, Ihren Weg zu gestalten, so wie Sie auch Ihre Mitarbeiter gestalten, und Sie werden eine merkwürdige Tendenz feststellen, dass Sie just die richtigen Fähigkeiten just dann gelernt haben, wenn sie sie am meisten brauchen.