📜 ⬆️ ⬇️

Full interview with the dean of the Python faculty at GeekBrains - how and why to learn the language to beginners

image

Yesterday we published the first issue in the “Who works in IT” cycle. For him, I spoke with two former students and the dean of the Python faculty at GeekBrains . When I “edited” the stories into one story, it was a pity that a lot of things remained to be in the drafts.

Therefore, today I am posting a complete transcript of the interview with Alexey Petrenko, the dean of GeekBrains - almost without editing and taking it out of context. Perhaps it will be even more applied, useful and concentrated than the main issue.
')
Here is what, for example, remains behind the scenes: Why is Python no worse than other languages? What frameworks are worth watching besides Django? Where is it better to learn to write - in a modern IDE or in a notebook? What sites and books should learn on their own and much more.

- What are Python developers doing now?

- A Python developer can do a lot of things - from simple scripts to analyzing data and building neural networks.

Speaking about development, this is a backend for web servers. The hidden part of the Internet, the one that ordinary users do not see. Server, its logic, interaction with databases.

“Is Python no worse for server development than other languages?”

- Actually, no, not worse. For example, a C developer spends a lot of time writing code. This is the grandfather language. C # is easier and faster to write - but this is the brainchild of Microsoft - they promoted the language for the Windows system. But Java is universal ... In fact, one can argue which language is better.

Python has a low entry threshold, it is very easy to learn the basics of programming. Python is an interpreted language. Accordingly, if two identical programs are written on Python and on C, then on Python the program will run slower. He has a very large audience, an extensive library, plus many external libraries that developers around the world are making. And due to this, it becomes a language that is suitable for everything.

- Maybe it is that knowing Python is easier to get on specific professions, such as AI and analysts, and the usual backend guys with Java will take more readily?

- If we look at the statistics a few years ago, the PHP language occupied 80% of the backend of all servers. But PHP is starting to lose ground. Python on this wave has released various frameworks for web development, and the most popular of them is Django. It is gaining popularity, and many employers are looking for developers who know this particular framework.

There is always competition. But an aspiring student must understand that he would not devote himself entirely to Python or Java — in any case he will find a job.

- Studying Python as a first language is a good solution?

- I think good. 20 years ago, my first language was BASIC. And then it seemed to me how fun and easy to program on it. When I first saw the Python syntax, the first thought was: “it's the same as a BASIC, only cooler”. He gives the same sensations - easy, fun, everything is instantly clear. That is, Python is the best language for the first.

- Because of simplicity?

- Yes, because of the simple syntax. He forgives minor developer errors, as opposed to compiled languages, where, if sealed, the program is no longer compiled.
Although I hope the developers will not hope that the interpreter will correct all their errors.

The most important thing that the developer understood was that after a light base, you would have to make an effort to master more serious aspects. Libraries and frameworks that make Python even more cool and advanced language.

- How much is this complex and voluminous knowledge - syntax?

- In the basic configuration of Python lies about 70 functions (but even a cool programmer does not necessarily use all of them) and a few dozen reserved words. That is, to learn a hundred words and understand what they are doing, you can spend one to three weeks if you wish and work actively.



- Dynamic typing is not a minus?

- Dynamic typing has opponents who were initially taught at the university to write in C, they were injected that this is the basis of all languages ​​and everyone should be aligned with it. Therefore, they are extremely negative about dynamic typing. In fact, dynamic typing is more plus than minus. It speeds up development.

But if you are used to static typing, then the language has the ability to prescribe the types of variables that you use. Typification will remain dynamic, but you can realize your habit.

“But now Go and TypeScript are gaining in popularity due to strict typing.

- Yes it is. But languages ​​always appear and disappear, and Python has been alive for 30 years and still continues to gain popularity. Go language is young and good. Maybe he will develop, and maybe we will forget about him in a few years.

If we compare the programming language with a reservoir, then, for example, the C language is the ocean. You dive off a cliff to a great depth, and you either swim or drown. The language of Python is a beach with clean sand, where you can go far, calmly swim, and if you understand that you want to move on, then behind a beautiful beach there is a huge depression in depth comparable to C and Java.

- Knowing Python, is it difficult to switch between professions, where is it used?

Python has a wide library. If you suddenly realized that you do not want to work with sites and backend, but want to go into artificial intelligence, then knowing the base, you need to spend several months to pull up the math and study several additional frameworks.

A similar situation with big data - you need to remember the course of statistics, analytics and look at two or three new libraries. That is, labor costs significantly reduced if you already know the language.

- What is more difficult?

Analytics and big data are programming plus math. If there is a predisposition to it, then why not engage in neural networks, recognition systems. If you just like to program, but not at a high level, then it is better to write servers. They also need mathematics, but at least not the highest. No integrals or factorials. Elementary addition and subtraction.



- What you need to know before entering courses?

- It would be good to know in advance whether you like programming or not. I would advise you to try to write a few programs, try free lessons. It is better to understand what a variable is, how to add two variables together.

- If a person has not even begun, where and how can he understand this?

- We have free intensives on the basics of programming and variables. There you have to write in Javascript, because in any modern browser there is an interpreter, you don’t have to install anything.

With Python, Java and other languages, it is a little more difficult - you need to install a development environment. But if you understand that you like it, then why not. You can spend ten minutes and slowly become a programmer.

- How to study so that the course does not become a useless crust?

- One word - practice. If you just watch and listen, nothing happens. For a beginner, the practice will even rewrite the code that the teacher displays on the screen. Rewrite and think how it works. It is necessary to carry out practical tasks - in the framework of the courses, look for yourself on the Internet. If training goes for the sake of employment, then practice is needed all the more. It's hard to learn, easy in battle.

The required minimum practice is four hours a week. Two days under two hours of practice. But I would recommend to set aside an hour a day to write your own code.

- What is better to learn - fundamental things or popular and applied?

- A beginner should understand the syntax. And when - for someone after a week, for someone after a month - a person will say, "I know the syntax and I can write elementary constructions and algorithms," only then it is worth considering where I want to go further. The more you learn, the more you move away from the syntax to individual libraries, design patterns, individual patterns.

The main thing is not to dive into programming with the head, so that there is no riot of magic. When you learn everything for three days, you get porridge in your head.

- What are the subtleties you need to know, so as not to immediately turn the wrong place?

- There is such a standard Pep8 - this is the agreement of programmers who write on Python. It indicates how to write correctly, and how wrong: if you want to write a construction with conditions, then write it in a similar way. If something else, for example, to create a function - then call it in a certain style.

If you want to work in a team and show the code to someone else, if you need to maintain the code in the future, then you must know the generally accepted standard. A beginner should read it together with the study of syntax.

Novice programmers, without knowing Pep8, write a program that also works. But when after a while another person tries to read it, then there are difficulties. Code write once - read ten times.

- Something else? Versions, for example?

- A few years ago a split occurred in Python. There was Python 2.7, and then version 3 came out. The second version is still used, but only in older firms to maintain legacy code. If you get a job in such a company, then you have to learn Python 2, but I would recommend learning the third version. All modern projects and third-party libraries are written for it.

I will give an elementary example. Python third version, the command to display a message on the screen: we write print, open the brace and inside the brackets we pass the text and variables.

In the second version, we write print, no brackets, then a space and a variable. That is, in one case a space, in the other braces. It is not important for a person to understand this, but it is important for the interpreter - a space or a bracket



- What are the best ways for self-education you would call?

- In parallel with the training, you can try to implement your ideas and projects. While you learn the basics, you solve problems and write simple programs. For example, I studied cycles, and why not write a program that prints a multiplication table.

Next you learn the Django framework, which allows you to create websites. Why not just try to write your site, which has long been wanted.

There is still such a site - the Euler project. There is a set of tasks for building programs.
A person who can program can accomplish a task, but if he writes poor-quality code, even a modern computer will solve it for several minutes, hours, or even days. That is, the project makes you think about optimization. Because the correct code solves problems from the Euler project in seconds.

From the book: "Learning Python" by Mark Lutz and "Pure Python". Dan Bader

- What tools and frameworks to start with?

A novice programmer can take for example Flask. It is simple, does not carry extra information, it is easy to master. In fact, this is a small box in which nothing superfluous lies. And she will allow to write the elementary sites.

If you think in perspective, the monster among the frameworks is Django. This is no longer a small box, but a huge box in which lies a lot of things. Gradually understanding all of its capabilities, you can write good scalable sites that allow you to serve thousands of users every minute.

- Packages, libraries?

- I would advise beginners to get acquainted with the standard Python library. These are the modules that are installed on the computer along with the interpreter. In fact, the standard library is so big. that even her study will take more than one week.

Some modules of the standard library will never be needed, but it is necessary to have an idea about them, so that one day you will not begin to reinvent the wheel. All bikes are assembled there.

In programming, such data structure as “queues” is often used. And if a person just learned the syntax, he realizes that there are no queues in Python. Although in other languages, queues are actively used and allow you to solve large volumes of tasks.

But it is worth digging into the standard library, and we find the collections module there. Inside this module is the data structure "queue" and it turns out that it has long been implemented, just a little hidden. It is maximally optimized and will work anyway better than if you write yourself.

- And the elementary things? What IDE to take?

- On this occasion, opinions differ. Some people think that a novice programmer should write in notepad (not in the standard course, but at least in notepad ++).

The idea is that when you start programming, you have to write all the code manually. This will allow to remember the description of structures, basic functions. But the problem is that the notebook does not tell you where you made a mistake. If the novice doesn’t see where the mistakes are, he may despair because nothing works and give up.

Therefore, it is believed that it is better to take a modern IDE. Here we must pay tribute to the jetbrains. They made an IDE PyCharm which has an absolutely free Community version. She tells about all the elementary errors.

- What approach do you follow?

I am for the second approach, so as not to discourage the beginner from writing code. When the code works, there is a desire to develop further. But if you saw a mistake, figure out how you made it and how to fix it.

Although, to be honest, he himself began with old notebooks.



- What should be the minimum level to get a job?

“My experience at Geekbrains shows that some students find a job before they complete a one year course.” It all depends on how the student studied, what was his motivation, how actively he invested.

If we talk about the skills that the employer wants to see at the server developer, this is an elementary job with syntax, knowledge of how sites work, the backend, Django. The programmer must know how to write code faster and more correctly.

I would also add teamwork and database knowledge, Because any backend of any site is inextricably linked to the storage of information.

- What money can you expect at the initial level?

- Depends on the region. Someone get behind 40 thousand as a beginner, someone can and over 100 thousand. Watching how to manifest itself. To do this, you need to prove that you can write not only the code, but also understand the architecture, you can sketch a whole project outline, modules, services, and patterns of their interaction.

- Probably, this is a rarity among beginners?

- We go through the design in the fourth quarter, almost at the end of training.

- How much do you need to swing at work to make a level-up?

- Up to the middle, you can pump for a year of study in Geekbrains. There are required courses and additional. The student himself chooses when to take them, but the basic and additional courses must be completed completely in order to honestly call himself middle. That is - the year of the main program and another half a year parallel.

- Who then is a signor developer?

- This is a man who has a wealth of experience. This is the one who understands different frameworks, is able to scale tasks, to understand what resources they require. A person who does not reinvent the wheel. Who on own experience understood all aspects and nuances of work.

- If you meet a man who did not know anything three years ago, and now he calls himself a signor, what will you think?

- Why not. Depends on the firm, aspirations and skills. If a person is gifted, then I will believe. If he says that he knows Python, and not Python, then he probably still pierced.

- And if you are not so genius, then how much should you experience on average?

- If a person is not purposeful, then he can comfortably work at the middle level for five and ten years. Perform the amount of tasks that give, get pleasure from it.

- That is, the middle is just one who does not take responsibility?

- Yes, the signor is ready to take responsibility for decisions, to lead the teams. Let's be honest - there are leaders, there are slaves. Someone is willing to take a chance, to take part in a startup, and if he shoots a year later, the person will immediately call himself a director, a signor, and anything else.

And there are programmers who just like to program, but they are not ready to make global decisions.

“It sounds like the graduation of the junior middle signor is not exactly about language skills.”

- This gradation is generally conditional and differs from company to company. If absolutely elementary - the junior is a person who knows the syntax. Middle - knows all the additional libraries, frameworks, knows how to use it all. Signor - not just knows how to use, but has extensive experience in the development of different things.

- What kind of work to look for in order not to be disappointed right away?

- We must immediately make a note in my head: "If nothing happens, I will not be upset." It is worth practicing freelancing or doing joint projects while studying.

- How at the interview not to lose face?

- First, do not be silent. If they give you a task that cannot be answered right away, then talk out loud, show how you think that you are able to move towards a solution. At interviews can give elementary questions. The students told us how they were given tasks, which we and them dealt with. That is, do not listen past the ears courses

The main thing is not to despair if the first interview was unsuccessful. Going to two or three interviews will notice that the questions begin to repeat. And then you yourself will choose where to get settled, because at three regular interviews once you go everywhere.

- For what questions would you understand that this company is better to run?

- Perhaps, if they show the code, and you will understand that it is unreadable. There is a so-called “spaghetti code” when you have to read not from top to bottom, but jump in lines. If such a code is shown, then they either specifically try to ruffle it, or actually write like that. It’s better not to work with these guys.

- And if you do not see the code?

- In addition to general issues should be the task of writing code. Even if on paper with pencil - this is normal. But if you came to the interview of the programmer and did not receive a single question about programming, then you were either interviewed by an incompetent person, or you would do something non-programmer at all.

Programmers need to be checked for programming.

Source: https://habr.com/ru/post/454182/


All Articles