They say learning Python and becoming a programmer is easy. True?
Working in IT is cool, but the path to the industry may not be exactly what parents or teachers at school describe. On the job exchanges they are looking for mobile developers, devs, back-end and front-end, but where are these professions in the lists of specialties of classical universities?
We are launching a series of articles in which we will describe in detail about each profession through the experience of people. The first issue discusses Python developers. Artem Sukharenko and Danila Lobanov told their stories. They came into the profession recently, but managed to gain experience in other areas. And the expert was Alexei Petrenko, Dean of the Python Department at Geekbrains .
We talked about what you need to know before training, what is good and bad language, what is difficult to learn and what to focus on; what professions and money promise knowledge of the language, how to prepare for the first interviews and much more.
Why learn Python
Artem Sukharenko studied at the Department of Automation 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 how terrible everything is,” he says, “a dilapidated Soviet electric drive, no modernization, specialists are not really needed.” For a long time at the plant, he did not stop, but continued to work with the electrician further. He grew up to be a leading engineer in Sibirtelecom, then moved from Siberia to Moscow and got a job 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 always rested on the failures of employers and customers - they did not need it. There was enough elementary things that, as Artyom says, are only interested in doing the first 15 minutes, and special skills are not needed for this.
“Maybe I didn’t go there, but I did not find development for myself. Five years of university - just to twist the wires. It was so disappointing. "
Once a colleague gave Artyom the 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 has been brewing for a long time. At first, they were not allowed to change the profession of mortgage, financial issues, personal fear. ”
At 36, Artyom went to Python-developer courses.
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 the profession. It attracts with its 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, development of the hidden part of the Internet is one that ordinary users do not see. Server, its logic, interaction with databases, ”says Alexei Petrenko, Dean of the Python Department at Geekbrains.
“I think this is a good choice as the first language. It has a simple syntax. He forgives the small mistakes of the developer. Python has a low entry threshold, it is very easy to learn the basics of programming on it. It has a very large audience and an extensive library, plus many external libraries made by developers from all over the world. 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 kinds of data science, ML and other mathematics - and web development. In this, he disappointed me a little, ”says Danila Lobanov, a former sysadmin who recently became a Python developer.
“I liked Python in that it can do any job. He has a library for mobile applications, for desktop, on it you can write automation scripts for servers, you can use web applications. But in fact, only web developers are required to work without deep mathematics. No one writes desktop applications on it, much less mobile ones. There are other languages for this that were created specifically for their tasks. ”
Danila became closely acquainted with the computer relatively late, at about 18 years old. He refused higher education and almost immediately went to work as a system administrator. He started with the most elementary tasks, then proceeded to the study of Linux and programming.
“I tried to learn C, PHP, Java some other languages, but it didn’t stop - I started and quit. I could not write even the simplest scripts. When I went to C courses, I was able to read the code, but 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 nearby, wrote line by line, explained, and I understood that this was exactly what I had to do. 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 system administrator. And when he felt that administration is no longer bringing joy, he decided to give the development one more chance.
“It is better for a newcomer to understand the syntax first,” Alexei Petrenko believes, “only then you should think about where you want to go further. The more you study, the more you move away from syntax to libraries, design patterns, individual patterns. ”
Danila chose Python because the language was considered easy. “The syntax really turned out to be simple,” he says, “how to write text in English. At first, I studied it myself on video materials on YouTube, on articles, solved problems on pythontutor.ru. But then I realized that resources on the Internet are just the basics and the basics. They are accessible to everyone and everywhere, and will not help to learn programming thoroughly. I realized that we must look for courses that will give all the same, only in a systematic way, and then will lead me further. "
What you need to know before starting training
Before seriously diving into the study of the language, Alexei Petrenko recommends finding out in advance - whether you like to program at all. “I would advise you to try to write several programs, take free lessons. Before starting training, 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 watch and listen, nothing will come of it. For a novice, it’s even practice to rewrite the code that the teacher displays on the screen. Rewrite and think about how it works.
The required minimum for classes is four hours a week. Two days a week for two hours. But I would recommend spending an hour a day writing your own code. The main thing is not to dive into programming with your head so that there is no riot of magic. When you learn everything in a row for three days, you get porridge in your head.
Getting started can be easy, but difficulties await you ahead
Artyom continued to work as an electrician in the afternoon, and in the evenings he began to study courses, despite his tiredness. “Like all naive people, I had an expectation of magic from courses. I came not completely zero. There were several books and even simple websites in the baggage, including in PHP (sinful, I admit). I was waiting for the brains to train me in the courses, and I will become a magician. The realities turned out to be different - there are people who just know a little more. ”
Artyom liked the courses, but not everything went smoothly. The program at that time was new, a little run-in and chaotic according to his impressions. The students spoke about controversial issues, gave feedback, and the flaws were corrected on the go. One of the teachers was so weak that he was asked to be removed. But the rest, as Artem recalls, were very strong.
Danila, however, everything went even more difficult. After several introductory courses, he ceased to keep up with the program, and left his stream several times to repeat the program in the next.
“Everyone recognized, including Geekbrains, that levels 2 and 3 in the Python program were some of the most difficult courses at the university. A lot of information in too short a time, very big homework. Many absorbed only part of the material. I personally was transferred twice to the next stream. We asked to make the program easier, we were asked how, and I suggested splitting two courses into three. Some of this was taken into account and are now being implemented. ”
Unlike the first attempts to learn C, when nothing came of it, Danila moved on. Things that he did not understand turned into things that he did not understand, how could not be understood. But this line cannot be overcome by simply cramming textbooks. As Danila says, programming and language skills are two completely different things.
“Teaching programming is also very difficult. It seems to everyone that since a person can write programs, that means he can teach. This is not true. When thinking is rebuilt, and you know a lot of things, you can’t remember what it’s like to not understand. ”
Alex warns that Python is easy only at the beginning. And after an easy 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 from a cliff to a great depth, and either swim or sink. The Python language is a beach with clean sand where you can go far, swim calmly, and if you understand that you want to move on, then there is a huge hollow behind the beautiful beach, comparable in depth to C and Java. ”
“Asynchronous programming in Python is a brain trick,” recalls Artem. “We went through it somehow superficially, and then even at the interviews, when asked about it, I felt like I was swimming.
Design patterns are also impossible to take abruptly. I’ve read the excerpts three times already, specially read the book, and still I don’t feel confident to the end. For one month, which lasts a course on them, it is generally unrealistic to master. ”
Danila recalls the select module as the most difficult: “All three threads remember my pain with selects. There is such a module, and he directly didn’t give me much at one time. Now it’s simple for me - now I don’t understand how you can not understand it. ”
“Python’s basic configuration contains about 70 functions and dozens of reserved words, but even a cool programmer doesn’t necessarily use all of them. That is, to learn a hundred words and understand what they do, you can spend one to three weeks if you want and work actively, ”says Alexey.
“Novice programmers write programs that also work. But they write the code once - they read it ten times. When after a while another person tries to read the program, difficulties arise.
In order to work in a team in the future and show the code to someone else, you need to know the generally accepted style standards. In Python, they are called Peps. I would advise reading Pep8 in parallel with learning syntax. This is an agreement of 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 will 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 pass the first interview
Artem and Danila completed the courses in very different ways. After several attempts, Danila decided not to finish his studies, because he did not find mutual understanding with the teacher of the last courses, but he found a job. Artyom, along with fellow students, already during the training, raised a training project in a startup, which began to bring real money.
“The project was called GoLiving. This is something like AirBnb, only the idea is this: in America there are people who often go to work in different cities for a short period. And they can exchange housing with guaranteed insurance between themselves in order to be sure that you will not return to the destroyed apartment. Now I do not know how far this resource has gone; financing seems to have been suspended. But then we even had investors. ”
Danila, during training in the courses, sat without work for six months. He resigned specifically to study, but due to frequent transfers, studies took longer, and the money set aside for this time was coming to an end. After leaving the courses, Danila did not even have time to start learning Django - the most popular web development framework.
“On New Year's Eve, I wrote to a company that was just next to my house. I went to their site, saw a job as a backend developer and wrote a letter to them. 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 work before they finish their one-year course,” says Alexey. “The employer wants to see an elementary ability to work with the syntax in the server developer, knowledge of how sites work, how the backend works, the same Django gaining popularity. I would also add here teamwork and knowledge of databases, because any backend of any site is inextricably linked to the storage of information.
About 200 vacancies of python developers open on My Circle every month, you can see the latest and subscribe to the newsletter about new vacancies.
During the interview, the main thing is not to be silent. If you are given a task that cannot be answered right away, then you just need to reason out loud, show how you think, and what is capable of moving towards a solution.
And the main thing is not to despair if the first interview was unsuccessful. Going to two or three interviews you will notice that the questions begin to repeat. And then you will choose where to get it yourself, because one day you will go everywhere everywhere from three interviews. ”
Danila at the interview was most surprised by the fact that he was not asked a single technical question: “They didn’t give any tasks - they just talked about how I studied, what I’m interested in. As a result, they offered a job, and I agreed. ”
Alexei believes that it is worthwhile to be more careful with such companies. “In addition to general questions, there should be tasks for writing code. Even if on paper with a pencil, this is normal. But if you came to an interview with a programmer and did not receive a single question about programming, then you either were interviewed by an incompetent person, or you will be doing something non-programmatic at all. Programmers must be checked for programming. ”
“I think not asking technical stuff is the right approach,” Danila says. “Grigory Petrov, who is very famous in the Python community, also says that programming skills (hard skills) can always be tightened. The main thing is to agree on the outlook on life in order to be comfortable working together. I agree with him.
Of course, programming skills are important. But now I work with things that are not taught in courses. They showed me already at work, and then I figure it out myself, read the documentation, articles, look at examples. I am more concerned about companies that give “normal” test items. You look and think - is this really a test or am I a free freelancer now? ”
“The interview that I went through melted my brain like that,” recalls Artem. “When I got out, the state was as if I were going on autopilot - my thoughts continued to buzz so much.”
It went like this: there were two eychars and two techies. One pythonist and full-stack who was involved in the web - where I tried too. The second - judging by the issues - is a perfect brain. He had such a strong matan that just hoo!
First came everyday questions, all of these "how you see yourself, how you feel." Then he took up a full stack, chased me through Python, according to Django. He drew examples directly on paper and asked them. Not complicated, but with sub-marks.
And then the uncle-brain took hold of me. He climbed deeper into the matan, asked about algorithms, and since the company works with security and encryption, he also drove me through it. But in this I am not at all strong, therefore I answered as a five-year-old child. In general, it rained on encryption, held on to algorithms, but not by much.
Honestly, I didn’t even expect me to be called back. Nevertheless - received an offer. In a few days there will be a first working day. ”
What money is worth counting on
People go to IT not only at the call of the soul. This is an industry with some of the fastest growing salaries in Russia. And sometimes it seems that the salaries of programmers in comparison with the average professions differ as salaries in Moscow and in the regions. However, neither Artem nor Danila went into this profession for wealth. Moreover, they have not yet found it.
“Even in Moscow in the initial positions, programmers are offered 40-50 thousand, maybe even less. In the regions of 20 thousand for the junior is also not uncommon. This is not such a high-paying job, as everyone claims. Yes, when you reach the senior level, salaries can exceed 200-300 thousand. But where are there no such salaries? Recently, one taxi company showed the income of taxi drivers who earned the most. There are 230, 240 thousand.
The salary chart of python developers by qualifications shows that the median for June is almost 60,000 rubles , while the middle receives an average of just over 100,000 rubles . But the difference between the medians for the senior and the lead is quite small - 151,000 rubles and 167,000 rubles, respectively.
When plotting the chart, the data from the “My Circle” salary calculator were used .
Perhaps in programming it is easier to reach a level above the average than in many other areas. But for me it was not at all the main thing. I was interested in creating programs. ”
“Salaries depend on the region,” says Aleksey, “Someone will settle for 40 thousand as a beginner, someone can immediately 100 thousand. Watching how to prove oneself. If you show that you can write not only the code, but also understand the architecture, you can sketch out the whole project scheme, all modules, services, connections between them. ”
Artem, on the whole, went into development for a lower salary than he had as an engineer. “In the electrician, 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 indefinitely. "
Despite the fact that in programming one of the most clear and understandable gradations in terms of skill (junior, middle, signor) - it still remains relative and is constantly fueling debate by the blurring of its criteria. Disputes in the spirit of "you are in company X Signor, but you will not take in company Y and junior" or "until ten years I worked - not Signor."
“You can pump to the middle level during the year of study. For example, Geekbrains has compulsory courses and optional courses. All of them must be completed completely in order to be honest - I’ve pumped to the middle level. That is, it turns out a year of the main program and another six months of parallel courses, ”Aleksey believes,“ And Signor is a person who has rich experience. This is someone who understands different frameworks, is able to scale tasks, understand what resources they require. A man who does not invent bicycles. Who, from my 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 it.