Python for the Web: what does a junior need to know in order to work and develop
We made an abbreviated decoding with the main thoughts from the Python Junior Podcast: in it we discussed where to start and where to go to the beginner developer in Python.Recently, we have a lot of content for middles and seniors, but this release is exactly for June.
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?
Python Junior Podcast - programming podcast for those who want to better understand Python.The esters are led by the MoscowPython evangelists and the teachers of the Learn Python courses.
Participated in the conversation:
Valentin Dombrovsky, co-founder of MoscowPython
Zlata Obukhovskaya, NVIDIA timlid
Grigory Petrov, MoscowPython Evangelist
Alexey Shtyrnyaev, developer at FinEx, Learn courses teacher 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’s really no choice. Despite the fact that in the modern Web, you can virtually no backend - purely frontend technologies, JavaScript - to collect a single page application or progressive web application, it is still too difficult, 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 performs the logic and creates web pages and some kind of frontend draws these web pages in the browser. And when we need to quickly assemble it all on something, then there is no particular choice.
Let's consider the possible options.
C #. Microsoft is really great, they made .NET Core and promote it in every possible way. But, first of all, this is a new cross-platform technology, and there is not everything going smoothly. Secondly, it is really expensive, C # developers are few - simply because it is unpopular.
Java. It's complicated. Making a normal Java website 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 In recent versions, it is wonderful. I even say this: PHP 7.2 is not worse than Python. But you can't just take and use PHP 7.2. If a regular, non-top developer makes a website in PHP, he will not write only on 7.2: you still have to read some tutorials, tutorials, everywhere a lot of legacy code, and this is not very good.
Javascript and node.js. It is wonderful and very modern, when one language is on the front end and on the back end. Only not very stable. Node.js is a good thing, but it’s problematic to deploy it in production so that it doesn’t fall and work stably. Plus, if we want to write high-quality JavaScript code, we need not JavaScript, but TypeScript. But TypeScript is surprisingly complex, brains boil at the sight of an ordinary developer.
Let's skip Ruby, Haskell, Erlang, and other niche things, and we still have ... Python. Language with consistent syntax, uniform standard library, better documentation, popular lightweight frameworks, Django mega-populator.
It turns out that, despite the broadest choice, if we have regular, non-top developers, we are an ordinary business that wants to do regular websites, 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 believe that one framework needs to be known well - and to know what else are and when they are used. Where Tornado, where Django, where Flask, where aiohttp and so on. It is 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 at least an approximate idea of ​​how the frontend is arranged in web projects: what is HTML, CSS, JS.
Alexey Shtyrnyaev: And to know where the documentation is. It is most important.
Grigory Petrov: Here we are stepping onto very unstable ground. If we are unlucky and we started to seriously study modern frontend somehow, then it will be about 10 times harder than a Python backend. A novice developer needs to limit his focus so that he can start learning HTML, but in order not to fall into all these divs, span, float, how everything is aligned and lined up.
Alexey Shtyrnyaev: We need a basic course on Bootstrap. And the basics of HTML.
In the first year you should not go into JS-frameworks (if you focus on the backend). In the basic course on Bootstrap, there are already ready modules: if you want a slider - make a slider, if you want a floating menu - make a floating menu.
Zlata Obukhovskaya: I think that you can immerse yourself in studying the frontend, 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 in production.
Grigory Petrov: Yes, I would recommend right away in case you chose Python as the development backend language and, for example, Django as the framework: Django has documentation in the Django Book, it is really cool, it contains everything that Zlata said She's really good for a beginner.
Alexey Shtyrnyaev: Another Django Girls will be suitable for a quick start, if the goal is to study Django. This is such a tutorial, where in one day you can go to the top, understand the basics and what the framework is capable of.
Valentin Dombrovsky: Preparing to record a podcast, we have compiled a list of what a Python programmer needs for web development, and we summarize what was said earlier.
What is the basis for Python web development?
Web frameworks Django, Flask, aiohttp, Tornado, etc. (and know about the existence of the rest).
Protocols and APIs: primarily http, JSON-RPC, Protocol Buffers, gRPC.
ORM and migration, relational databases, SQLAlchemy, SQL, PostgreSQL, MySQL.
Basics of HTML, CSS, Bootstrap, as well as JS frameworks and jQuery.
Application principles for production, testing, unit tests, autotests, version control systems, git.
Does junior need algorithms
Zlata Obukhovskaya: At first, you don’t need to know the algorithms, they will gradually appear in your head if you have been developing for a long time. I know a lot of good engineers who did not have a good formal course of algorithms.
Grigory Petrov: I want to add fuel to the fire. This is where our craving for algorithms comes from?
We now 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 this, but here we have the story of Hogwarts: we cannot make a school of wizards until we have a single wizard. Therefore, what should the university to which they come and ask: “Start teaching programmers”, but they do not have programmers, because everyone works in Mail.ru, Rambler and Yandex, are they good there?
The university looks and says: - OK, programming. Let's find some related area of ​​expertise and invite experts from there. Let's invite journalists who can write text, electrical engineers who can do electrical circuits, and mathematicians who can do algorithms.
In the end, it turns out that this is as expedient as teaching a builder to elementary particle physics only because brick and cement are made up of elementary particles.
At the same time, they don’t tell 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 paint perfectly how cement works, but he has never seen him and is not able to do anything from him.
Algorithms and data structures are very good, but they are 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.
There the most difficult mathematics is to fold two times, and then divide. They need completely different knowledge. Solving business problems requires mainly applied, rather than fundamental knowledge.
It’s better for a novice developer to have an idea about the business and how to assemble the necessary constructions from ready-made blocks, how to debug them, how to make them not fall apart, to 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 the applications and understanding 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 is slowing down.
Valentin Dombrovsky: This comparison came to my mind: it is a translation from a business language to 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 a thousand years ago this word was transformed into something. He needs to be able to use these words.
What you need to find your 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 a company, they will take you not for knowing Django, JSON and some algorithms. You will most likely be taken for those 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 your resume and go to work.
Grigory Petrov: When we were looking for several junas at VoxImplant, our technical director formulated the basic requirement as follows: a person should be able to solve problems. It is clear that June will not always do this effectively, not in the best way and is not always correct, but ideally you set the task for a person, he strains 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 an advantage from a business point of view, because they have already traveled a certain path and are able to solve problems quickly. This is soft skills, I would even call it a working culture. Often, graduates of universities, this labor culture has not yet been developed.
But I would still like to try to give a recipe to beginners.
First steps for a novice developer
Zlata Obukhovskaya: The first is still some kind of your own project, because you need to write something in your resume, show the minimum portfolio. It's cooler when these projects are made not for themselves, but in freelancing - for someone.
After the first projects, it is already possible to do a resume and send it to all companies where there are Jun 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 experience will give you the opportunity to get into the company more and more interesting.
Valentin Dombrovsky: By the way, we are preparing students for the courses so that they have their own project in 10 weeks of study. Plus we train the skill of team development. These are exactly the soft skills that Zlata spoke about.
Alexey Shtyrnyaev: I will say from experience that you can search for the first job for a very long time. When you are looking for a month or two, this is normal. If you are submitting a resume to all companies, go to the interviews, in the third month you will definitely find something.
Valentin Dombrovsky: You can cut your projects or take simple projects in freelance and simultaneously send out a resume.
What prospects does the Python developer have?
Zlata Obukhovskaya: Python-developer can go anywhere. You can go to the test, continue to develop to the 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, the mass of options, opportunities, too, including our courses. There is not much need for knowledge at the entrance, but then it is desirable to cover a wider range, because the more you can, the better for you.