Python for the Web: What a Junior Developer Needs to Know to Work and Grow

We have compiled a brief summary with the main points from the Python Junior Podcast: in it, we discussed where to start and where a novice Python developer can go. Recently, we have had a lot of content for mid-level and senior developers, but this episode is definitely for juniors.

Python for the Web: What a Junior Developer Needs to Know to Work and Grow

Main Topics:

  • What knowledge does a beginner programmer need to engage in
    web development?
  • What do employers expect from developers?
  • What to do to find a job without experience?
  • How can a Python developer progress?

Python Junior Podcast is a programming podcast for those who want to better understand Python. The episodes are hosted by the evangelists of the community MoscowPython and instructors of the Learn Python.

courses. The conversation featured:

  • Valentin Dombrovskiy,co-founder of MoscowPython
  • Zlata Obukhovskaya, team lead at NVIDIA
  • Grigory Petrov, evangelist at MoscowPython
  • Alexey Shternyaev, developer at FinEx, instructor of the Learn
    Python

courses. Why Python is good for web development

Valentin Dombrovskiy: Why is Python particularly suitable for web development? Why not PHP or JavaScript, for instance?

Grigory Petrov: Well, there isn’t much choice. Despite the fact that in modern web development, it’s actually possible to build a single-page application or progressive web application purely with frontend technologies, especially JavaScript, it’s still too complex, poorly indexed, and requires top-notch developers.

If we want to create a website or service, we use a combined approach: we have some backend that handles the logic and creates web pages, and some frontend that renders these web pages in the browser. And when we need to quickly put it all together, there’s not much choice.

Let's consider possible options.

  • C#. Microsoft really did well; they created .NET Core and are actively promoting it. But, first of all, this is a new cross-platform technology, and it's not all smooth yet. Secondly, it’s really expensive, and there are few C# developers—simply because it is not popular.
  • Java. This is complicated. Creating a decent site in Java isn't just 10 lines of code like in Python. There’s a lot of code, there are frameworks, and one needs to know the specifics of setting up Java servers. Overall, it’s just pain and suffering.
  • PHP. In the latest versions, it's remarkable. I would even say that PHP 7.2 is no worse than Python. However, you can't just take PHP 7.2 and use it. If an average, non-top developer is building a website with PHP, they won't be writing solely in 7.2: they'll still have to read some textbooks, tutorials, there's a lot of legacy code everywhere, and that's not very good.
  • JavaScript and Node.js. It's wonderful and very modern when one language is used on both the front end and back end. However, it's not very stable. Node.js is a great tool, but deploying it in production in a way that it doesn't crash and works reliably can be problematic. Plus, if we want to write quality code in JavaScript, we need TypeScript, not just JavaScript. Unfortunately, TypeScript is unexpectedly complex; it can confuse an average developer.

Let's set aside Ruby, Haskell, Erlang, and other niche languages, and we are left with… Python. A language with consistent syntax, a uniform standard library, the best documentation, popular lightweight frameworks, and the extremely popular Django framework.

It turns out that despite the wide variety of options, if we have average, non-top developers and are an ordinary business looking to create standard websites without a 50-person development team, we choose Python.

What knowledge is needed to enter the profession

Zlata Obukhivskaya: I believe that one framework should be mastered well — and it's important to know what other frameworks exist and when to use them. Where Tornado, Django, Flask, aiohttp, and so on fit in.
It’s useful to know that there are protocols. In particular, understanding the HTTP protocol is central to building web applications.

It's also necessary to have at least a rough idea of how the front end is structured in web projects: what is HTML, CSS, and JS.

Alexey Shtyrnyaev: And know where the documentation is located. This is the most important thing.

Grigory Petrov: Here, we step onto very shaky ground. If we weren't lucky and seriously started studying modern front end, it will be about ten times more complex than back end development in Python. A beginner developer needs to limit their focus so they start learning HTML without getting bogged down in all those divs, spans, floats, and how everything is aligned and structured.

Alexey Shtyrnyaev: A basic course on Bootstrap is necessary. And the fundamentals of HTML.

In the first year, there's no need to delve into JS frameworks (if you're focusing on backend). The basic Bootstrap course already has ready-made modules: want a slider — make a slider, want a floating menu — create a floating menu.

Zlata Obukhivskaya: I think that when studying frontend, you can dive into how static content is delivered to web applications in particular. This way, a developer smoothly transitions to learning about how web application architecture works in general and how they operate in production.

Grigory Petrov: Yes, I would recommend it in case you've chosen Python as your backend development language and, for instance, Django as your framework: Django has documentation in the Django Book, which is really great, covering everything Zlata mentioned, and is indeed good for beginners.

Alexey Shtyrnyaev: Also, for a quick start, Django Girls could be suitable if your goal is to learn specifically Django. It's a tutorial where you can go through the basics in one day and understand what the framework is capable of.

Valentin Dombrovskiy: While preparing for the podcast recording, we compiled a list of what a Python programmer needs for web development, summarizing what we've said earlier.

What constitutes the foundation for web development in Python

  • Web frameworks such as Django, Flask, aiohttp, Tornado, etc. (and being aware of other existing ones).
  • 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.
  • Principles of how applications work in production, testing, unit tests, automated tests, version control systems, git.

Do juniors need algorithms?

Zlata Obukhivskaya: Initially, you don't need to know algorithms; they'll gradually come to mind if you engage in development long enough. I know plenty of good engineers who didn't have a solid formal algorithms course.

Grigory Petrov: I want to add fuel to the fire. Where does our craving for algorithms come from?

We currently lack fundamental education in algorithms; we don't know how to train programmers, and there's no technical base.

This is what they try to do, but here we have the Hogwarts story: we can't create a school for wizards without any wizards. So what should a university do when people come and ask, 'Start training programmers,' but there are no programmers because everyone is working at Mail.ru, Rambler, and Yandex, where they are doing well?

At the university, they look and say:
— Okay, programming. Let's find some related fields of knowledge and invite specialists from there. Let's invite journalists who can write text, electrical engineers who can design electrical circuits, and mathematicians who understand algorithms.

In the end, it turns out that this is as reasonable as teaching a builder about particle physics just because bricks and cement are made up of particles.

Meanwhile, they don't talk about cement and bricks themselves because a physicist trying to teach a builder how to construct a house doesn't know how to do it. In the end, we end up with a builder who can perfectly explain how 'cement works' but has never seen it and cannot make anything from it.

Algorithms and data structures are great, but this is a very small applied area. They are critically important, for example, if you're writing a game engine, a compiler, or a network protocol.

Most programmers solve business problems where algorithms and data structures are not needed.

There, the most complex math involves adding twice and then dividing. There, completely different knowledge is required. To solve business problems, applied knowledge is mainly needed, not fundamental knowledge.

It's better for a beginner developer to have an understanding of business and know how to properly and quickly gather the necessary constructs from ready-made blocks, how to debug them, how to ensure they don't fall apart, to know why they break, and what happens when requirements change and the program starts 'settling on the foundation', like a house after rain.
These applied skills and the understanding of how to write software are crucial. They need to know that, besides the debugger, they have a set of tools that will show exactly where the program is slowing down.

Valentin Dombrovskiy: This comparison comes to mind: it is a translation from the language of business to the language that can communicate with computers. In other words, a programmer is a kind of specific linguist.

Grigory Petrov: A business needs a writer, not a linguist. A writer does not need to know why a thousand years ago this word transformed into that. They need to be able to apply these words.

What do you need to find your first job as a developer?

Alexey Shtyrnyaev: There is probably no universal recipe for how to prepare a junior.

If you join a company, it won't be for knowing Django, JSON, and a bit of algorithms. You'll likely be hired for the skills that are needed here and now by that company.

There are many companies, each with different requirements. There is no universal set of knowledge to acquire in order to prepare a resume and apply for jobs.

Grigory Petrov: When we at VoxImplant were looking for several juniors, our technical director formulated the basic requirement like this: a person must be able to solve problems. It’s clear that a junior won’t always do this effectively, in the best way, or correctly, but ideally you assign a task to a person, and they strive to solve it. This is the skill that employers primarily look for.

Zlata Obukhivskaya: People transitioning from other fields have certain advantages from a business perspective because they have already gone through some experience and can 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 attempt to provide some recipe for beginners.

First Steps for a Beginner Developer

Zlata Obukhivskaya: The first thing is to have some personal project because you need something to write in your resume, to show a minimal portfolio. It's even better when these projects are done not just for yourself but for someone on freelance.

After your first projects, you can create a resume and send it out to all companies with junior positions. Interviews will provide an understanding of what companies need. Sooner or later, someone will hire you, even if it's a small company. This work experience will eventually enable you to get into a bigger and more interesting company.

Valentin Dombrovskiy: By the way, our courses prepare students to have their own project in 10 weeks. Plus, we train the skill of team development. This is precisely the soft skills that Zlata mentioned.

Alexey Shtyrnyaev: From experience, I can say that searching for the first job can take quite a long time. It’s normal to search for a month or two. If you're applying to every company and going to interviews, by the third month you will definitely find something.

Valentin Dombrovskiy: You can work on your own projects or take simple freelance projects while also sending out resumes.

What prospects are there for a Python developer?

Zlata Obukhivskaya: A Python developer can go anywhere. You can move into testing, continue to develop to a senior architect role, or even move into management. There are different types of technical managers, and you can rise to top management. You can also develop in data science, DevOps, or delve into automated testing or machine learning.

Valentin Dombrovskiy: Overall, there are numerous options and opportunities, including our courses. You don’t need much knowledge to start, but it's advisable to cover a broader range later, because the more you know, the better it is for you.

***

This is just part of the episode. Python Junior. You can listen to the full episode here..

Or even watch it:

Play video

Podcast RSS

Thank you for reading, listening, or watching.

Source: habr.com

Buy reliable website hosting with DDoS protection, VPS VDS servers 🔥 Buy reliable website hosting with DDoS protection, VPS VDS servers | ProHoster