In letzter Zeit träumen immer mehr Menschen davon, zu Hause zu bleiben, coole Projekte in einem verteilten Team zu schreiben, eine Katze unter einer Tasse Kaffee zu Hause zu streicheln und gutes Geld dafür zu plündern. Tatsächlich ist daran nichts auszusetzen, Tausende von Entwicklern arbeiten auf diese Weise. Dies ist jedoch häufig ein Argument für Leute, die nicht über genügend Erfahrung verfügen und in der Realität wahrscheinlich nicht in der Lage sind, einen solchen Job zu bekommen, ohne Kampferfahrung im Büro zu sammeln.

Jones auf der Fernbedienung werden nicht benötigt
Wie die Jungs von Toaster, insbesondere die Kuratoren der meisten Sektionen, gerne sagen, brauchen sie keine Jones an einem entfernten Standort, genauso wie die Wahrscheinlichkeit, dass sie ab Juni etwas verdienen, wenn sie freiberuflich tätig sind. Und das ist es wirklich. Aber auch jeder weiß, dass es immer eine Person geben wird, die das tut, was als nahezu unmöglich galt.
Also, mein Name ist Sergey, ich bin ein Unternehmensentwickler, ich lebe in der Stadt Ussuriysk (Region Primorsky, 200.000 Einwohner, +7 Stunden mit Moskau), ich habe keine spezielle Ausbildung und ich habe einen Tag lang nicht als Entwickler im Büro gearbeitet. Und in dieser Geschichte geht es darum, wie ich zu einem solchen Leben gekommen bin.
Ich habe mir nicht zum Ziel gesetzt, die Jungs aus der Provinz zu inspirieren, damit sie alle zusammen hetzen und versuchen, einen Job an einem abgelegenen Ort zu finden. Ich möchte zeigen, wie viel Zeit ich für das Wachstum eines Entwicklers aufgewendet habe (ohne Zweifel hätte ich es viel schneller gemacht, wenn es in meiner Stadt ein „Büro“ gegeben hätte).
Nach dem Studium
Ursprünglich hatte ich vor, im Glücksspielsektor zu arbeiten, also ging ich nach der Schule zum „Soziokulturellen Dienst und Tourismus“, aber das Gesetz der Russischen Föderation über das Verbot von Glücksspielaktivitäten wurde im 2. Jahr herausgegeben. Obwohl ich im Primorsky Territory wohne, wo sie bis 2012 ein Casino bauen sollten, waren alle Fristen gebrochen, und tatsächlich gab es zu dem Zeitpunkt, als ich meinen Abschluss machte, nichts. Genauer gesagt, es gab unterirdische Casinos, aber das waren die Orte, an denen man definitiv nicht arbeiten möchte.
Infolgedessen bekam ich zuerst eine Anstellung bei einem Reisgroßhandelsunternehmen, verließ das Unternehmen dann als Installateur für die Internetverbindung und unterstützte dann den 1C-Franchisenehmer. Alles dauerte ungefähr anderthalb Jahre. Wie sie sagen, in den Händen eines roten Diploms der Universität, und alle Türen stehen vor Ihnen offen.
Technischer Support
Die ganze Zeit über suchte ich nach etwas passenderem und eines Tages sah ich bei My Circle eine Stelle im technischen Support der Nacht. Unter Berücksichtigung meiner Zeitzone, 7 Uhr in Wladiwostok, 0:00 Uhr in Moskau, konnte ich praktisch tagsüber in der Nachtschicht arbeiten. Ich antwortete, redete und bekam einen Job.
Natürlich wird die linke Person einfach so nicht zur Unterstützung genommen. Seit meiner Schulzeit baue ich gerne Websites und erstelle verschiedene Websites für mein Dotka-Team und den örtlichen Spieleclub. Aufgrund meiner Ausbildung verfügte ich über ausreichend Englisch, sodass ich auch Kunden aus Australien, Neuseeland und den USA unterstützen konnte. Ich hatte tatsächlich das Niveau eines so guten Webmasters mit Englisch und die Erfahrung der Unterstützung von 1C.
Mach weiter
Auf einem der Unternehmenskongresse habe ich mit den Mitarbeitern der Entwicklungsabteilung gesprochen und festgestellt, dass es sich bei den behandelten Themen nicht um eine Art „Raketenwissenschaft“ handelt und dass ich es auch versuchen kann. Außerdem war die formale Bildung humanitär, aber wir hatten immer noch Mathematik, Statistik, Wirtschaft, Buchhaltung und Programmierung, also hatte ich keine große Angst vor Formeln und Zahlen.
Es war 2014, überall wurde gerufen, dass PHP scheiße ist, dass Python die Zukunft ist und so weiter (wie naiv und dumm ich war!). Also fing ich an, von ihm Programmieren zu lernen. Wie ich es gemacht habe:
1) Ich habe die Bücher von Mark Lutz „Learning Python“, „Programming in Python“, heruntergeladen. Die Bücher waren ziemlich schwierig, weil es extrem langweilig war, sie zu lesen, aber sie gaben eine sehr gute Basis. Wenn Sie die Wahl haben, schnell zu beginnen oder ein grundlegendes Programmierbuch zu lesen, empfehle ich dringend, mit dem zweiten zu beginnen, um die erforderliche Basis zu erhalten. Es ist wichtig zu verstehen, nicht nur "wie", sondern auch "warum" und "warum".
Nach den Büchern habe ich beschlossen, ein wenig zu spielen und verschiedene Parser für Spieleportale (Brablay / GoodGame) zu schreiben, um Statistiken zu bestimmten Themen zu sammeln. Insbesondere war es interessant zu sehen, wie bestimmte Personen Kommentare hinterlassen, insbesondere ihre große Anzahl.
2) Dann habe ich beschlossen, etwas Bedeutenderes zu tun und ein Artikelportal in Python zusammenzustellen. Ich habe ein Buch über Django gelesen (um ehrlich zu sein, ich habe es nicht sehr verstanden - die Informationen wurden zu schnell und zu "vakuumiert" gegeben). Also habe ich mir ein paar Einführungsvideos zu Django von ITVDN angesehen und mich der offiziellen Dokumentation zugewandt.
Während der 4-monatigen Entwicklungszeit habe ich mich an das Layout gewöhnt und verstanden, wie man mit der Datenbank arbeitet, Migrationen schreibt, SSL einstellt und so weiter. Infolgedessen habe ich das nächste Jahr damit verbracht, eine Reihe meiner eigenen Projekte zu starten und kleine Websites für Einheimische zu entwickeln (Drop-Shippig-Site, Fahrradgeschäft, Sporternährungsgeschäft usw.).
3) Nach einem Jahr wurde es mir langweilig, Projekte auf Django zu entwickeln. Ich fing an zu schauen, was sich sonst noch für Python ausdenken ließe. Ich habe wahrscheinlich alle Python-Bücher gelesen, die sich auf der Ozon-Website befanden. Angefangen von einem Buch über Devops bis hin zu Computer Vision und maschinellem Lernen. Diese Themen haben mich nicht wirklich inspiriert (ich habe den angewendeten Wert auf meiner Skala nicht gesehen, den ich hier und jetzt verwenden kann), aber diese Begriffe aus unbekannter Magie und "Skynet" haben sich in gewöhnliche Formeln und angewandte Bibliotheken verwandelt.
4) Am Ende beschloss ich, meine Computerkenntnisse ein wenig zu verbessern und begann Bücher über C / C ++ / Java / Computernetzwerke / PostgreSQL / TDD und Corporate Patterns zu lesen. Um ehrlich zu sein, eine interessante Erfahrung, wenn Sie verstehen, wie eine andere Technologie funktioniert, worauf sie angewiesen ist, welche Herausforderungen sie mit sich bringt und wie sie "komplexe Aufgaben" von Ihrem Stapel löst.
Unabhängig davon können wir das Buch über den Frühling erwähnen, in dem gezeigt wurde, wie viel komplexer eine Unternehmensanwendung ist als ein "unkompliziertes" Projekt auf Django.
Testen und automatisiertes Testen
Nachdem ich drei Jahre im Support gearbeitet hatte, wurde mir leider der Zugang zur Entwicklungsabteilung verweigert, aber es gab die Möglichkeit, eine Stelle in der Testabteilung zu bekommen. Zu diesem Zeitpunkt kannte ich Python frei und konnte es auf Java, also wäre es töricht, nicht zuzustimmen.
Die Testabteilung gab ein ziemlich gutes Verständnis dafür, wie komplexe Systeme entwickelt werden, wie Teams in sich selbst und miteinander interagieren. Konfiguration verschiedener Testumgebungen, Aufgabenpriorisierung und vieles mehr.
Dies ist natürlich die Automatisierung von Selentests mit Ruckversuchen durch Jenkins, wenn neue Builds veröffentlicht werden.
Mir hat auch das Thema Testdesign gefallen. Das Unternehmen verfügte über einen großen Pool an verschiedenen Testkursen, sodass Sie mit ihnen eine Menge cooler Dinge lernen konnten, an die Sie im Bereich Testdesign noch nie gedacht hatten. Entwerfen Sie beispielsweise die Mindestanzahl von Testfällen, um die meisten Systemvarianten mit paarweisen Generatoren (http://www.pairwise.org/) abzudecken. Dies sind coole Dinge aus der Arbeit von QA-Engineer, über die viele Entwickler nicht einmal nachdenken.
Übergang zur Entwicklung
Nach eineinhalb Jahren in der Testabteilung habe ich die Vereinbarung getroffen, dass ich die Möglichkeit bekomme, ein Praktikum in der Entwicklungsabteilung zu absolvieren, wenn ich einen funktionierenden Prototyp auf dem PHP-Stack zur Verfügung stelle.
Einen Monat verbrachte ich mit Büchern über PHP. Nach Python und Java erwies sich die Beherrschung von PHP als recht einfach, obwohl von Zeit zu Zeit die Frage „Warum nicht hier so?“ Auftauchte.
Und ich verbrachte drei Monate mit dem Symfony-API-Service (Web-Muzzle, persönlicher Account, Geschäftslogik, E-Mail-Benachrichtigungen, PDF-Generator, Parsen komplexer Json-Strukturen und mehr). Plötzlich stellte sich heraus, dass Symfony eine Art Hybrid aus Django und Spring ist, so dass es überhaupt keine Verständigungsprobleme gab.
Als Ergebnis zeigte ich mein Projekt und bekam ein Praktikum in der Entwicklungsabteilung, von wo ich bereits zu einem vollwertigen Entwickler versetzt wurde.
Erste Monate als Entwickler
Ich erhielt einen Mentor, der meinen Code überprüfte und vorschlug, warum ich das tun sollte und nicht anders. Manchmal dauerten die Anrufe eineinhalb bis zwei Stunden, als der Code auf dem Ball detailliert analysiert und Empfehlungen zur Verbesserung gegeben wurden. Tatsächlich stellte sich heraus, dass ich Entscheidungen zur richtigen Zeit mit der richtigen Logik traf, aber aufgrund der Tatsache, dass ich keine Erfahrung in der Unternehmensentwicklung hatte, erwiesen sie sich als zu verwirrend und kompliziert. Außerdem gab es von Zeit zu Zeit Fragen zur Arbeit von Redis / RabbitMQ / Elastic usw. Die Hauptarbeit wurde jedoch vor Ort geleistet, um den Code zu vereinfachen und testbar zu machen (wenn Sie den Code selbst schreiben, denken Sie nicht einmal, dass andere ihn nicht lesen können). Infolgedessen wurde mein Code innerhalb von 4 Monaten an die Unternehmensstandards angepasst.
Wenn Sie den Code selbst schreiben, denken Sie nicht einmal darüber nach, wie andere ihn verstehen und ob es richtig ist, Ihre Gedanken auf diese Weise auszudrücken. Teamarbeitserfahrung ist schwer zu ersetzen.
Umfassende Erfahrung, um die Arbeit des Entwicklers an einem entfernten Standort von Grund auf neu zu gestalten -
4 Jahre, 9 Monate.Als Ergebnis der Fernarbeit von Grund auf neu:
- Die Wahrscheinlichkeit, einen Job als Entwickler an einem entfernten Standort zu bekommen, nachdem ein Kurs abgeschlossen und ein Tutorial gelesen wurde, geht gegen Null.
- Die Wahrscheinlichkeit, auch mit der Arbeit des Junis an einem abgelegenen Ort ohne die Erfahrung einer kommerziellen Entwicklung oder irgendwelcher eigener Projekte fertig zu werden, geht gegen Null.
- Die Wahrscheinlichkeit, dass das Unternehmen ohne Empfehlungen Zeit für Sie aufbringt, um etwas zu lehren, geht gegen Null.
- Die Wahrscheinlichkeit, dass Sie nach dem Lesen einiger Bücher und dem Erhalten eines Jobs an einem entfernten Standort etwas "großes Geld" erhalten, geht gegen Null.
- Zu Beginn seiner Karriere eine Entscheidung zu treffen, um das Büro zu verlassen und einen abgelegenen Ort zu suchen, ist ein großer Unsinn.
- Andere IT-Jobs abzulehnen, da Sie von Beginn Ihrer Karriere an nur Entwickler an einem entfernten Standort sein möchten, ist nichts als Dummheit.