
Working in IT is cool, but the path to the industry may not be at all what parents or teachers at school describe. At labor exchanges they are looking for mobile developers, devops, back-tenders and frontendders, but where are these professions in the lists of specialties of classical universities?
We run a series of articles in which we will tell in detail about each profession through the experience of people. In the first issue we discuss Python developers. Artem Sukharenko and Danila Lobanov told their stories. They came to the profession quite recently, but managed to gain experience in other areas. Alexey Petrenko, Dean
of the Python faculty at Geekbrains, acted as an expert .
')
We talked about what you need to know before learning, what a good and bad language is, what is awaiting in learning and what it is worth concentrating on; what professions and money is promised by knowledge of the language, how to prepare for the first interviews and much more.
Why learn Python
Artem Sukharenko studied at the Department of Automatics and Informatics at
SibGIU . His specialty was engineering, but not related to programming. After graduation, Artyom got a job at the ZSMK plant - one of the largest metallurgical plants in Russia.
“I was stunned by how terrible everything is there,” he says, “A dilapidated Soviet electric drive, no modernization, no special needs for specialists.” He did not stay long at the plant, but continued to work with the electrician further. He rose to lead engineer in Sibirtelecom, then moved from Siberia to Moscow and settled in a commercial data center, where he was responsible for infrastructure.

Programming is sometimes implied. Artem tried to work with microcontrollers, to do something more complicated, but he always rested on the refusals of employers and customers - they did not need it. There were enough elementary things that, as Artyom says, it is interesting to do only the first 15 minutes, and special skills are not needed for this.
“Maybe I didn’t go there, but I didn’t find development for myself. Five years of high school - just to twist the wires. It was so insulting. ”
Once a colleague gave Artem an idea to study programming not for electricians, but to become a developer. He began to read books, try different tasks, but did not dare to change his profession. “My desire was brewing for a long time. At first, the mortgage, financial issues, and personal fear prevented me from changing my profession. ”
At 36, Artem went to a Python-developer course.
Web development has become a Klondike for many people who are interested in technical professions. And Python is one of the most popular programming languages ​​for entering a profession. It attracts with simplicity and versatility.
“Knowing Python you can do a lot of things - from simple scripts to data analysis and building neural networks. But specifically, development on Python is a backend for web servers, the development of a hidden part of the Internet is one that ordinary users do not see. The server, its logic, interaction with databases, ”says Alexey Petrenko, dean of the Python faculty at Geekbrains.
“I think this is a good choice as a first language. It has a simple syntax. He forgives minor developer mistakes. Python has a low threshold of entry, it is very easy to learn the basics of programming. It has a very large audience and an extensive library, plus many external libraries that developers from around the world make. Due to this, it becomes a language that is suitable for anything. "
“Although Python is being promoted as a language for everything, in fact it has only two areas of application: all sorts of data science, ML and other mathematics - and web development. He disappointed me a bit in that, ”says Danila Lobanov, a former system administrator who recently became a Python developer.

“I liked the python because it can do any work. It has a library for mobile applications, for desktops, you can write automation scripts for servers on it, you can use web applications. But in fact, to work without deep math, only web developers are required. No one writes desktop applications on it, much less mobile ones. For this there are other languages ​​that were created specifically for their tasks. ”
Danila closely got acquainted with the computer relatively late, at about 18 years old. He refused higher education and almost immediately went to work as a sysadmin. He started with the most elementary tasks, then began to study Linux and programming.
“I tried to learn C, PHP, Java, some other languages, but did not stop - I started and threw. I could not write even the simplest scripts. When I went to C courses, I managed to read the code, but I could not write it. They gave me a task, I looked at it and had no idea how to do it. The teacher sat down next to him, wrote line by line, explained, and I understood that this was exactly what had to be done. But they gave me a similar task, and I was again in a stupor. ”
After unsuccessful attempts, Danila abandoned programming for a long time. About ten years he worked as a sysadmin. And when I felt that administration no longer brings joy, I decided to give the development one more chance.
“It’s better for a beginner to understand the syntax first,” says Alexey Petrenko, “Only then should you think where you want to go next. The more you learn, the more you leave the syntax for libraries, design patterns, individual templates. ”
Danila still chose Python because the language was considered easy. “The syntax is really simple,” he says, “How to write the text in English. At first, I studied it myself using video materials on YouTube, under articles I solved problems on pythontutor.ru. But then I realized that resources on the Internet are just the basics and the basics. They are available to everyone and everywhere, and will not help you learn programming thoroughly. I realized that it was necessary to look for courses that would give all the same, only systematized, and then they would lead me further. ”
What you need to know before learning
Before you seriously immerse yourself in learning the language, Alexey Petrenko recommends finding out in advance whether you like programming at all. “I would advise trying to write a few programs, take free lessons. Before learning, it is better to understand what a variable is and how to add two variables.
So that the courses do not become useless, only one thing will help - practice. If you just look and listen, it will not work. For a beginner, the practice will even rewrite the code that the teacher displays on the screen. Rewrite and think how it works.
The required minimum for classes is four hours a week. Two days a week for two hours. But I would recommend to set aside an hour a day to write your own code. The main thing is not to dive into programming with the head, so that there is no riot of magic. When you learn everything for three days, you get porridge in your head.
Getting started can be easy, but challenges lie ahead.
Artem continued to work as an electrician during the day, and in the evenings he began to study in courses, despite his fatigue. “Like all naive people, I had the expectation of magic from courses. I came not quite zero. In the baggage there were several books and even simple websites, including PHP (sinful, I admit). I waited for the supernaturals to train me, and I would become a wizard. The realities turned out to be different - there are the same people who just know a little more. ”

Artyom liked the courses, but not everything went smoothly. The program at that time was new, little run-in and confused according to his impressions. The pupils expressed opinions on controversial points, gave feedback, and shortcomings were corrected on the fly. One of the teachers was so weak that he was asked to remove. But the rest, as Artem recalls, were very strong.
Danilo, everything went even harder. After several introductory courses, he stopped keeping up with the program, and several times left his stream to repeat the program in the following.
“Everyone admitted, including Geekbrains employees, that levels 2 and 3 in the Python program were among the most difficult courses at the university. A lot of information in too short time, very large homework. Many learned only part of the material. I personally transferred to the next stream twice. We asked to facilitate the program, we were asked how, and I proposed to split the two courses into three. Some of this was taken into account and now implemented. ”
Unlike the first attempts to learn C, when nothing worked, Danila moved on. Things that he did not understand turned into things that he did not understand, as it was possible not to understand. But it is impossible to overcome this line by simply craving textbooks. As Danila says, the ability to program and knowledge of the language are completely different things.
“Teaching programming is also very difficult. It seems to everyone that once a person can write programs, it means he can teach. This is not true. When thinking is rebuilt, and you know a lot of things, you can no longer remember what it is like not to understand. ”
Alexey warns that Python is light only at the beginning. And after a light base, you will have to make an effort to master more serious aspects - libraries and frameworks. “If we compare the programming language with a reservoir, then, for example, the C language is the ocean. You dive off a cliff to a great depth, and either swim or drown. The language of Python is a beach with clean sand, where you can go far, calmly swim, and if you understand that you want to move on, then there is a huge depression behind a beautiful beach that is comparable in depth to C and Java. ”
“Asynchronous programming in Python is a brain-crushing thing,” recalls Artyom. “We did it somehow superficially, and then even at the interviews, when asked about it, I felt that I was swimming.
Design patterns are also impossible to take without a hitch. I have already re-read the excerpts three times, I specially read the book, and still I don’t feel confident. For one month, which lasts a course on them, it is generally impossible to master. "
Danila remembers the select module as the most difficult: “All three streams remember my pain with selects. There is such a module, and it really wasn’t given to me at the time. Now it’s simple for me - now I don’t understand how it can be misunderstood. ”

“In the basic configuration of Python there are about 70 functions and a few dozen reserved words, but even a cool programmer does not necessarily use all of them. That is, to learn a hundred words and understand what they are doing, you can spend one to three weeks if you wish and work actively, ”says Alexey.
“Novice programmers write programs that also work. But the code is written once - ten times read. When after a while another person tries to read the program, difficulties arise.
In the future, to work in a team and show the code to someone else, you need to know the generally accepted standards of style. In Python, they are called "Peps". I would advise reading Pep8 in parallel with the study of syntax. This is an agreement for programmers who write on Python. It recommends how to write correctly, and how wrong.
A few years ago a split occurred in Python. There was Python 2.7, and then version 3 came out. The second version is still used, but only in older firms to maintain legacy code. If you get a job in such a company, then you have to learn Python 2, but I would recommend learning the third version. All modern projects and third-party libraries are written for it. ”
How to endure the first interview
Artem and Danila finished the courses very differently. Danila, after several attempts, decided not to finish his studies, because he did not find mutual understanding with a teacher of recent courses, but he did find a job. Artyom, along with fellow students, had already raised a learning project into a startup that began to bring real money.
“The project was called GoLiving. This is something like AirBnb, but the idea is this: in America there are people who often go to work in different cities for a short period. And they can change among themselves housing with a guaranteed insurance, to be sure that you will not return to the defeated apartment. Now I do not know how far this resource has gone, it seems the funding has been suspended. But then we even had investors. ”

Danila, while studying at the courses, spent six months without work. He quit his job specifically to study, but because of the frequent transfers, his studies took longer, and the money set aside for this time came to an end. After leaving the courses, Danila did not even have time to start learning Django - the most popular framework for web development.
“For the new year, I wrote to a company that was just close to my house. I visited their site, saw a vacancy for a backend developer, and wrote them a letter. I say I would like to work with you, although I studied, but I know a little. I am very interested and will develop. And they called me for an interview. ”
“My experience at Geekbrains shows that some students find a job before they complete a one-year course,” says Alexey. “The employer wants to see in the server developer an elementary ability to work with syntax, knowledge of how sites work, how the backend works, the very same popular Django. I would also add teamwork and knowledge of databases here, because any backend of any site is inextricably linked to the storage of information.

Every month on My Circle about 200 vacancies of python-developers open, you can see the latest ones and subscribe to the newsletter about new vacancies.
During the interview, the main thing is not to be silent. If they give you a task that cannot be answered right away, then you just have to argue out loud, show how you think, and what you can move towards a solution.
And the main thing is not to despair if the first interview turned out to be unsuccessful. Going to two or three interviews will notice that the questions begin to repeat. And then you yourself will choose where to get settled, because one day out of three interviews you will go everywhere at once. ”
At the interview, Daniel was most surprised by the fact that he was not asked a single technical question: “They didn’t give any assignments - they just talked about how I studied, what I’m interested in. As a result, offered a job, and I agreed. "
Alexey also believes that with such companies it is worth being more attentive. “In addition to general issues, there should be tasks for writing code. Even if on paper with pencil - this is normal. But if you came to the interview of the programmer and did not receive a single question about programming, then you were either interviewed by an incompetent person, or you would do something non-programmer at all. Programmers need to be checked for programming. ”
“I think not asking technical things is the right approach,” says Danila. “Grigori Petrov, who is very famous in the Python community, also says that programming skills (hard skills) can always be tightened up. The main thing is to come together in views on life so that it would be comfortable to work together. I agree with him.
Of course, programming skills are important. But now I work with such things that the courses do not teach. They showed me at work already, and then I figure it out myself, I read documentation, articles, I look at examples. I am more concerned about companies that give "normal" test tasks. You look and think - is it really a test or am I a freelance freelancer now? ”
“The interview I was having had melted my brain like that,” recalls Artyom. “When I came out, the state was as if I was going on autopilot — they continued to buzz my thoughts so much.”
It went like this: there were two eychars and two techies. One pythonist and fulstek who was engaged in the web - where I tried too. The second - judging by the questions - the perfect overmind. He had such a strong matan, that just hoo!
First came the everyday questions, all of these "as you see, how you feel." Then full stack was started for me, drove me in Python, in Django. He put examples on the paper and asked about them. Not complicated, but with tacks.
And then my uncle took over me. Got deep into matan, asked about the algorithms, and since the company works with security and encryption, he drove me through it too. But in this I am absolutely not strong, therefore I answered as a five year old child. In general, I poured on encryption, I kept it in algorithms, but not very much.
Honestly, I did not even expect to be called back. Nevertheless - I got an offer. A few days will be the first working day. ”
What money should count
People go to IT not only at the call of the soul. This is an industry with one of the fastest growing wages in Russia. And sometimes it seems that the salaries of programmers in comparison with the average occupations are different as salaries in Moscow and in the regions. However, neither Artem nor Danila went to this profession for wealth. Moreover, they have not yet found it.
“Even in Moscow, 40-50 thousand of programmers are offered at the initial positions, maybe even less. In the regions, 20,000 for the junior is also not uncommon. This is not such a high-paying job, as everyone claims. Yes, when you reach the signor level, salaries can exceed 200-300 thousand. But where are these salaries not? Recently, a taxi company showed the income of the taxi drivers who earned the most. There are 230, 240 thousand.

The python-developers salary chart with a breakdown by qualifications shows that the median for a juna is almost 60,000 rubles , while the middle one already receives an average of just over 100,000 rubles . But the difference between the medians for the senor and the lead is very small - 151,000 rubles and 167,000 rubles, respectively.
When building the chart, the data of the “My Circle” salary calculator were used.
It is possible that in programming it is easier to reach a level higher than the average than in many other areas. But for me it was not the main thing at all. It was interesting for me to create programs. ”
“Salaries depend on the region,” says Alexey, “Someone will arrange for 40 thousand as a beginner, someone can and immediately for 100 thousand. Watching how to manifest. If you show that you can write not only the code, but also understand the architecture, you can sketch a whole project outline, all modules, services, connections between them. ”
Artyom also went into development for a lower wage than he had as an engineer. “In electrics, I had the position of chief engineer, and the salary was very good. I left because I want development. And in programming, you can develop to infinity. "
Despite the fact that in programming one of the clearest and understandable gradations in the level of skill (junior, middle, signor) - it still remains relative and constantly ignites controversies by the vagueness of its criteria. Disputes in the spirit of “you are in company X Signor, and in company Y and Junior will not be taken” or “until you have worked for ten years - not a signor”.
“You can pump up to the middle level during the year of study. For example, in Geekbrains there are required courses and additional. All of them have to go through completely to be honest - I pumped to the level of the middle. That is, it turns out the year of the main program and another six months of parallel courses, ”says Alexey,“ And the signor is a person who has a lot of experience. This is the one who understands different frameworks, is able to scale tasks, to understand what resources they require. A person who does not reinvent the wheel. Who on own experience understood all aspects and nuances of work.
If a person after three years of work calls himself a signor - why not. It all depends on the company, aspirations and skills. If a person is gifted and purposeful, then I will believe in it.
Full interview with the dean of the Python faculty at GeekBrains - how and why to learn the language to beginners