Python for the web: what a junior needs to know to work and grow
We did an abbreviated decryption with the main thoughts from Python Junior Podcast: in it we discussed where to start and where to go to a novice Python developer. Recently, we have a lot of content for middles and seniors, but this issue is definitely for the jones.
Main topics:
Python Junior Podcast is a programming podcast for those who want to better understand Python. The airwaves are led by the evangelists of the MoscowPython community and teachers of Learn Python courses .
The conversation involved:
Valentin Dombrowski: Why is Python suitable for web development? Why not PHP or JavaScript, for example?
Grigory Petrov: So there really is no choice. Despite the fact that on the modern Web it is possible practically without a backend - purely on front-end technologies, in JavaScript - to assemble a single page application or progressive web application, it is 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 frontend draws these web pages in a browser. And when we need to quickly collect all this on something, then there is not much choice.
Let's look at the possible options.
Zlata Obukhovskaya: I think that you need to know one framework well - and to know what else happens and when they are used. Where is Tornado, where is Django, where is Flask, where is aiohttp and so on.
It’s useful to know that there is such a thing as protocols. In particular, knowledge of the http protocol is central to building web applications.
Still you need to at least approximately imagine how the frontend is arranged in web projects: what is HTML, CSS, JS.
Alexey Shtyrnyaev: And know where the documentation lies. It is most important.
Grigory Petrov:Here we set foot on very unstable soil. If we are not lucky and somehow we began to seriously study the modern frontend, then it will be about 10 times harder than the Python backend. A novice developer needs to limit his focus so that he begins to learn HTML, but not to fall into all these divs, span, float, how everything is aligned and lined up there.
Alexey Shtyrnyaev: We need a basic Bootstrap course. And the basics of HTML.
Grigory Petrov: Yes, I will recommend right away in case you choose Python as the development backend language and, for example, Django as the framework: Django has documentation in the Django Book, it’s really cool, it’s all that Zlata said She is really good for a beginner.
Alexey Shtyrnyaev:Another Django Girls is suitable for a quick start, if the goal is to study Django. This is such a tutorial where in one day you can go upstairs, understand the basics and what the framework is capable of.
Valentin Dombrovsky: Preparing to record a podcast, we made a list of what a Python programmer needs for web development, which summarizes what was said earlier.
Zlata Obukhovskaya: At first, you don’t need to know the algorithms, they themselves will gradually appear in your head if you engage in development for a long time. I know a bunch of good engineers who did not have a good formal course in algorithms.
Grigory Petrov: I want to add oil to the fire. So where does our craving for algorithms come from?
Now we do not have a fundamental education in algorithms, we do not know how to train programmers, there is no technical base.
They are trying to do it, but here we have the story of Hogwarts: we can’t make a school of wizards until we have a single wizard. Therefore, what should the university come to and ask: “Start to train programmers”, but they don’t have programmers, because everyone works at Mail.ru, Rambler and Yandex, are they good there?
At the university they look and say:
- Ok, programming. Let's find some kind of related field of knowledge and invite specialists from there. Let’s invite journalists who can write text, electrical engineers who know how to make electrical circuits, and mathematicians who know how to write algorithms.
As a result, it turns out that it is just as expedient as teaching a builder the physics of elementary particles only because brick and cement are composed 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 a house. As a result, we get a builder who is able to perfectly paint how "cement works", but has never seen him and knows how to make anything out of it.
Algorithms and data structures are very good, but this is a very small application area. They are urgently needed, for example, if you write a game engine, compiler, network protocol.
The most difficult mathematics there is to fold two times and then divide. They need completely different knowledge. Solving business problems requires primarily 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 ensure that they do 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.
These are the applied things and 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.
Valentine Dombrowski:This comparison came to my mind: it is a translation from the language of business into a language in which you can communicate with a computer. That is, the programmer is a kind of specific linguist.
Grigory Petrov: Business needs a writer, not a linguist. The writer does not need to know why this word was transformed into this one thousand years ago. He needs to be able to apply these words.
Alexey Shtyrnyaev: Probably, there is no universal recipe for which you need to prepare a junior.
Grigory Petrov: When we were looking for several jones 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 do this always efficiently, 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 primarily looking for.
Zlata Obukhovskaya:People who are looking for work, moving from other areas, have some advantage from the point of view of business, because they have already gone some way and are able to solve problems quickly. These are soft skills, I would call it even a work culture. Often, graduate students of this work culture have not yet been developed.
But I would still like to try to give some recipe for beginners.
Zlata Obukhovskaya: The first one is still some kind of your own project, because you need to write something in the resume and show the minimum portfolio. It’s cooler when these projects are not made for themselves, but on freelance - for someone.
After the first projects, it is already possible to make a resume and send it to all companies where there are June positions. Interviews will give an understanding of what companies need. Sooner or later, someone will take you, at least to a small company. Subsequently, this work experience will give you the opportunity to get into the company more and more interesting.
Valentin Dombrovsky: By the way, we are preparing students in the courses so that they have their own project for 10 weeks of training. Plus we train the skill of team development. These are just the soft skills that Zlata talked about.
Alexey Shtyrnyaev:From experience I will say that the first job can be sought for a very long time. When you are looking for a month or two - this is normal. If you submit a resume to all companies, go for interviews, in the third month you will definitely find something.
Valentin Dombrovsky: You can cut your projects or take simple projects on freelance and simultaneously send out resumes.
Zlata Obukhovskaya: A Python developer can go anywhere. You can go to testing, continue to develop to a senior architect. Or even in 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 do not need so much knowledge at the entrance, but it is then advisable to cover a wider range, because the more you can, the better for you.
***
This is only part of the Python Junior release . You can listen to the full version of the episode .
Or even see:
RSS podcast
Thank you that you have read, listened or watched.
Main topics:
- What knowledge does a novice programmer need to do
web development? - What do employers expect from developers?
- What to do to find work without experience?
- How can a Python developer develop?
Python Junior Podcast is a programming podcast for those who want to better understand Python. The airwaves are led by the evangelists of the MoscowPython community and teachers of Learn Python courses .
The conversation involved:
- Valentin Dombrovsky, co-founder of MoscowPython
- Zlata Obukhovskaya, team leader NVIDIA
- Grigory Petrov, evangelist of MoscowPython
- Alexey Shtyrnyaev, developer at FinEx, teacher of Learn
Python courses
Why Python is good for web development
Valentin Dombrowski: Why is Python suitable for web development? Why not PHP or JavaScript, for example?
Grigory Petrov: So there really is no choice. Despite the fact that on the modern Web it is possible practically without a backend - purely on front-end technologies, in JavaScript - to assemble a single page application or progressive web application, it is 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 frontend draws these web pages in a browser. And when we need to quickly collect all this on something, then there is not much choice.
Let's look at the possible options.
- C # Microsoft is really great, they made .NET Core and are promoting it in every way. But, firstly, this is a new cross-platform technology, and everything is not going smoothly there. Secondly, it is really expensive, there are few C # developers - simply because it is unpopular.
- Java It's complicated. Making a normal site in Java is not 10 lines of code, as 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, continuous pain and suffering.
- PHP In recent versions it is wonderful. 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 a regular, non-top developer makes a site in PHP, he will not write only in 7.2: you still have to read some textbooks, tutorials, everywhere a bunch of legacy code, and this is not very good.
- JavaScript and Node.js. This is wonderful and very modern when one language is on both the frontend and backend. Only not very stable. Node.js is a good thing, but it’s problematic to deploy it in production so that it does not fall and works stably. Plus, if we want to write quality JavaScript code, we need not JavaScript, but TypeScript. But TypeScript is unexpectedly complex, at the sight of it, an ordinary developer boils up.
Let's omit Ruby, Haskell, Erlang and other niche stuff, and we have ... Python. A language with consistent syntax, a uniform standard library, the best documentation, popular lightweight frameworks, the mega-popular Django combine.It turns out that, despite the widest choice, if we have ordinary, not top developers, we are a regular business that wants to make ordinary sites, we do not 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 to know what else happens and when they are used. Where is Tornado, where is Django, where is Flask, where is aiohttp and so on.
It’s useful to know that there is such a thing as protocols. In particular, knowledge of the http protocol is central to building web applications.
Still you need to at least approximately imagine how the frontend is arranged in web projects: what is HTML, CSS, JS.
Alexey Shtyrnyaev: And know where the documentation lies. It is most important.
Grigory Petrov:Here we set foot on very unstable soil. If we are not lucky and somehow we began to seriously study the modern frontend, then it will be about 10 times harder than the Python backend. A novice developer needs to limit his focus so that he begins to learn HTML, but not to fall into all these divs, span, float, how everything is aligned and lined up there.
Alexey Shtyrnyaev: We 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 Bootstrap course 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 studying the front-end can be immersed in, in particular, how static is generally given to web applications. So the developer smoothly proceeds to begin to learn how, in principle, the architecture of web applications is arranged and how they live on production.
Grigory Petrov: Yes, I will recommend right away in case you choose Python as the development backend language and, for example, Django as the framework: Django has documentation in the Django Book, it’s really cool, it’s all that Zlata said She is really good for a beginner.
Alexey Shtyrnyaev:Another Django Girls is suitable for a quick start, if the goal is to study Django. This is such a tutorial where in one day you can go upstairs, understand the basics and what the framework is capable of.
Valentin Dombrovsky: Preparing to record a podcast, we made a list of what a Python programmer needs for web development, which summarizes what was said earlier.
What is included in the basis for Python web development
- Web frameworks Django, Flask, aiohttp, Tornado, etc. (and to know about the existence of the rest).
- Protocols and APIs: primarily HTTP, JSON-RPC, Protocol Buffers, gRPC.
- ORM and migrations, relational databases, SQLAlchemy, SQL, PostgreSQL, MySQL.
- The basics of HTML, CSS, Bootstrap, as well as JS frameworks and JQuery.
- The principles of applications on production, testing, unit tests, autotests, version control systems, git.
Does the Junior need algorithms
Zlata Obukhovskaya: At first, you don’t need to know the algorithms, they themselves will gradually appear in your head if you engage in development for a long time. I know a bunch of good engineers who did not have a good formal course in algorithms.
Grigory Petrov: I want to add oil to the fire. So where does our craving for algorithms come from?
Now we do not have a fundamental education in algorithms, we do not know how to train programmers, there is no technical base.
They are trying to do it, but here we have the story of Hogwarts: we can’t make a school of wizards until we have a single wizard. Therefore, what should the university come to and ask: “Start to train programmers”, but they don’t have programmers, because everyone works at Mail.ru, Rambler and Yandex, are they good there?
At the university they look and say:
- Ok, programming. Let's find some kind of related field of knowledge and invite specialists from there. Let’s invite journalists who can write text, electrical engineers who know how to make electrical circuits, and mathematicians who know how to write algorithms.
As a result, it turns out that it is just as expedient as teaching a builder the physics of elementary particles only because brick and cement are composed 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 a house. As a result, we get a builder who is able to perfectly paint how "cement works", but has never seen him and knows how to make anything out of it.
Algorithms and data structures are very good, but this is a very small application area. They are urgently needed, for example, if you write a game engine, compiler, network protocol.
Most programmers solve business problems where algorithms and data structures are not needed.
The most difficult mathematics there is to fold two times and then divide. They need completely different knowledge. Solving business problems requires primarily 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 ensure that they do 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.
These are the applied things and 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.
Valentine Dombrowski:This comparison came to my mind: it is a translation from the language of business into a language in which you can communicate with a computer. That is, the programmer is a kind of specific linguist.
Grigory Petrov: Business needs a writer, not a linguist. The writer does not need to know why this word was transformed into this one thousand years ago. He needs to be able to apply these words.
What you need to find a first job as a developer
Alexey Shtyrnyaev: Probably, there is no universal recipe for which you need to prepare a junior.
If you come to some company, you will not be taken for the fact that you know Django, JSON and some algorithms. You will most likely be taken for the skills that this company needs here and now.There are many companies, and everyone has different requirements. There is no such universal amount of knowledge that needs to be obtained in order to further prepare a resume and go to find a job.
Grigory Petrov: When we were looking for several jones 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 do this always efficiently, 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 primarily looking for.
Zlata Obukhovskaya:People who are looking for work, moving from other areas, have some advantage from the point of view of business, because they have already gone some way and are able to solve problems quickly. These are soft skills, I would call it even a work culture. Often, graduate students of this work culture have not yet been developed.
But I would still like to try to give some recipe for beginners.
First steps for a novice developer
Zlata Obukhovskaya: The first one is still some kind of your own project, because you need to write something in the resume and show the minimum portfolio. It’s cooler when these projects are not made for themselves, but on freelance - for someone.
After the first projects, it is already possible to make a resume and send it to all companies where there are June positions. Interviews will give an understanding of what companies need. Sooner or later, someone will take you, at least to a small company. Subsequently, this work experience will give you the opportunity to get into the company more and more interesting.
Valentin Dombrovsky: By the way, we are preparing students in the courses so that they have their own project for 10 weeks of training. Plus we train the skill of team development. These are just the soft skills that Zlata talked about.
Alexey Shtyrnyaev:From experience I will say that the first job can be sought for a very long time. When you are looking for a month or two - this is normal. If you submit a resume to all companies, go for interviews, in the third month you will definitely find something.
Valentin Dombrovsky: You can cut your projects or take simple projects on freelance and simultaneously send out resumes.
What are the prospects for a Python developer
Zlata Obukhovskaya: A Python developer can go anywhere. You can go to testing, continue to develop to a senior architect. Or even in 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 do not need so much knowledge at the entrance, but it is then advisable to cover a wider range, because the more you can, the better for you.
***
This is only part of the Python Junior release . You can listen to the full version of the episode .
Or even see:
RSS podcast
Thank you that you have read, listened or watched.