Dies ist eine traurige und lange Geschichte über die Beziehung im IT-Team und die Unternehmenskultur sowie über die gemeinsame Entwicklung. Ich hoffe, sie hilft jemandem, unsere Fehler nicht zu machen und bessere Beziehungen zu Kollegen aufzubauen.
Eintrag
Ende März 2018 begann ich, wie es mir schien, in einem zuverlässigen und attraktiven schwedischen Unternehmen mit einer großen IT-Abteilung von 200 Mitarbeitern zu arbeiten. Ich träumte davon, viel an der Entwicklung neuer Java-Anwendungen teilzunehmen, Spring-Frameworks besser kennenzulernen, neue Technologien zu lernen (bevor ich versehentlich in einem Unternehmen gelandet bin, in dem SVN noch verwendet wurde), an interessanten Diskussionen teilzunehmen, angemessene Kommentare in Code Review zu erhalten und zu hinterlassen (und sich nicht nur mit Leerzeichen und Einrückungen beschäftigen) - kurz gesagt, Teil einer professionellen Gemeinschaft sein und sich als Spezialist entwickeln können. Die berüchtigte schwedische Unternehmenskultur und das bunte internationale Team haben mich ermutigt und meine Hoffnungen auf eine fruchtbare Zusammenarbeit mit dem Unternehmen gestärkt.
In den ersten Monaten konnte ich wirklich sagen, dass ich alles gefunden habe, wonach ich gesucht habe. Ich stürzte mich schnell in die Entwicklung, nahm an der MVP-Veröffentlichung teil, lernte viel und lernte sogar Kotlin, wodurch ich einen realisierbaren Beitrag zu anderen Projekten leisten konnte.
Aber mein Glück hielt nicht lange an ...
Rekrutierung
Anfang September erschien ein neuer Mitarbeiter in unserem Team. Der Einfachheit halber nenne ich ihn Gianni (ein Nachkomme von Italienern, die nach Brasilien gezogen sind). Unsere Teamleiterin Kira und die Senioren, die ihn interviewten, zeigten keine besondere Begeisterung, aber aus irgendeinem Grund gewann er das Herz von Kims Kirins Chef (ich stelle jetzt viele fiktive Namen vor).
Im Gegensatz zu all unseren entspannten Entwicklern (die beinahe in den Streik getreten wären, als sie gebeten wurden, im Sommer kein Bermuda zur Arbeit zu tragen), sah Gianni genau so brillant aus: in jeder +35 in Hose, einem langärmeligen Hemd und schwarz polierten Stiefeln. Von der Schwelle aus bat er um ein besseres Gehalt als das unserer Senioren und gab an, dass er fünf weitere Stellenangebote „am Telefon“ habe. Anscheinend beschloss Kim unter dem Druck all dieser unbestreitbaren Argumente, trotz Kiras Protesten alle Wünsche eines ehrgeizigen jungen Mannes zu erfüllen. Unsere Testphase dauert sechs Monate, daher haben wir beschlossen, sie zu testen.
Es ist interessant, dass Gianni sich als Java-Spring Senior positioniert hat, obwohl ich, wie ich später erfuhr, in der Realität mehrere Jahre mit PHP gearbeitet habe und bevor wir zu uns kommen - mit nur einem Java-Projekt.
Erste Schritte
Seit ich einen neuen Kollegen an Bord habe, habe ich in seinen frühen Tagen viel Zeit mit ihm verbracht. Im Allgemeinen sah alles normal aus, bis auf die Tatsache, dass er auch während unseres Gesprächs mit ihm oft weiter auf das Telefon starrte und manchmal alles ignorierte, was ich sagte.
Die erste Arbeitsaufgabe von Gianni war die Gründung unserer Kibana. Die neue Version sollte in zwei Wochen stattfinden, und alle entschieden, dass es für ihn besser wäre, sich später ausführlich mit unserer Anwendung vertraut zu machen. Und für Kibana war ein Zeitraum von zwei Wochen genau richtig (das Unternehmen hatte bereits die gesamte Infrastruktur dafür eingerichtet, es war lediglich erforderlich, sie an unserer Anwendung zu befestigen).
Einen Monat später - nach der Veröffentlichung, dem langen Leid darüber, wie schwierig es ist, Logback zu konfigurieren, und einigen Streitereien in Devops (die natürlich nicht funktionieren wollen) - war Kibana fertig. Und trotz der Tatsache, dass wir eine Phase der aktiven Korrektur von Fehlern unterschiedlicher Größe in einer großen Anwendung und zwei Microservices (Sie konnten etwas finden, das Ihnen gefällt) durchliefen, begann Gianni, Grafana einzurichten.
Die Grafana dauerte insgesamt zwei Monate. In den ersten anderthalb Wochen wurde eine Zeile mit der Sammlung von Metriken für jede verworfene Ausführung geschrieben und in den Überprüfungscode eingefügt. Fast unmittelbar nach der Veröffentlichung hinterließ ich einen Kommentar, der besagte, dass die AOP-Komponente zum Sammeln von Metriken geeignet ist, und in den zweiten anderthalb Wochen las Gianni über AOP im Allgemeinen, über AOP im Frühjahr im Besonderen, um zu entscheiden, ob meine Idee vernünftig ist. Erst nachdem andere Entwickler in die Überprüfung eingetreten waren, begann er, sie zu implementieren.
Ich erinnere mich an den Tag, an dem ich wirklich viel Arbeit hatte: Unser Senator Carl machte Urlaub, ich musste die neue Entwicklerin Sarah vorstellen, und die Anzahl der Tickets ließ mich meine grundlegenden Aufgaben nicht vergessen. Gianni kam auf mich zu und sagte, dass er versuchte, in die AOP einzutauchen, und dass er, um vollständig zu verstehen, was ich dort sehen wollte, entweder eine Paarprogrammiersitzung oder einen Ideenausschnitt (was auch immer das war) brauchte.
Damals schien es mir, dass das Verschrauben von Aspekten der Anwendung auf der Feder aus ungefähr drei Komponenten besteht:
- Abhängigkeit hinzufügen;
- Komponentendesign;
- Erstellen von Klassen mit den erforderlichen Anmerkungen.
Ein fortgeschrittener Java-Benutzer sollte nach meinen Schätzungen keine technischen Schwierigkeiten verursacht haben, nicht einer von ihnen, aber die Organisation von Klassen könnte ziemlich viel Zeit in Anspruch nehmen. Um nicht von meinen Fehlern abgelenkt zu werden und einer Person nicht meinen eigenen Geschmack aufzuzwingen, habe ich es im Allgemeinen vorgezogen, ein Code-Snippet mit allen möglichen Variationen des Themas AOP zu erstellen, um Zeit und Zeit zu sparen.
Die Implementierung zog sich dann noch zwei Wochen hin. Entweder wurde Java nicht kompiliert, dann wurden keine Metriken hinzugefügt. Es gab weder mir noch anderen Entwicklern Fragen, das ganze Leiden wurde allein ertragen.
Parallel dazu traten einige andere seltsame Ereignisse auf. Es gab einige von ihnen, aber ich erinnerte mich gut an diese beiden.
. , , , -, - - . , , " " "", -- , .
(, ): ", , - ?"
: ", ."
( , , ): " ----, ."
—
. - ( ), . , . .
, «» (, , AOP ). , :) , , :
code snippet AOP ( " " );
, ;
, ( , );
, ;
.
, , — .
: AOP , , «» , . PO, , , .
— , , . . , :
- ( , , );
- : ( );
- gradle- ;
- static , Spring-.
, , . : « , - ».
: POC , . , , - , . , , . : «». .
, , , , . HR, , — , , . , , . , . .
, . . , , , .
. , .
: . , , , , . , ( 20!!!), — . , ( ) , , , Angular.
:
. .
(): ", ?"
: " , , ."
: ", , "
, , , "" "bbb". - : " - ? , - ."
: "-, , . , , , ."
: " - , , , , ."
: " ? , , ?"
: " , ."
: " ."
(): " ."
, .
, . , , , , , .
. . , . , .
: . (, , ) , — «» , . ( , , ), , , — . , . , , . , .
: ( ) , — . , . , , , .
. , , . , , . HR. , . , ?
. , . , «» , , .
- - — . . … , - .
, , .. . , , «» — . , , , ( ).
— — . , : . .
, , , , . , , - 404, - .
( ), — (, , , , ), , . : , . , , .
, , , / . , .