Développeur sur un site distant - de zéro à héros

Récemment, un nombre croissant de personnes commencent à rêver de la façon dont elles resteront à la maison, à écrire des projets sympas dans une équipe distribuée, à caresser un chat sous une tasse de café à la maison et à piller beaucoup d'argent pour cela. Et en fait, il n'y a rien de mal à cela, des milliers de développeurs travaillent de cette façon. Cependant, cela commence souvent à faire valoir des gars qui n'ont pas suffisamment d'expérience et, en réalité, il est peu probable qu'ils puissent obtenir un tel emploi sans acquérir une expérience de combat au bureau.



Jones sur la télécommande n'est pas nécessaire


Comme les gars de Toaster aiment à le dire, en particulier les conservateurs de la plupart des sections, ils n'ont pas besoin de jones sur un site distant, tout comme la probabilité de gagner quelque chose d'un juin en freelance. Et ça l'est vraiment. Mais tout le monde sait aussi qu'il y aura toujours une personne qui fera ce qui était considéré comme presque impossible.

Et donc, je m'appelle Sergey, je suis un développeur d'entreprise, j'habite dans la ville d'Oussouriisk (Kraï du Primorie, 200 000 habitants, +7 heures avec Moscou), je n'ai pas de formation spécialisée, et je n'ai pas travaillé au bureau en tant que développeur pendant une journée. Et cette histoire raconte comment je suis arrivé à une telle vie.

Je ne me suis pas fixé comme objectif d'inspirer les gars de la province afin qu'ils se précipitent tous ensemble et commencent à chercher un emploi sur un site éloigné. Je veux montrer l'énorme quantité de temps que j'ai passé à devenir développeur (sans aucun doute, s'il y avait un «bureau» dans ma ville, je l'aurais fait beaucoup plus rapidement).

Après l'université


Au départ, j'avais prévu de travailler dans le secteur des jeux d'argent, donc après l'école, je suis allé au «Service socio-culturel et touristique», mais la loi de la Fédération de Russie sur l'interdiction des jeux d'argent est entrée en vigueur en 2e année. Bien que j'habite dans le territoire de Primorsky, où ils étaient censés construire un casino d'ici 2012, toutes les dates limites ont été dépassées et, en fait, au moment de ma libération, il n'y avait rien. Plus précisément, il y avait des casinos souterrains, mais c'était les endroits où vous ne voudriez certainement pas travailler.

En conséquence, j'ai d'abord obtenu un emploi dans une entreprise de vente en gros de riz, puis j'ai quitté l'endroit en tant qu'installateur de connexion Internet, puis en soutien à 1C-Franchisee. Tout cela a pris environ un an et demi. Comme on dit, entre les mains d'un diplôme rouge de l'université, et toutes les portes sont ouvertes devant vous.

Support technique


Pendant tout ce temps, je cherchais quelque chose de plus approprié, et un jour à My Circle, j'ai vu un poste vacant dans l'assistance technique de nuit. Je me suis dit que, compte tenu de mon fuseau horaire, à 7 heures du matin à Vladivostok, il est 0h00 à Moscou, je peux travailler le quart de nuit pratiquement pendant la journée. J'ai répondu, parlé et obtenu un emploi.

Naturellement, juste comme ça, la personne de gauche ne sera pas prise en charge. J'adore la construction de sites depuis l'école et j'ai créé divers sites pour mon équipe dotka et le club de jeu local. De plus, en raison de mes études, j'avais un assez bon anglais, ce qui m'a permis de fournir également un soutien à des clients d'Australie, de Nouvelle-Zélande et des États-Unis. J'avais en fait le niveau d'un si bon webmaster avec l'anglais, plus une expérience de support de 1C.

Continuez


Lors d'un des congrès d'entreprise, j'ai parlé avec les gars du département de développement, et j'ai réalisé que les sujets abordés n'étaient pas une sorte de «science des fusées», et que je pouvais aussi essayer. De plus, l'éducation formelle, bien qu'elle soit humanitaire, mais nous avions toujours des mathématiques, des statistiques, de l'économie, de la comptabilité et de la programmation, donc je n'avais pas très peur des formules et des chiffres.

C'était en 2014, partout où ils criaient que le php craint, que le python est l'avenir et ainsi de suite (comme j'étais naïf et stupide!). J'ai donc commencé à apprendre la programmation de lui. Comment je l'ai fait:

1) J'ai téléchargé les livres de Mark Lutz «Learning Python», «Programming in Python». Les livres étaient assez difficiles, car les lire était extrêmement ennuyeux, cependant, ils offraient une très bonne base. Si vous avez le choix de commencer rapidement ou de lire un livre fondamental sur la programmation, je recommande fortement de commencer par le second pour obtenir la base nécessaire. Il est important de comprendre non seulement «comment», mais aussi «pourquoi» et «pourquoi».

Après les livres, j'ai décidé de jouer un peu et j'ai commencé à écrire différents analyseurs pour les portails de jeux (Brablay / GoodGame) afin de collecter des statistiques sur certains sujets. En particulier, il était intéressant de voir comment certaines personnes laissent des commentaires, en particulier leur grand nombre.

2) J'ai alors décidé de faire quelque chose de plus significatif et de créer un portail d'articles en Python. J'ai lu un livre sur Django (pour être honnête, je ne le comprenais pas beaucoup - les informations ont été données trop rapidement et trop «sous vide»). J'ai donc regardé quelques vidéos d'introduction sur Django d'ITVDN et je me suis tourné vers la documentation officielle.

Pendant 4 mois de développement, je me suis habitué à la mise en page, j'ai compris comment travailler avec la base de données, écrire des migrations, configurer SSL et ainsi de suite. En conséquence, l'année suivante, j'ai passé le lancement d'un certain nombre de mes propres projets et le développement de petits sites pour les enfants locaux (site drop-shippig, magasin de vélos, magasin de nutrition sportive, etc.).

3) Après un an, je me suis ennuyé de développer des projets sur Django. J'ai commencé à chercher quoi d'autre pouvait être pensé sur Python. J'ai probablement lu tous les livres Python qui étaient sur le site Web d'Ozon. À partir d'un livre sur Devops, se terminant par la vision par ordinateur et l'apprentissage automatique. Ces sujets ne m'ont pas vraiment inspiré (je n'ai pas vu la valeur appliquée sur mon échelle que je peux utiliser ici et maintenant), mais ces termes d'une magie inconnue et de "skynet" se sont transformés en formules ordinaires et en bibliothèques appliquées.

4) À la fin, j'ai décidé d'élever un peu mon niveau d'informatique et j'ai commencé à lire des livres sur C / C ++ / Java / Réseaux informatiques / PostgreSQL / TDD et Corporate Patterns. Pour être honnête, une expérience intéressante lorsque vous comprenez comment fonctionne une autre technologie, sur quoi elle s'appuie, quels défis elle implique et comment elle résout les "problèmes complexes" de votre pile.

Par ailleurs, nous pouvons mentionner le livre sur Spring, qui montrait à quel point une application d'entreprise était plus complexe qu'un projet "facile à vivre" sur Django.

Tests et tests automatisés


Après trois ans de travail de support, on m'a malheureusement refusé l'accès au département de développement, mais il y avait une opportunité d'obtenir un poste dans le département de test. À ce moment-là, je connaissais Python librement et le pouvais à Java, il serait donc stupide de ne pas être d'accord.

Le département des tests a donné une assez bonne compréhension de la façon dont les systèmes complexes sont développés, de la façon dont les équipes interagissent entre elles et entre elles. Configuration de divers environnements de test, hiérarchisation des tâches et bien plus encore.

Naturellement, c'est l'automatisation des tests sur le sélénium avec des tests de secousses via jenkins lors de la publication de nouvelles versions.

J'ai également aimé le sujet de la conception de tests. L'entreprise avait un large éventail de cours de tests variés, vous pouvez donc apprendre avec eux beaucoup de choses intéressantes auxquelles vous n'aviez jamais pensé dans le domaine de la conception de tests auparavant. Par exemple, concevoir le nombre minimum de cas de test pour couvrir le plus grand nombre de variantes de système à l'aide de générateurs par paire (http://www.pairwise.org/). Ce sont des choses intéressantes du travail de QA-Engineer, auxquelles de nombreux développeurs ne pensent même pas.

Transition vers le développement


Après un an et demi dans le département de test, j'ai obtenu un accord que si je fournissais un prototype fonctionnel sur la pile php, j'aurais l'opportunité de faire un stage dans le département de développement.
Un mois, j'ai passé sur des livres sur PHP. Après Python et Java, la maîtrise de PHP s'est avérée assez facile, même si de temps en temps les questions «Pourquoi pas ici comme ça» apparaissaient.

Et j'ai passé trois mois sur le service Symfony API (museau web, compte personnel, logique métier, notifications par mail, générateur pdf, analyse de structures json complexes, etc.). Du coup, il s'est avéré que Symfony est une sorte d'hybride de Django et Spring, donc il n'y a eu aucun problème de compréhension.

En conséquence, j'ai montré mon projet et obtenu un stage dans le département de développement, d'où j'étais déjà transféré vers un développeur à part entière.

Premiers mois en tant que développeur


On m'a donné un mentor qui a en fait examiné mon code et a suggéré pourquoi je devrais faire cela et pas autrement. Parfois, les appels duraient d'une heure et demie à deux heures, lorsque le code était analysé en détail sur la balle et des recommandations étaient formulées sur la façon de l'améliorer. En fait, il s'est avéré que j'ai pris des décisions au bon moment avec la bonne logique, mais en raison du fait que je n'avais aucune expérience en développement d'entreprise, elles se sont avérées trop confuses et compliquées. De plus, de temps en temps, il y avait des questions sur le travail de Redis / RabbitMQ / Elastic, etc. Mais tout de même, le travail principal a été effectué sur le terrain pour simplifier le code et le rendre testable (lorsque vous écrivez le code pour vous-même, vous ne pensez même pas que d'autres personnes ne pourront pas le lire). En conséquence, en 4 mois, mon code s'est adapté avec style aux normes de l'entreprise.

En fait, lorsque vous écrivez le code vous-même, vous ne pensez même pas à la façon dont les autres le comprendront et à la pertinence d'exprimer vos pensées de cette manière. L'expérience de travail en équipe est difficile à remplacer.

Expérience totale afin d'obtenir le travail du développeur sur un site distant à partir de zéro - 4 ans, 9 mois.

À la suite d'un travail à distance à partir de zéro:


  • La probabilité d'obtenir un emploi en tant que développeur sur un site distant, après avoir suivi un cours et lu un didacticiel, tend à zéro.
  • La probabilité de faire face même aux travaux de juin dans un endroit éloigné sans expérience de développement commercial ou de projets propres, tend vers zéro.
  • La probabilité que, sans aucune recommandation, l'entreprise passe du temps sur vous pour enseigner quelque chose - tend à zéro.
  • La probabilité qu'après avoir lu certains livres et obtenu un emploi sur un site éloigné, vous receviez du «gros argent» - tend à zéro.
  • Prendre une décision au début de sa carrière afin d'abandonner le bureau et de chercher un lieu éloigné est un grand non-sens.
  • Refuser d'autres emplois informatiques, comme vous ne souhaitez être développeur sur un site distant que depuis le tout début de votre carrière, n'est que stupidité.

Source: https://habr.com/ru/post/fr476982/


All Articles