Language is only a small part of what you need to know. Maybe about 5%, or even less.
This article repeats and complements the content of my speech “What distinguishes a junior from a senor or as a pytonist not having problems finding a job” at the last
MoscowPython Meetup 39 . Many came to me after speaking with questions and I promised to publish an article on Habré and discuss in the comments.
Under the cut you will find the answer to the topic of the article
and a little offtopic . Keep in mind that this article was written by me personally, in my practical experience, since I rarely ever had difficulty finding a job. It may differ from the experience of other people and I will be very happy with any additions and corrections if I am wrong in anything.
Answers will be slightly lower.
First, I will talk about the results of the survey with the mitap (if someone was there or listened to the broadcast):
')
Who comes to the mitap?
About a third of those who raised their hands were juniors, foreign ministers and seniors, and quite a few were timlids and technical directors. At the same time, about half of them raised their hands and who the rest remains a mystery
Is there any problem at all?
Next on the mitap, I asked if those present had a job search problem. For the uncertain majority, there are no problems, but the ratio, on a vskidku, is approximately 60/40 (of those who raised their hands). So the topic is definitely relevant and the article may be useful to many.
How to get a job junior?
This is almost the most popular question to which I will answer this way: the employer is unlikely to hire you if you don’t know anything at all and have no experience. Very rarely, employers hire juniors, and this is often something like an experiment - suddenly we catch a real talent that will suddenly become a mead, and we will be able to pay him the junior? Therefore, my advice to you is: do not try to get a job with a junior, but rather study what is written here and aim at the Ministry of Foreign Affairs right away.
Many do not know even half of what is necessary and they are taken only because of “experience” (often stupid). In short, do not be afraid and do not consider yourself to be incapable of anything, arm yourself with knowledge, practice and do not be afraid of anything!
What you need to know
- English. It is needed to read documentation, examples on stackoverflow and articles
, as well as to glue foreign women when you go on vacation . Many in Russia have the sad experience of language learning at school and at the institute, but in fact, guys, this is really 95% a problem of the education system, and the remaining 5% is the absence of a real need for a language. There are no people (not counting the dumb and sick of amnesia) who could not learn to speak English, much less read freely. Almost all of you already know how to read with a dictionary and for starters, this is quite enough.
- POSIX operating system. Of course, with the advent of docker and other vagrant's, it became not as critical as before, but still it is much more comfortable to work on UBUNTU or MacOS due to the normal native console (especially under ubuntu) with its commands ls, cd, cat, ps, grep, kill, killall, vim, ssh, cp / scp and many others used daily in the work. The bash shell, environment variables, ssh, and keys to access remote machines are all used very, very often. How to study? Yes, nothing special, just install and use, gradually everything will be studied by itself, well, you can see the articles on individual teams.
- Python and its data structures. Data structures are called in python a little differently than in other languages. For the study of syntax, I highly recommend the most common tutorial on the official site, it is perfectly written - if not strong in English at the same time and practice. Remember, if you are going to work as a pythonist, then you will need English all the time.
- Python libraries. It is their knowledge that employers will mainly expect from you. It is enough just to know about the existence of some, and some you need to know well. Django is now in trend and a good knowledge of this framework greatly simplifies the search for work. In short: with one knowledge of the language, you are not needed by anyone. You need to have an idea about popular libraries, and you can find a list of these simply by looking through job openings.
- The data formats are XML, HTML, JSON. These are data formats, without which nowhere. For learning XML, I recommend reading the lxml documentation (and trying all the examples from there), for HTML - htmlbook.ru , for json - at least just google it.
- HTTP protocol. IMHO, the most useful thing about it is to know the statuses of HTTP messages, what are cookies, session, headers, body and reason. I think the Wikipedia article is enough for a start, but can someone tell me a good article?
- Database. They can be studied for years - such an extensive topic and a good knowledge of databases, the ability to optimize the structure and inquiries are necessary to become a leading developer with a large salary. But first you need at least a minimum - to be able to set up a DBMS and know what INSERT, UPDATE, SELECT, JOIN, GROUP BY are for relational bases. Personally, I recommend PostgreSQL, as it well supports geo-data, which is now in every second startup. In addition to relational, you need to know that there is still noSQL type Mongo (and why they are needed) and key-value storage type Redis.
- (very desirable) Javascript, jQuery and other AngularJS. Now more and more sites no longer generate HTML, but asynchronously exchange information with the server and display it. It is necessary to understand why this is all and the next point follows from this.
- (preferably) Information system architectures. In fact, a good understanding of architectures, coupled with a good knowledge of databases, makes you a liege. www.insight-it.ru - unfortunately little has been updated lately, but even what is there, I find it extremely useful.
- (desirable) Another trend is asynchronous programming . This is not necessary to find a job, but it can be a vector for further development.
Do not be alarmed by such a large list. English and OS are studied along the way; it is not necessary to spend months and years on it separately; Python, database fundamentals, data formats, HTTP are studied in a matter of days, their thorough knowledge is not required if this is not noted in the vacancy separately. The study of architecture, familiarity with Javascript - of course you can do it for years, but for starters, too, you can only get acquainted.
Perhaps the only thing that I highly recommend is to learn some framework and do something real that can be shown. A ready-made site, even a simple one, laid out on a hosting is an indication that you have mastered each of the many small steps along the way.
Wait, what about the algorithms?After the mitap one guy came up to me and asked, “what about the algorithms?”. For 6 years of working with a Python-developer, I rarely had to write something really non-trivial, basically everything comes down to some kind of data manipulation, their conversion from one form to another for further needs and the elementary logic of school-level informatics. Most often, all algorithms have long been implemented within specific libraries and are easily accessible.

