We've made an abbreviated transcript with the main thoughts from the Python Junior Podcast: in it we discussed where to start and where to go as an aspiring Python developer. Lately we have a lot of content for middles and seniors, but this release is definitely for juniors.

Main topics:
- What knowledge does a novice programmer need to do
web development? - What do employers expect from developers?
- What to do to find a job without experience?
- How can a Python developer develop?
The Python Junior Podcast is a programming podcast for those who want to get better at Python. Esthers are hosted by community evangelists and course instructors .
Participated in the conversation:
- Valentin Dombrovsky,co-founder of MoscowPython
- Zlata Obukhovskaya, NVIDIA team leader
- Grigory Petrov, evangelist MoscowPython
- Alexey Shtyrnyaev, developer at FinEx, teacher of Learn courses
Python
Why Python is good for web development
Valentin Dombrovsky: Why is Python suitable for web development? Why not PHP or JavaScript for example?
Grigory Petrov: So, there really isn't much of a choice. Despite the fact that in the modern Web you can actually build a single page application or a progressive web application without a backend - purely on front-end technologies, in JavaScript, it's still too complicated, poorly indexed and requires cool developers.
If we want to make a website or service, we use a combined approach: we have some kind of backend that implements the logic and creates web pages, and some kind of frontend draws these web pages in the browser. And when we need to quickly collect all this on something, then there is not much choice.
Let's look at the options.
- C #. Microsoft is really great, they made .NET Core and promote it in every possible way. But, firstly, this is a new cross-platform technology, and not everything is smooth there yet. Secondly, it is really expensive, there are few C# developers - simply because it is unpopular.
- Java. It's complicated. Making a normal website in Java is not 10 lines of code, like in Python. This is a lot of code, these are frameworks, and you need to know the specifics of setting up Java servers. In general, sheer pain and suffering.
- PHP It's great in the latest versions. I will even say this: PHP 7.2 is no worse than Python. But you can't just take and use PHP 7.2. If an ordinary, not top developer makes a site in PHP, he will not write only in 7.2: you still have to read some textbooks, tutorials, there is a lot of legacy code everywhere, and this is not very good.
- JavaScript and Node.js It is wonderful and very modern when one language is used both on the front-end and on the back-end. Just not very stable. Node.js is a good thing, but it's problematic to deploy it in production so that it doesn't crash and runs smoothly. Plus, if we want to write quality JavaScript code, we don't need JavaScript, but TypeScript. But TypeScript is unexpectedly complex, at the sight of it, the brains of an ordinary developer boil.
Let's omit Ruby, Haskell, Erlang, and other niche stuff, and we're left with... Python. A language with consistent syntax, a uniform standard library, better documentation, popular lightweight frameworks, and the mega-popular Django combiner.
It turns out that, despite the widest choice, if we have ordinary, not top developers, we are an ordinary business that wants to make ordinary sites, we don’t have a development department for 50 people, then we take Python.
What knowledge is needed to enter the profession
Zlata Obukhovskaya: I think that you need to know one framework well - and know what others are and when they are used. Where is Tornado, where is Django, where is Flask, where is aiohttp and so on.
It will be useful to know that there is such a thing as protocols. In particular, knowledge of the http protocol is central to building web applications.
You also need to at least roughly imagine how the frontend is arranged in web projects: what is HTML, CSS, JS.
Alexey Shtyrnyaev: And know where the documentation is. It is most important.
Grigory Petrov: We are on very shaky ground here. If we were unlucky and we started to somehow seriously study the modern front-end, then it will be about 10 times more difficult than the Python back-end. A novice developer needs to limit their focus so that they start learning HTML, but not to fall into all these divs, spans, floats, how everything is aligned and lined up there.
Alexey Shtyrnyaev: Need a basic Bootstrap course. And the basics of HTML.
In the first year, you should not delve into JS frameworks (if you focus on the backend). The basic course on Bootstrap already has ready-made modules: if you want a slider, make a slider, if you want a floating menu, make a floating menu.
Zlata Obukhovskaya: I think that while studying the frontend, you can immerse yourself, in particular, in how static is given to web applications in general. So the developer smoothly moves on to start learning how the architecture of web applications works in principle and how they live in production.
Grigory Petrov: Yes, I will recommend it right away in case you chose Python as a backend development language and, for example, Django as a framework: Django has documentation in the Django Book, it's really cool, it has everything that Zlata said, she and really good for a beginner.
Alexey Shtyrnyaev: For a quick start, some Django Girls is also suitable if the goal is to learn Django. This is such a tutorial where in one day you can go through the tops, understand the basics and what the framework is capable of.
Valentin Dombrovsky: In preparation for recording the podcast, we compiled a list of what a Python programmer needs for web development, which summarizes what was said earlier.
What is included in the basis for web development in Python
- Web frameworks Django, Flask, aiohttp, Tornado, etc. (and be aware of the others).
- Protocols and APIs: primarily http, JSON-RPC, Protocol Buffers, gRPC.
- ORM and migrations, relational databases, SQLAlchemy, SQL, PostgreSQL, MySQL.
- Basics of HTML, CSS, Bootstrap, as well as JS frameworks and JQuery.
- Application principles in production, testing, unit tests, autotests, version control systems, git.
Does a junior need algorithms
Zlata Obukhovskaya: At first, you do not need to know the algorithms, they will gradually appear in your head if you develop for a long enough time. I know a bunch of good engineers who didn't have a good formal course in algorithms.
Grigory Petrov: I want to add fuel to the fire. Where does our craving for algorithms come from?
Right now we don’t have a fundamental education in algorithms, we don’t know how to train programmers, we don’t have a technical base.
They try to do this, but here we have the history of Hogwarts: we cannot make a school of wizards until we have a single wizard. Therefore, what should a university do when they come to and ask: “Start to train programmers”, but they don’t have programmers, because everyone works at Mail.ru, Rambler and Yandex, they feel good there?
At the university they look and say:
— Okay, programming. Let's find some related field of knowledge and invite specialists from there. Let's invite journalists who can write text, electrical engineers who can make electrical circuits, and mathematicians who can do algorithms.
As a result, it turns out that this is as expedient as teaching a builder physics of elementary particles just because brick and cement are made of elementary particles.
At the same time, they do not talk about cement and brick itself, because a physicist who is trying to train a builder does not know how to build houses. As a result, we get a builder who is able to perfectly describe how “cement works”, but he has never seen him and knows how to make nothing out of him.
Algorithms and data structures are very good, but this is a very small application area. They are urgently needed, for example, if you are writing a game engine, compiler, network protocol.
Most programmers solve business problems where algorithms and data structures are not needed.
There, the most difficult mathematics is to add up twice, and then divide. It requires completely different knowledge. Solving business problems requires mostly applied rather than fundamental knowledge.
It is better for a novice developer to have an idea about the business and how to correctly and quickly assemble the necessary structures from ready-made blocks, how to debug them, how to make them not fall apart, know why they fall apart, what happens when requirements change and the program starts "settle on the foundation" like a house after rain.
Here are these applied things and an understanding of how to write software. He needs to know that in addition to the debugger, he has a set of tools that will show exactly where the program slows down.
Valentin Dombrovsky: Such a comparison came to my mind: this is a translation from the language of business into a language in which one can communicate with a computer. That is, a programmer is a kind of specific linguist.
Grigory Petrov: Business needs a writer, not a linguist. The writer does not need to know why a thousand years ago this word was transformed into that one. He needs to know how to use those words.
What it takes to get your first job as a developer
Alexey Shtyrnyaev: There is probably no universal recipe for preparing a junior.
If you come to some company, you will not be hired because you know Django, JSON and a few algorithms. You will most likely be hired for the skills that this company needs here and now.
There are many companies and all have different requirements. There is no such universal amount of knowledge that you need to get in order to further prepare a resume and go to work.
Grigory Petrov: When we were looking for several juniors at VoxImplant, our technical director formulated the basic requirement as follows: a person must be able to solve problems. It is clear that June will not always do this effectively, not in the best way and not always correctly, but ideally you set a task for a person, he tenses up and solves it. This is the skill that employers are looking for in the first place.
Zlata Obukhovskaya: People who are looking for work by moving from other areas have some advantage from a business point of view, because they have already gone some way and are able to solve problems quickly. These are soft skills, I would even call it a work culture. Often, university graduates have not yet developed this work culture.
But I would still like to try to give some recipe to beginners.
First steps for a beginner developer
Zlata Obukhovskaya: The first is after all some kind of your own project, because you need to write something in your resume, show a minimal portfolio. It's cooler when these projects are made not for yourself, but on freelance - for someone.
After the first projects, you can already make a resume and send it to all companies where there are junior positions. Interviews will give an understanding of what companies need. Sooner or later, someone will take you, at least in a small company. Subsequently, this work experience will give you the opportunity to get into a larger and more interesting company.
Valentin Dombrovsky: By the way, in our courses we prepare students so that they have their own project in 10 weeks of training. Plus, we train the skill of team development. These are exactly the soft skills that Zlata was talking about.
Alexey Shtyrnyaev: From experience I can say that the first job can be searched for a very long time. When you are looking for a month or two - this is normal. If you apply to all companies, go to interviews, in the third month you will definitely find something.
Valentin Dombrovsky: You can cut your own projects or take simple freelance projects and simultaneously distribute resumes.
What are the prospects for a Python developer
Zlata Obukhovskaya: A Python developer can go anywhere. You can go into testing, continue to develop to a senior architect. Or even management. Technical managers are different, and you can grow to top management. You can develop in data science, DevOps, go to autotests or machine learning.
Valentin Dombrovsky: In general, there are a lot of options, opportunities too, including our courses. You don’t need much knowledge at the entrance, but it is desirable to cover a wider range later, because the more you can, the better for you.
***
This is just part of the release. . The full episode can be .
Or even see:

Thank you for reading, listening or watching.
Source: habr.com
