Ende 2017 habe ich mich entschieden, in eine Führungsposition zu wechseln.
Das Programmieren selbst hat mich viel weniger angezogen als das, was auf einer höheren Ebene passiert ist, nämlich über Geschäftsprozesse nachzudenken, die Anwendungsarchitektur zu planen und die Arbeit zu organisieren.
Ich fühlte mich weniger wie ein Gärtner, der Tag für Tag ein kleines Stück Land kultiviert und beobachtet, wie die Sprossen durch den Boden auftauchen, als ein Bauer, der Getreide von einem riesigen Feld von der Größe eines europäischen Landes ernten und dann verkaufen muss.
Der Umfang und die Effizienz haben mich inspiriert.
Ich wollte tun, was ich wollte, aber das war unmöglich, bis ich ein Führer wurde.
In der Zwischenzeit hat meine Karriere in meinem derzeitigen Job eindeutig die Obergrenze erreicht. Zwei Jahre lang habe ich mehrere Projekte angesprochen, wurde leitender Entwickler ... Weiter war es hier möglich, nur beim Tischfußball Fortschritte zu machen.
Als mir ein Job bei der Sberbank angeboten wurde, war ich froh zu gehen. Speziell - in DomClick.
DomClick
Als ich die Schwelle des neuen Büros überschritt, befand ich mich in einer einzigartigen Position: Es stellte sich heraus, dass ich der einzige Ruby-Entwickler im Unternehmen sein würde.
In einem Team von dreihundert Mitarbeitern gab es einfach keine physisch angemessene Abteilung. Es gab keinen Ort, an den ich mich hätte setzen können. Als diese Frage auftauchte, dachte der IT-Direktor des Unternehmens genau zwei Sekunden lang nach und zeigte auf einen Tisch in der Nähe, der aus einem offensichtlichen Grund leer war. Es ist so inspirierend, wenn das Management Ihren Laptop-Bildschirm mit einer leichten Drehung des Kopfes sehen kann (nein).
Ich wurde für eine bestimmte Aufgabe gebraucht. Das Management entschied, ein amerikanisches Bank-Startup zu kaufen, um die Produktlinie von DomClick zu ergänzen. Die Ausgaben waren hoch geplant, daher musste das Projekt angepasst und gestartet werden, um den Menschen zu demonstrieren, die dieses Geld aus der Tasche ziehen werden.
Das Startup war in Ruby, also wurde ich gebraucht. Es war eine Chance. Wenn sie es kaufen würden, würden mehr Rubisten benötigt. und mit hoher Wahrscheinlichkeit würde ich ihr Chef werden. Eine kleine Alien-Larve, gefangen in einem riesigen Organismus DomClick. Ich dachte gerne so darüber nach und stellte mir vor, dass von diesem Moment an meine Übernahme dieses Universums beginnt.
Aber zwei Monate später, an dem neuen Ort, stellte sich heraus, dass der Geiger nicht mehr gebraucht wurde. Die Tops sahen sich das Projekt an, an dem ich arbeitete, und beschlossen zu warten.
Rubisten gehören nicht hierher
Ich war arbeitslos, ein einzelner Ruby-Programmierer, umgeben von Dutzenden gut koordinierter Teams von Javisten, Pythonisten und Frontend-Entwicklern. Es war nicht geplant, andere Rubisten zu rekrutieren.
Glücklicherweise gefiel meinem Management im Allgemeinen die Art und Weise, wie ich meine Arbeit erledigte, so dass es keine Frage der Entlassung gab. Sie wussten auch nicht, was sie mit mir anfangen sollten. „Gehen Sie jetzt herum und überlegen Sie, wie Sie für das Unternehmen nützlich sein können. Vielleicht kannst du einen Go-Code ausprobieren? " - Der Chef hat es mir gesagt. Ich war so unnötig, dass es sich irgendwann nicht mehr wie eine schlechte Idee anfühlte. Um sich die Verzweiflung meiner Situation vorzustellen, müssen Sie verstehen, was damals im Unternehmen geschah und was DomClick im Allgemeinen ist.
Wenn Sie in den letzten 5 Jahren Immobilien gekauft / verkauft haben, sollten Sie mit hoher Wahrscheinlichkeit über diese Website Bescheid wissen. Insbesondere wegen ihm entfernt NTV keine Serien mehr über blutige Makler und wir hören diese erschreckenden Geschichten nicht darüber, wie jemand entführt / gefoltert / getötet wurde, als er beschloss, das Kopekenstück seiner Großmutter in der Mitte auszutauschen. DomClick bot dem Markt eine bequeme und sichere Möglichkeit, einen Wohnraum zu kaufen / verkaufen.
Das Projekt war noch jung, aber schon in diesem Moment verstanden alle, dass sie am Vorabend eines grandiosen Nix anwesend waren. Eine gigantische Website entsteht mit Dutzenden von Diensten, die im ganzen Land und darüber hinaus genutzt werden. Es werden Millionen von Codezeilen benötigt, was bedeutet, dass viele Programmierer ihre Familien jahrelang ernähren können, Gutscheine für ein Sanatorium für Schwiegermutter und Siegel für Frauen kaufen können.
Aber zuerst musste entschieden werden, was diese Dienste geschrieben werden sollten. Leider war die Diskussion bei meiner Ankunft geschlossen - der Pokal wurde zwischen den Entwicklern in Java und Python aufgeteilt. Javisten beschäftigten sich hauptsächlich mit internen und geladenen Diensten, Integrationen mit der Bank, während Pythonisten mehr kundenorientierte Aufgaben und Neueinführungen erhielten. Jeder von ihnen bereitete sich darauf vor, in den nächsten 5 Jahren eine Wohnung und einen Block Tesla-Aktien zu kaufen, nach Ba̒li zu gehen und ein instamodel Mädchen zu finden.
Es war unrealistisch, sich mit einer anderen Technologie zwischen ihnen zu verkeilen.
Normalerweise fand die Geburt eines neuen Projekts auf diese Weise statt: Das Unternehmen hatte eine Idee, sie gingen zum IT-Direktor, und er wählte bereits ein freies Team von Programmierern für das Projekt aus oder rekrutierte ein neues.
Was könnte ein Rubyist in einer solchen Situation tun? Könnte ich meine Hand heben und sagen: "Aber Ruby hat bereits Edelsteine für all das bereit"? Dies wäre aus drei Gründen ein völlig verlorener Fall:
- Alle dachten, Ruby sei einfach unnötig. Python und Java sind genug für die Augen.
- Neben der Tatsache, dass Ruby unnötig ist, ist es auch nur eine schlechte Programmiersprache. Absolut nicht reiben.
- Der dritte Grund, vielleicht der schwerwiegendste: Ich bin der einzige Ruby-Programmierer im Unternehmen, was bedeutet, dass ich an nichts mehr oder weniger ernstem arbeiten werde.
Im Allgemeinen auf die eine oder andere Weise, aber es gab einen Konsens im Unternehmen: Es gibt keinen Platz für Rubyisten. Mein Auftritt war ein Unfall, der die Regel bestätigte. Es wurde mir dringend empfohlen, mit der Codierung für etwas anderes zu beginnen.
Aber eine Person, die die Kraft der Schienen gelernt hat, kann nicht einfach gestoppt werden.
Rubin
Trotz des Status Quo von "Ruby is bad" wusste jeder über seine Stärke Bescheid - Entwicklungsgeschwindigkeit. Ich entschied mich, dies zu nutzen und schlug den Vorgesetzten vor, Prototypen der Dienste zu erstellen, deren Einführung geplant war. Ein bisschen wie "Lassen Sie mich schnell ein Beispiel Ihres Startups schreiben, und dann wird sicher klar, ob es sich lohnt, es in einer" normalen "Sprache oder besser sofort für Schrott umzuschreiben".
Die Idee wurde geschätzt und gesegnet. Dies war meine zweite Chance. Die Drossel des Glücks flatterte praktisch in meinen Händen, als ich das Gefühl hatte, das Rennen zu verlieren. Nach einem kleinen MVP warf mir das Unternehmen die Funktionalität zu, die ich in der Testversion von CRM sehen wollte, und es war trotz der Geschwindigkeit des ersten Starts eine völlig überwältigende Menge an Arbeit. Allein durch die Kräfte von mir, die beschuldigt wurden, nicht bereit zu sein, in Pythonisten überzugehen, war es auf absehbare Zeit unmöglich, die erforderliche Sonde herzustellen.
Ich saß vor meinem Laptop und sah düster zu, wie ich immer spät wurde. Neben der letzten Hoffnung, ein Rubinist zu bleiben, waren auch berufliche Ambitionen verschwunden: Ein Pasta-Monster weiß, wie lange es dauern wird, bis in einer neuen Sprache die Kompetenz erreicht ist, die erforderlich ist, um bei der Wahl eines neuen Kraken erneut seinen Namen zu rufen.
Dies berücksichtigt nicht die Tatsache, dass ich beim Ändern der Sprache, beispielsweise in Python, automatisch 150 weitere verdiente Rivalen für die Beförderung bekomme.
Es war eine Sackgasse.
Die Aufgabe wurde von mir entfernt und kehrte zu ängstlichen Gedanken über meine Zukunft zurück. Ich sah Versus-Schlachten, hörte deprimierende Musik und trank Dr. Pepper. Anscheinend erschien die Lösung aufgrund der Fülle an Zucker ziemlich schnell.
Ich habe aus dem letzten Fiasko eine Lektion gelernt: Man kann kein Stück abbeißen, das man nicht kauen kann. Die Leute sehen, wie Sie zum Narren gemacht wurden und erinnern sich. Ein oder zwei weitere solcher Versuche, und sie werden mir hier ein Ende setzen und entscheiden, dass ich ein Versager bin.
Jetzt brauchen wir eine Aufgabe, über die ich mit Sicherheit wissen werde, dass keine Aussetzer auftreten werden. Groß genug, um beeindruckend zu sein, aber klein genug, um in meiner Reichweite zu sein. Aber wo kann ich eine bekommen und wie kann ich sie mir zuweisen lassen?
Der einfachste Weg, eine solche Aufgabe zu finden, war im Rahmen eines bereits entwickelten Projekts. Der Plan war, sich als Java-Entwickler auszugeben.
Unruhestifter
Den Javisten ging es gut. Zuerst schien es mir, als wäre ich in ein Team von echten Programmierern geraten, die mit klaren Mustern und Schnittstellen arbeiteten. Ich hatte mich noch nie so programmiert gefühlt wie in den letzten Wochen.
Aufgrund meiner oberflächlichen Kenntnisse in fast allen gängigen Web-Sprachen passte ich mich schnell an und begann nützlich zu sein. Die Arbeiten waren im Gange. Das Projekt wurde sogar in mehreren Regionen gestartet, um Fehler zu erkennen. Das Problem war, dass die Bewegung trotz der Tatsache, dass wir zu fünft waren, sehr ruhig war. Ich habe einen Rabatt auf die Tatsache gemacht, dass es so sein sollte, weil dies ein Unternehmen ist, das Sie verstehen müssen, aber es wurde schnell klar, dass alles viel ernster ist.
Das Team stand in scharfem Konflikt mit dem Produktbesitzer. Sie fluchten, fast ohne Ausdrücke zu wählen.
Die erste Codezeile wurde vor anderthalb Jahren geschrieben, aber das Projekt hat immer noch nicht wirklich funktioniert. Eine gute Geschäftsidee stieß in der Implementierungsphase auf ungeklärte Probleme. Die Hauptbeschwerde von PO als Vermittler zwischen dem Unternehmen und den Programmierern war die Unmöglichkeit, schnelle Änderungen vorzunehmen. Als er nach Änderungen gefragt wurde, hörte er: "Monat, Monat, Monat." Und viele Änderungen waren erforderlich. Das System war so unpraktisch, dass ein Bediener maximal ein oder zwei Anfragen pro Tag bearbeiten konnte. Die Funktionalität schien zu funktionieren, aber es gab so viele Fehler, dass man beim Starten im ganzen Land einfach in Beschwerden ertrinken konnte. Einige Vorgänge wurden nur bei einem Anruf beim Programmierer ausgeführt, der die Daten in der Datenbank manuell änderte oder die erforderlichen Informationen aussprach. Die Benutzeroberfläche war schief. Von Automatisierung war keine Rede.
Und inmitten all dieser Probleme gelang es den Programmierern, Fahrräder wie ein selbstgeschriebenes Analogon von Tabellen oder einen Mailinglistendienst zu erfinden. Die geringsten Verbesserungen führten dazu, dass irgendwo etwas abfallen muss. Jede denkbare Frist ist längst verschwendet worden.
Und wissen Sie, wie sich die Programmierer erklärt haben, was passiert ist? "PO ist dumm und alle seine Vorschläge beziehen sich auf nichts."
Es schien mir, dass der Punkt nicht in PO war, sondern im Code. Als die nächste dringende Aufgabe eintraf, wurde mir klar, dass es Zeit war, die Masken abzureißen. Es war notwendig, ein System von Fragebögen zu erstellen, nach dessen Ergebnissen ein fertiges Dokument erstellt wird. Die Programmierer meines neuen Teams äußerten nach Rücksprache mit der PO, dass sie mit den Bemühungen von zwei Entwicklern in drei Monaten das Notwendige tun würden.
Drei Monate und zwei Programmierer!
Das Sofa unter der PO rauchte. Er wurde grün, aber aufgrund bitterer Erfahrungen schwieg er und wusste, dass es sinnlos war, zu fragen, zu betteln oder sich zu beschweren. Die Aussicht auf Entlassung zeichnete sich ab. Aber die Möbel rauchten nicht nur unter ihm. Ich wusste, dass die Funktionalität, die ich gerade angekündigt hatte, auf Knopfdruck in Ruby verfügbar sein würde.
"Ich werde das in einer Woche schreiben", machte ich einen Schritt. - Und ich habe noch Zeit, alle Schlachten mit Oksimiron zu überprüfen.
Die Aufgabe war genau das, worauf ich gewartet hatte, um in dieses Spiel der Throne einzusteigen.
PO glaubte es nicht. Das Team auch. In ihrem Universum betrug die Mindestzeiteinheit einen Monat, aber die Fristen brannten wirklich, und so wurde mir nach einer kurzen Abwicklung der Formalitäten eine Woche gegeben.
Wie Sie wahrscheinlich wissen, ist Ruby für die Geschwindigkeitsentwicklung gottähnlich. Ich würde mein Herz verdrehen, wenn ich sagen würde, dass ich mich sehr bemühe oder mir Sorgen um meine dritte Chance mache. Das Juwel, das mein Problem löste, wurde in Ruby perfektioniert und lief wie am Schnürchen.
Nach einer Woche zeigte ich das Ergebnis.
- Warum machen wir dann nicht alles in Ruby? Der Produktbesitzer fragte. Um ehrlich zu sein, weiß ich die Antwort immer noch nicht.
Wir hatten an diesem Tag ein offenes Gespräch. Ostap litt und enthüllte mir den wahren Stand der Dinge. Das Projekt wurde zu einem höllischen Langzeitbau. Die unmittelbaren PO-Chefs hatten bereits direkt auf seine Entlassung hingewiesen. Er hörte auf zu schlafen. Ich sympathisierte mit ihm und bat ihn, die gesamte Logik zu beschreiben, die die Anwendung ausführen musste. Als er fertig war, wurde mir klar, dass ich mit zwei Kameraden das gesamte Projekt in drei Monaten umschreiben würde.
Die Programmierer des Projekts waren keine schlechten Leute oder Saboteure. Sie haben es wirklich versucht. Es ist nur so, dass ihr Werkzeug nicht für die Aufgabe geeignet war. Sie gruben eine Grube mit Löffeln. Aber ich hatte einen Bulldozer.
Vierte Chance
Als PO und ich zum CIO kamen, schien er bereits zu verstehen begonnen zu haben, dass es nicht geklappt hatte, mich wieder zu taufen, und er erwartete neugierig, was ich mir diesmal ausgedacht hatte.
Ich schlug vor, das Projekt neu zu schreiben. In drei Monaten mit zwei Assistenten werde ich die Funktionalität, die 5 Programmierer in anderthalb Jahren ausgeführt haben, vollständig wiederholen und auch Chips darauf werfen. Im Gegenzug bestätigte RO, dass dies notwendig war: Der Projektcode begann sein eigenes Leben zu führen, reagiert praktisch nicht auf Änderungsversuche und wird anscheinend bald Menschenopfer in Form von Jungfrauen fordern.
Es wurde beschlossen, dass die endgültige Entscheidung zu diesem Thema beim nächsten Architekturkomitee getroffen wird - einem Sondertreffen, bei dem sich die Direktoren mit den Architekten treffen und einen Prozess genehmigen.
Wie Sie vielleicht erraten haben, deutet die Tatsache, dass Sie diese Zeilen lesen, darauf hin, dass ich das Projekt neu schreiben durfte. Mit einer minimalen Stimmenmehrheit gab der Erzausschuss den Startschuss für dieses Abenteuer. Unter anderem durfte ich zwei Rubinisten als Assistenten einstellen.
Ich wurde endlich ein Führer.
Soweit ich weiß, spielte die Tatsache, dass einige der Programmierteams des Unternehmens entspannt und zu zuversichtlich in die Zukunft blickten, nicht die letzte Rolle bei der Genehmigung meiner Initiative.
Sie brauchten eine Art Peitsche, eine Bedrohung, um sie zu motivieren, besser zu arbeiten. Ein freundliches Wort und eine Waffe können viel mehr als nur ein freundliches Wort, wie Al Capone sagte.
Und ich habe diese Pistole in ihre Hand genommen.
Die Chefs gaben den Programmierern des Unternehmens die Erlaubnis, das Projekt neu zu schreiben, und sagten den Programmierern des Unternehmens: "Wenn Sie es vermasseln, rufen wir diesen Typen an und sie schreiben Sie neu."
Aber zuerst musste ich die Aufgabe nicht verfehlen, die meine vierte Chance wurde. Als ich von dem Treffen zurückkam, war es eine ganz andere Firma. Jetzt hassten sie mich. Mein Konflikt mit dem DomClick-Software-Ökosystem, der von Anfang an begann, erreichte seinen Höhepunkt. Sie sprachen nicht mit mir, saßen nicht am selben Tisch im Esszimmer. Sobald ich den Raum betrat, begannen alle Anwesenden mich zu untersuchen. Sie flüsterten hinter meinem Rücken. Ich befand mich in völliger Isolation.
Um ehrlich zu sein, gab mir eine solche Reaktion Kraft. Das Leben ist voller Bedeutung, wenn Sie sich wie die schneidende Hand des Herrn fühlen. Ich entschied, dass ich eine sehr gute Pistole sein würde.
Buchstäblich an diesem Abend rief ich einen alten Freund an, der in Ruby programmierte, und ich war mir seiner Professionalität sicher. Er stimmte zu, ohne weiteres beizutreten. Ein paar Wochen später kam der zweite Entwickler und stellte sich als ein wirklich harter Kerl heraus, der unsere kleine Distanz stark stärkte.
Der Programmorganismus des Unternehmens lehnte uns ab. Sie haben nicht mit uns kommuniziert. Alle warteten auf unser Versagen. Und paradoxerweise hat es uns zusammengebracht und uns wachsen lassen.
Ein Merkmal von Ruby ist seine hohe Entwicklungsgeschwindigkeit. Aus irgendeinem Grund wird angenommen, dass dies auf Kosten der Qualität geht. Ein perfekt ausgeführtes Projekt in Ruby ist schlechter als ein ideales Projekt in einer anderen Sprache.
Aber wo haben Sie die idealen Designs gesehen?
Entwickler haben fast immer nicht genug Zeit, um hochwertigen Code zu schreiben, sich strikt an Muster zu halten und alles wie in Lehrbüchern zu tun. Infolgedessen erscheint dieser idealste Code, den jeder so bedroht, nie.
Aufgrund seiner Geschwindigkeit können Sie mit Ruby dieselbe überschüssige Zeit erhalten, die Sie für das Nachdenken über Architektur und die Suche nach besseren Abstraktionen verwenden können. Der resultierende Code erweist sich paradoxerweise auch als von höchster Qualität.
Als wir drei Monate später eine neue Version des Projekts herausbrachten, funktionierte es perfekt, abgesehen von kleineren Fehlern. Die Endbenutzer des Projekts - die Anwälte von Domclick - waren anfangs unglücklich, weil sich die Benutzeroberflächen geändert hatten, aber nach ein paar Wochen verstummten ihre Stimmen. Das Projekt funktionierte wie eine Uhr. Es wurde fast sofort in ganz Russland eingesetzt.
RO war glücklich. Das alte Projektteam wurde aufgelöst.
Ich durfte zwei weitere Programmierer einstellen.
Mein kleiner Sperrzug verwandelte sich in eine vollwertige Kompanie. Sie hassten uns, aber sie konnten nichts tun.
Meine Jungs spürten die Besonderheit ihrer Position. Sie eilten und es gelang ihnen. Es gab ein Gefühl des Fließens - einen Zustand maximaler Konzentration und Handlungsbereitschaft. Wir konnten alle hier schnell und effizient umschreiben.
Dies spornte das gesamte Unternehmen an.
Neben der Angst, überschrieben zu werden, herrschte ein gesundes Wettbewerbsgefühl. Wenn diese Neuankömmlinge so schnell und effizient arbeiten können, warum sind wir dann schlechter? Wir werden unsere eigene Firma verteidigen! Lassen Sie uns diese Emporkömmlinge zurück in die Unterwelt werfen, aus der sie kamen!
Ein Teil des Teams hob den von den Rubisten geworfenen Handschuh, was dem gesamten Unternehmen zugute kam. Tatsächlich teilte sich das Team in Brüder und Lacher.
Brüder überspringen die Muster, sind immer bereit zu helfen, denken über die Vorteile des Unternehmens und den Erfolg ihres Projekts nach. Lacher spielen auf Zeit, geben keine Fehler zu, wollen nicht neu lernen und verhandeln. Du machst es klar - Bruder. Du bist dumm, du hast eine Speiche in die Räder gesteckt, du schadest, du willst viel verdienen, aber wenig zu tun ist ein Lacher.
Wir haben großartige Arbeit geleistet und das Ruby-Banner über den eroberten DomClick gesetzt, als der letzte Boss dieser Geschichte über mich herauskam.
Bei einem der Treffen in hohen Ämtern fragte ein sehr intelligenter Mann nach einer langen Geschichte über ein neues Projekt mit leiser Stimme: "Zeig mir das am Montag."
Und es gab nichts zu zeigen. Es war Freitagabend. Als ich in den Besprechungsraum gerufen wurde, saßen angespannte Gesichter herum und hielten ihre Köpfe mit den Händen fest und überlegten, was sie tun sollten. Der Mindestzeitraum, für den die anderen bereit waren, das Projekt abzuschließen, betrug „nicht weniger als zwei Wochen“, aber drei Tage. Ich stimmte zu.
Die ganze Firma wartete darauf, wie es enden würde. Gewöhnliche Mitarbeiter mit Neugier, Chefs mit dem Gefühl einer bevorstehenden Katastrophe. Und als am Montag die Sonne aufging, musste niemand ein Rücktrittsschreiben schreiben, sich erschießen oder über die Staatsgrenze fliehen.
Alles hat in der Produktion funktioniert. Die Tasten wurden gedrückt, die Seiten wurden aktualisiert und alle waren glücklich. Und irgendwo in Moskau schliefen drei unrasierte Programmierer wie ein toter Schlaf.
Als ich abends den Hörer abnahm, wurden mir die drei wichtigsten Wörter meines Lebens gesagt: "Stellen Sie mehr Programmierer ein."
Bis heute besteht die Rubyists-Abteilung aus etwa 20 Mitarbeitern, mehr als 6 Projekten unterschiedlicher Komplexität, und wir expandieren weiter.
Und jetzt die Moral der Geschichte.
Einmal wurde bei einem der vierteljährlichen Treffen eine Frage an unseren ständigen Führer gestellt: "Wie kann ich ein Führer werden?", Zu der das Zitat gegeben wurde: "Sie geben keine Macht - sie übernehmen Macht." Seien Sie effektiv, streben Sie nach Erfolg und wenn Sie wirklich bereit sind, jeden Tag besser zu werden, werden Sie Erfolg haben.
Im Allgemeinen ist das Leben zu kurz, um langen Code zu schreiben. Benutze Edelsteine, Freunde!
PS Hier ist auch ein Video mit unseren Auftritten, aus dem Sie verstehen, was es uns ermöglicht, schnell und effizient zu sein: