Why don't you need to learn python in the first language

If you are looking for the answer to the question: “Which programming language to choose first”, then somewhere in 90% of all cases you will be offered Python - as the most simple language to learn. And it’s obvious that a certain number of people who haven’t learned programming before will choose Python because of these recommendations. And here we have a problem, which will be discussed below. Of course, with a description of how I got to such a life.

About myself


As a student, I realized that my profession is not as rosy as I thought when I was 18 years old. Therefore, I began to think about how to earn adequate money. And after listening to stories about how my cousin got crazy money at that time in 1C, I also decided to connect my life with IT.

Initially, these were template sites on designers and wordpress, then I started SEO, and at one point I came across Habr, after which I decided to become a full-fledged programmer. I did not have higher mathematics, so I decided to choose a sphere where it is not required - web development.

I had an obvious question: which language to choose - php / python / ruby. Having seen enough articles on Habré, I read the hate towards php, watching a couple of motivational videos from Yandex. I chose Python. The advantages of the language, I hope you know, so I won’t talk about it.

Primary language training


I combined language training with the main work, so I read books, looked at tutorials, sawed small projects in the evening. In general, for the year I

1) I studied books:

  • Mark Lutz - Learning Python
  • Mark Lutz - Python Programming
  • Chad Fowler - Programmer Fanatic
  • Bill Lubanovich - Simple Python

2) I learned a lot of videos from Ukrainian / Bourgeois authors on Django
3) I took a course from codeacademy
4) I mastered PyCharm

Your first project


Then I came up with the idea of ​​a small service on a very specific topic, which I decided to do in order to consolidate my knowledge of Python + Django.

In creating the site, I

1) I studied the books:
  • John Duckett - HTML and CSS. Website development and design
  • David Flanagan - JavaScript. Detailed guide
  • Ben Fort - Master your own SQL.

2) I studied the documentation of Django for my tasks
3) I studied the deployment of projects on Django Gunicorn + nginx + centOS

Your first normal project


After the first adequate site failed, I decided to create something worthwhile, chose an idea, chose an implementation scheme and made it for 3 months in the evenings.

The project has shown its viability (to this day brings me some money, which I am extremely happy about). And I decided to pump it better already.

After reading the book “Percival H. - Test-Driven Development with Python”, I decided to write tests first based on Django components, then I raised the selenium documentation, and already did external tests.

I want to be cool


Having opened vacancies for Python-Django developers, I looked at what else is usually required in such vacancies:

  • Django rest framework
  • Celery
  • Tornado / Twisted / asyncio (There is only one choice)
  • Class-based view Django
  • Angular / React (One thing to choose from)

Spent 3 months getting to know / trying these things. Also raised the standard Python library + an external library for parsing beautifulSoup.

You can't work without C / C ++


It is believed that without knowledge of C / C ++, a programmer cannot call himself a programmer. Therefore, when I had free time, I got acquainted with books:

  • Brown Kernighan - C Programming Language
  • Stanley B LippMan - C ++ Programming Language. Basic course

I read books, fiddled with the code, looked at the compilation, looked at the code examples. In general, now I did not make big eyes when mentioning links, pointers, sortings, OOP and a bunch of different arrays with different processing speeds of an element, depending on its position.

I am ready for battle!


And here we come to the most important moment. Having spent a total of 2 years studying all the elements of web programming that I mentioned above. I found myself ready enough to qualify as a Python web developer. Of course, I didn’t know something very well, something was superficial, but I didn’t know anything at all (for example, Flask), but my general understanding and skills were not bad.

And here problems with Python began, on which people most often do not focus. Namely, on the demand for business in junior / pre-middle level Python developers.

With this question I entered the market


Although at first glance it seems that there are a lot of vacancies in Python, but when the specifics begin, everything changes dramatically.

1. Immediately there is a large screening of vacancies, where Python is an exclusively auxiliary language. Most often these are the positions of Java developers, System Administrators, QA-Automation. Also now there is a big dropout in Data Learning, where math education + R language is required. with one Python you cannot pick up this vacancy.

2. It turned out that in my city there are no vacancies for Python, from the word there is none. By expanding the search throughout the area, I also got an unsatisfactory result. A couple of vacancies in PHP, where Python went "will be a plus." Having opened the filter over the past 3 years, I also found that there were no vacancies in Python at all. Those. business in the province most often chooses simpler and more popular technologies than Python.

3. Having opened vacancies in Python in the general search engine, I discovered the following trends:
  • 90% + of vacancies are in Moscow or St. Petersburg
  • 90% + of vacancies require a middle + / seniour level
  • ~ 100% of junior vacancies in Moscow or St. Petersburg (most often from giants)

In other words, the situation has turned out that if you do not live in Moscow, St. Petersburg and are not going to “conquer” them, then you practically have nowhere to get your first job.

Of course, there are a couple of centers where Python is still used, for example, in Kazan. But most often this is some kind of one company, where with Jobs it is also very middle + / seniour.

4. The option to search for a remote child at the current level also showed that employers are not ready to take such a risk. A little experience + udalenka = this is some kind of fantasy.
Nevertheless, I was still able to find a couple of options, but already during the initial interview it became clear that this was nonsense of the type: “You have three months to work with us, and if the client pays for your work, we will pay you too.” Not the best option.

5. I talked with a couple of HR from large companies, they expressed this trend. “We usually take people with experience in Python from a year, plus experience in another language (3+ years). Most often php / Java. " In other words, they did not consider options at all to take a person with only Python.

6. Having talked with the guys from the profile forums, it became clear that this is a fairly typical situation. From their stories it became clear that people after futile searches either went to work on php / 1c, or somehow climbed through upwork / their own project / test automation.
But then again from case to case.

In general, it turned out that Python is a great language that allows you to do powerful projects. And it so happened that their concentration is in the capitals. And since these are complex projects, then employees there are already required at the middle + level. Is the person who has just learned Python ready to get such a job? Hard!

But there is another way!


At the moment, only in my city there are 24 vacancies for php of various levels (starting from small companies that need to maintain the current site, ending with e-commerce giants that offer consistent expansion of functionality). And about the same vacancy at 1C. And about half of these vacancies are ready to take a person who knows at least something in programming. Most likely, these are not the best places, but this is the first work, after which you will officially become a programmer with experience for HR.

So in the end


It turns out that you can learn the cool Python programming language and stay on the street. Or you can learn the "hated" php / 1c and get the job done. The quality of this work, of course, leaves many questions - but this is already an experience.

As for me, in my conditions (not going to Moscow / St. Petersburg) I actually spent time learning the language, which is now in demand exclusively in my own projects. I did not succeed in finding work on the spot or in a remote location. Now I am going towards php, since there is corny work on it.

Therefore, if you do not live in Moscow, St. Petersburg, are not a student at a technical university, then I would not advise you to learn Python in the first language. Pay attention to PHP - there are always places for it, there is work, there is experience. And the further development path is yours.

PSAs a friend of mine told me, on Ruby there is almost the same situation. But here I can’t speak with confidence.

Also popular now: