
Jones on the remote are not needed
As the guys from Toaster like to say, in particular the curators of most sections, they don’t need any jones on a remote site, just like the probability of earning something from a june on freelance. And indeed it is. But also everyone knows that there will always be a person who will do what was considered almost impossible.
And so, my name is Sergey, I am an enterprise developer, I live in Ussuriysk (Primorsky Krai, 200k population, +7 hours with Moscow), I do not have a profile education, and I have not worked in the office as a developer for a day. And this story is about how I got to such a life.
I do not set as my goal to inspire the guys from the province so that they all rush together and start trying to get a job on a remote site. I want to show that huge amount of time that I spent to grow to a developer (without a doubt, if there was an “office” in my city, I would have done it much faster).
After university
Initially, I planned to work in the gambling sector, so after school I went to the “Socio-cultural service and tourism”, but the law of the Russian Federation on the prohibition of gambling activity came out on the 2nd year. Although I live in the Primorsky Territory, where the casino was supposed to be built by 2012, all the deadlines were broken, and in fact, by the time of my release there was nothing. More precisely, there were underground casinos, but these were the places where you would definitely not want to work.
As a result, I first got a job at a wholesale rice company, then left the place as an Internet connection installer, and then in support of 1C-Franchisee. It all took about a year and a half. As they say, in the hands of a red university diploma, and all the doors in front of you are open.
Technical support
All this time I was looking at something more suitable, and one day at My Circle I saw a vacancy in night technical support. I figured that taking into account my time zone, 7 am in Vladivostok, it’s 0-00 in Moscow, I can work the night shift practically during the day. I responded, talked, and got a job.
Naturally, just like that, the left person will not be taken in support. From school I was fond of site building and made various sites for my dotka team and the local game club. Plus, due to my education, I had good enough English, which allowed me to also support clients from Australia, New Zealand and the USA. I actually had the level of such a good webmaster with English, plus experience of support from 1C.
Move on
At one of the corporate congresses, I talked with the guys from the development department, and realized that the topics discussed were not some kind of “rocket science”, and that I could try as well. Plus, formal education was humanitarian, but still we had mathematics, statistics, economics, accounting and programming, so I was not very afraid of formulas and numbers.
It was 2014, everywhere they shouted that php sucks, that python is the future and so on (How naive and stupid I was!). So I started learning programming from him. How I did it:
1) I downloaded the books by Mark Lutz “Learning Python”, “Programming in Python”. Books were quite difficult, because reading them was extremely boring, however, they gave a very good base. If you have a choice, start quickly or read some fundamental book on programming, then I highly recommend starting with the second one to get the necessary base. It is important to understand, not only “How,” but also “Why” and “Why.”
After the books, I decided to play around a bit and started writing various parsers for game portals (Brablay / GoodGame) in order to collect statistics on certain topics. In particular, it was interesting to see how certain people leave comments, in particular their huge number.
2) Then I decided to do something more meaningful and put together an article portal in Python. I read a book on Django (To be honest, I didn’t understand it very much - the information was too fast and too “vacuum”). So I watched a couple of ITVDN Django introductory videos and turned to the official documentation.
For 4 months of development, I got used to layout, I understood how to work with the database, write migrations, set SSL and so on. As a result, the next year I spent on launching a number of my own projects and developing small sites for local children (drop-shippig site, bicycle shop, sports nutrition store, and so on).
3) After a year, I got bored of developing projects on Django. I began to look what else could be thought up on Python. I probably read all the Python books that were on the Ozon website. Starting from a book on Devops, ending with computer vision and machine learning. These topics didn’t really inspire me (I didn’t see the applied value on my scale that I can use right here and now), but these terms from some unknown magic and “skynet” turned into ordinary formulas and application libraries.
4) In the end, I decided to raise my level of computer literacy a bit and started reading books on C / C ++ / Java / Computer Networks / PostgreSQL / TDD and Corporate Patterns. To be honest enough, an interesting experience when you understand how another technology works, what it relies on, what challenges it entails, and how it solves "complex problems" from your stack.
Separately, we can mention the book on Spring, which showed how much more complex an enterprise application is than a "easy-going" project on Django.
Testing and Automated Testing
After three years of work in support, I, unfortunately, were denied access to the development department, but there was an opportunity to get a position in the testing department. By that time, I knew Python freely and could in Java, so it would be foolish to disagree.
The testing department gave a fairly good understanding of how complex systems are being developed, how teams interact within themselves and with each other. Configuration of various test environments, task prioritization and much more.
Naturally, this is test automation at selenium with jerking tests through jenkins when new builds are released.
I also liked the topic of test design. The company had a large pool of various testing courses, so you could learn a lot of cool chips with them that you had never thought of from the field of test design before. For example, designing the minimum number of test cases to cover the most number of system variants using pairwise (http://www.pairwise.org/) generators. These are cool things from the work of QA-Engineer, which many developers do not even think about.
Transition to development
After a year and a half in the testing department, I got an agreement that if I provide a working prototype on the php stack, I will get the opportunity to take an internship in the development department.
One month I spent on books on PHP. After Python and Java, mastering PHP turned out to be quite easy, although from time to time the questions “Why not here like that” appeared.
And I spent three months on the Symfony API service (web muzzle, personal account, business logic, mail notifications, pdf generator, parsing complex json structures and more). Suddenly, it turned out that Symfony was a kind of hybrid between Django and Spring, so there was no understanding problem at all.
As a result, I showed my project and received an internship in the development department, from where I was already transferred to a full-fledged developer.
Early months as a developer
I was provided with a mentor who actually reviewed my code and suggested why I should do this and not otherwise. Sometimes the calls lasted for one and a half to two hours, when the code was analyzed in detail on the ball and recommendations were given on how to improve it. In fact, it turned out that I made decisions in the right time with the right logic, but due to the fact that I did not have experience in corporate development, they turned out to be too confusing and complicated. Plus from time to time there were questions about the work of Redis / RabbitMQ / Elastic, etc. But still, the main work was carried out in the field to simplify the code and make it testable (when you write the code for yourself, you don’t even think that other people will not be able to read it). As a result, in 4 months my code pulled up in style to corporate standards.
In reality, when you write the code yourself, you don’t even think about how other people will understand it, and whether it is correct to express your thoughts in this way. Team work experience is difficult to replace with something.
Total experience in order to get the developer’s work on a remote site from scratch - 4 years, 9 months.
As a result of remote work from scratch:
- The probability of getting a job as a developer on a remote site, having taken some course and read some tutorial, tends to zero.
- The probability to cope even with the work of June in a remote place without the experience of commercial development, or of any own projects, tends to zero.
- The likelihood that without any recommendations, the company will spend time on you to teach something - tends to zero.
- The likelihood that after reading some books, and getting a job on a remote site, you will receive some "big money" - tends to zero.
- To make a decision at the beginning of his career in order to abandon the office and look for a remote thing is a big nonsense.
- Refusing other IT jobs, since you only want to be a developer on a remote site from the very beginning of your career, is nothing but stupidity.