What you need to be able to?
- To read someone else's code - if you do not know how, then in fact you do not know how to use existing resources and each time you will cut the bike. As a rule, this is not effective (well, let's be another programming language each time again to create for each task?). Over time, you will realize that sometimes it is faster to write something of your own, but first, try to learn from others. Even if you eventually decide to write something of your own, you will have at least some idea of ​​how to do it or how not to do it.
- Owning an IDE is both accelerating code writing and debugging, code testing, error and error hints, where you don’t follow the guidelines, a lot of useful tools. I recommend PyCharm or PyDev - they are quite mature and have good functionality right out of the box.
- Immediately learn and use standard tools - virtualenvwrapper, pip. Recently came across pyenv - imkho is also a good thing.
- A little sysadmin - it intersects with the knowledge of the OS, sooner or later you must still be able to configure the software on the server where your application / website will live (Dima, hello).
- I completely forgot to say on the mitap and the guys suggested: of course, version control systems - at least just git, but mercurial with svn won't hurt - you never know where you come across them. NEVER use archives and other PHP-style. Possession of git should be almost higher than Python itself, if you get a job in a team. Check out github.com, bitbucket.org.
- (it is advisable) to master such tools as vagrant, docker, puppet / chef / ansible, fabric - if anyone has any gaps in this, I advise Moscow Python Conf , I'll go myself if I have the opportunity.
All of these are tools that are constantly used in work, without knowing which even knowing the language perfectly you will be a burden for the team, because either you will work slowly (without using IDE), or constantly write bicycles without using existing solutions (without reading someone else's code; especially perverted form - without even examining the code of your colleagues in the project), you will experience problems with switching to the new versions of the libraries used (without using virtualenvwrapper), tugging at any other task associated with the server (without basic skills sov admin), creating a fierce itch in the ass colleagues kosyachnymi kommitami (not knowing git). It will be easier to kill you than to feed in a team, and your efficiency may even be negative, because others may spend time correcting your jambs and helping you. Therefore, spend a little time, master these tools, this is also not very long at all.

What you need to understand
With this, I began my speech at the mitap, because in the oral presentation, first I needed to make contact with the audience, but here I tried to reduce it.
Remember that for an employer you are a tool for solving business problems that should bring him profit in the future. Therefore, in fact, your task at the interview is to convince him that paying you a salary is a profitable investment. You are not hired to knock on the keyboard, but to generate profits.
Language is only a small part of what you need to know. Maybe about 5% or even less.
Compliance table of what the employer needs and how you can help him with itEmployer's dream | What is required of you |
---|
delegation - set the task and did it right without your participation | not afraid to take responsibility and competent enough |
development speed (main advantage of python) | know the language, know third-party libraries and understand that the speed of development is very important |
system reliability | Testing your own code as much as possible or required |
maintainability (another advantage of python syntax and recommendations) | familiarization with guidelines (pep, import this) and, if possible, following them |
system efficiency | familiarity with new technologies, libraries and other applications |
developer efficiency | interested in the project. Here I advise you to really choose projects that are interesting. |
predictability, the possibility of planning | your plans for the coming year are clear |
I wonder what he really said to her?Tips
- Develop communication. When you are looking for a job, go for as many interviews as possible. The success of the interview is directly dependent on the skill of communication and it is perfectly honed at the interview.
Here is an exampleWe arrived once in the bath, and there dude brooms wielding. And I haven't seen brooms for 3 years - in Asia it's tight with them. Well, I told him, “Wow, brother, to you, where did you get the brooms?” He told me: “Yes, I’ve brought it with me from Russia, why do you want me, too?”. Well, I'm not a fool to refuse, of course. Talked to him, a normal man like that. Well, went home. After a couple of weeks, we come again - and there, again, with a broom, they began to talk again, he asked me, saying, “what do you do?”. I say so-and-so, I have my own co-working, and I program in my spare time on python. He “oh well? I just need pythoners. ” He turned out to be the founder of a well-known company and I still work with him.
In addition to interviews, I recommend playing mafia (not only according to tournament rules, but when a discussion is possible, but to train your nerves and communication skills very well without a sack), go to hackathons, meetings, conferences. By the way, do not miss Moscow Conf, such conferences do not even happen every year - this is not a two-hour meeting, but you can actually talk with experienced guys one day, ask questions to the speakers.
- Sales skill. This skill allows you to have a salary above the market. It is unlikely that of course you will run to work as a seller, but if you have such experience, then consider this a plus.
Anti-example:One guy lived in co-working with us - the coolest JS-programmer, senor level with 120000+ sn. Works over 80, because he feels awkward at interviews, cannot position himself correctly.
- Lead it on. Slightly, well, maybe 20 percent, not more. For example, you can say that you know something that you just heard about or slightly familiar with.
The truth of lifeThe truth of life is that, as a rule, no one keeps in his head everything he has ever done. How many cases are there when a person begins to look for the answer to some question, and finds his own article on this topic 1-3 years ago. Ultimately, it is usually important for the employer that you are able to solve the tasks set, and not be a walking encyclopedia.
- Change jobs more often. Professional growth in a new place of work usually lasts about 2-3 months, occasionally up to six months, then the routine and a little new begins. To avoid this, it is necessary to change the place of work as often as possible (about once every six months or a year). As an option - to move to another position or to another project within one large company, but if you stayed in the same position for a year and there are no changes foreseen, leave boldly.
ExceptionsExceptions to this advice: if you are well, a very interesting project in which you work and / or you have an option and the project is clearly waiting for success.
UPD This item has caused much controversy in the comments. The fact is that you are hired not for karma, but for your ability to do work. Sitting for 5 years in the same office and doing the same thing all the time will make you a master to do this one and the same thing, but it will not make you a really good specialist. The ability to solve any problem is valuable, for this you need to face as many different tasks as possible. No need to go to extremes and change jobs every 2 months - this is of course too (but you shouldn’t be afraid of leaving a shit where you really don’t like it either - go and do not worry). In the end, keeping you in the project is the employer's headache, not yours. This is a little cynical, but this is just a tip and you can decide for yourself. Just keep in mind - if you quit your job where you feel your development has stopped or, all the more so, you don’t like something, it’s likely to be a good idea.
- Learn related industries, new items, new libraries. Grandpa Lenin bequeathed after all.
- Work for currency directly to foreign employers. Good specialists - toptal.com, simpler - at upwork.com. With good English to move to the United States, Australia, Germany and other UK matter is generally not tricky.
how did i learn englishAt first I studied English at school for 9 years, then at the institute for 3 years and could only read and translate with a dictionary. Then I refined the skill for several years by reading the documentation, but it was more difficult to say how much for coconut. The first really effective step was to watch Dmitry Petrov's Polyglot video tutorials from the Culture channel, the next step was the practice of communicating with foreigners in our coworking in Phuket, well, it became quite easy after getting married to a Filipina. Among other things, one of my friends opened an English school with a unique method that allows you to study for a month or two, though this is in Phuketics again.
- Go generally to the workshop. In the US, this is a normal practice - after graduating from school (not even a university, imagine) to go for a study for 2-3 months at a workshop and that's it - you are an already in-demand specialist who can easily find a well-paid job along with university graduates and with work experience. This was told to me by a young guy, an American, who lived with us in coworking and went just such a way. Unfortunately, we don’t have such a practice in Russia (more often it’s a waste of 5 years in high school, just language syntax courses, which, I hope you understand, are just a small part of what you need to know). After the mitap, I had an idea to organize a workshop, but at the end of October I’m flying back to Asia and just don’t have time to conduct it here. Therefore, if there are those who wish to leave for the wintering with us, and at the same time learn all that I have written here - write in a personal, think of something.
UPD: The comments expressed the opinion that this article only applies to web development on python. This is not exactly the case, just the Django web framework, which I advise you to learn, is the most popular at the moment, which
you can easily see . You can easily choose another direction and most of the article will also remain relevant, but I don’t know if it will be easy for you to find a job. Moreover, the advice about the study of other popular libraries is precisely aimed at you, so that you are not limited to only Django and expand your knowledge in other areas.
I would be infinitely grateful for any additions and will try to quickly add them to the article! About the spelling, please write in a personal, so as not to clutter up comments.