Profession: Backend Developer

There is no reason to stop - 
I am walking, gliding.
And in the world there are no such peaks,
What can not be taken.
V. Vysotsky


If this article was not published on HabrĂ©, but in an educational magazine, I would start it like this: “Remember the sites you like, which have convenient navigation and a nice interface. But did you know that this is only the tip of the iceberg ... ” But probably everything knows on HabrĂ©, therefore, no lyrics. The backend of any web project is a complex system that allows the application to work quickly, to search efficiently, to quickly give information to the user, to safely and safely store data and, if necessary, work with other external systems. It's like a Swiss watch: they buy it for style and nameplate, but connoisseurs know that under the restrained dial lies the magical world of the clockwork. And backend developers are magicians of mechanisms, organisms, intestines, viscera, or as you call it in web applications. Eh, without lyrics it was not possible! 

In short, today we are analyzing another profession in the series "Profession ...". So, what if you go to the backend developers? 


The backend is always a little pain

Who is it?


Speaking academically, a backend developer is a programmer who is responsible for the internal and computational logic of a website or web application, as well as other software and information systems. Strictly speaking, the backend is not only for web solutions, it is available for both desktop and mobile applications, as in fact, the backend is all that relates to the hardware and software of the service. But historically it happened that the backend and frontend began to be especially clearly distinguished precisely in web development. And since this is also the most popular sphere at the moment, then we will talk specifically about the web (for the desktop, many theses will also be valid, but we'll talk about mobile developers in one of the issues separately).

The backend developer creates components and functions that are accessible to the user of the application or site through the interface. Simply put, backders are programmers who develop everything that the user does not see and does not directly touch. That is, a beautiful data entry form or basket of an online store is a front-end, and storing data in a DBMS, a bunch of registration form fields and a basket, integration with a payment gateway, automatic letters, loading and updating content is all a backend. Therefore, if the registration form began to give a database error, the fault is ... the tester :-) (why - we will also tell in the next series).

What the backend developer is responsible for:

  • ensuring the correct operation of all the functions of the site and its computational logic;
  • organization and work with databases through DBMS;
  • development of basic logic and application operation algorithms;
  • API
  • necessary integration with external services;
  • testing and debugging applications and individual components.

In general, the brain and blood of the site are on the conscience of the backend developer. Just do not need to think that this is the god and king of all development, and the rest of the participants in the process freeze in anticipation of his actions - this is not entirely true (well, almost).


Frontend developers paint the lamp yellow and rub the backend so that the lamp works, but only in the daytime.


Backend developers are amazed at where everyone got their problems with these bulbs, recalls that he forgot to put light into the database, calms down, and blames the front end.

Where is it needed?


As in the case of front-end development, absolutely everywhere there is a website or application that interacts with the user on the web. It’s another matter that everyone needs back-end of different levels: in the office of a conditional social network or a large announcement site, the back-end developer must not only have basic skills, but also work with high loads, microservice architecture and containerization (Docker, Kubernetes), know the monitoring systems ( such as Zabbix, Grafana), have Scrum skills (optional for specific companies). And for a small online store, a bunch of PHP-Ajax-needed DBMS-some HTML is enough, sometimes even less. It is clear that both wages and requirements for experience are also completely different. 

Traditionally at Habré Careerwe found 444 vacancies of the backend developer, which is almost 2 times more than in the frontend. On hh.ru - about 1800. In general, front-end vendors are waiting for you at workstations, where the site search takes two hours to complete :-) But seriously, the company may have 2-3 backend developers per frontend, especially if we are talking about applications with complex internal logic and business logic (online store, CRM-ERP, corporate portal, etc.).

average salary


We will also look at wages at Haber Career. Take the data for the second half of 2019, regardless of ownership of a particular stack. 
Specialist level
average salary
Intern (Intern)
35 345 rub.
Junior
55 241 rub.
Middle
105 048 rub.
Senior
168 350 rub.
Presenter (Lead)
185 335 rub.

If we compare with the salaries of front-end tenders, the growth is insignificant, from a few hundred rubles to 6,000 rubles. (at the middle). But these are really very average values, a lot depends on the programming stack, additional skills, experience and the main development language. By the way, PHP is in the first place for all levels of the backend developer, and we'll talk about it more.

Basic Professional Requirements


The requirements for the back-end are even more sensitive to the features of the company and its business processes than the front-end. Sometimes it can be very strange at first glance things such as “understanding the principles of the fish refrigerator as an enterprise”, “knowledge of the basics of sales or experience in sales”, “brilliant knowledge of JavaScript, CSS and HTML”. But it looks crazy and repulsive only with the first approach. In fact, the backend developer is really more immersed in business processes, must not only develop the code in accordance with them, but also adjust some things to specific tasks, understand how it works from the inside. If you have never seen a sales funnel and do not understand what kind of garbage it is, you can never develop its logic together with filters, slices and transitions (even if you have excellent technical specifications, it’s difficult to figure it out).Well, in the example with “brilliant knowledge of JavaScript, CSS and HTML” everything is simple: the manager probably doesn’t really trust his other developer and is ready to reconsider his approach to development. This often happens in small companies. 

But there is also a basic set of requirements that a backend developer will see in almost any job.

  • Knowledge of at least one “server” programming language: PHP, Go, ASP.NET, C / C ++, Python, Ruby, Java. In some cases, JavaScript knowledge for the backend (Node.js) is sufficient, but this is more of a plus than a point.
  • Knowledge of API (REST, SOAP - less and less).
  • Understanding the principles of the Apache, NGINX, IIS and other servers.
  • Skills for writing unit tests and covering code with tests.
  • The basics of network security and knowledge of the tools to ensure it.
  • Knowledge of popular web frameworks that can solve the problems of developing a specific application.
  • Skills in writing database queries and database design.
  • Knowing the basics of the frontend is not a plus, but a mandatory point, otherwise it will be extremely difficult for you to design and write an application.

A huge plus for both the resume and your real work will be another set of knowledge.

  • UNIX administration or knowledge of Linux (you can use any one distribution kit).
  • Knowledge of HTTP working principles (caching, authorization, message structure, headers, response codes, etc.)
  • OSI model. 
  • Skills in the preparation and assessment of terms of reference (TOR) is a very important skill that is necessary to collect the most accurate information about software requirements. 

"Yes, go nuts!" - you will say and you will be right. However, I have some good news: the backend development tools change much more slowly than the front end, as well as the requirements become outdated for a long time. So I mastered it once - and read the digests in order to keep up to date with things, but especially not to boil because the flat design has become fashionable, and the product card on your site has been out of trend for two days :)

By the way, there are a lot of good, strong mathematicians among backenders, because backend development is an exact science, and the quality of the result strongly depends on how verified your chosen and applied algorithms, patterns, cycles, functions, etc.
Intern (Intern)
Junior
Middle
Senior
Presenter (Lead)
  1. C ++
  2. C #
  3. Golang
  4. SQL
  5. .NET

  1. Php
  2. Python
  3. Java
  4. Java spring framework
  5. PostgreSQL

  1. Php
  2. Python
  3. Java
  4. PostgreSQL
  5. Java spring framework

  1. Php
  2. Java
  3. Python
  4. PostgreSQL
  5. Java spring framework

  1. Php
  2. Java
  3. MySQL
  4. PostgreSQL
  5. Highly loaded systems


+ OOP, frameworks

+ OOP, frameworks, Docker
+ highly loaded systems, OOP, frameworks, Docker
+ Linux, OOP, frameworks, Docker
Top 5 technologies that are in demand among specialists according to “Habr Career”, the second half of 2019, the bottom line is “additional” skills.

The principle of forming the list: users, entering data on wages, indicate the skills that they have priority (what they can do!). That is, these are not the requirements of the employer, but the skills of specialists in each category.

As you can see, companies are ready to take interns with basic university C, C ++ and C #, but in the future they prefer specialists with a “working set” of a back-end. Pay attention to the interest in containerization and heavily loaded systems. 

By the way, here’s another roadmap for you, but already for the developer's backend(The others are also on the site - in my opinion, this is one of the best and most systematic that I have seen on this topic). Look, print and forward to the tops of the backend. 


Important personal qualities


The back-up is good, it can be an introvert :) Its area of ​​work with users is minimized, basically, all working contacts with managers or colleagues. These guys often work on TK and do everything as it is written in the document or in such a way as to obtain a state that is as close as possible to the target (TK, you know, are also imperfect, or even not at all ...).

However, there is a set of qualities, without which you should not think about the direction of the backend. They may seem to you something like the qualities of an employee that a “young dynamically developing team” needs, but no, it’s about internal imperatives that will help not only do the job well, but also do it with inner comfort (rather than “get out ").

  • . , : , , , .. , — (, - - - CRM-).
  • . , , .
  • . — , , , « » , , - ( ).
  • . .
  • , . — .
  • . , . , . — . 
  • . — . , , . — ( ).
  • . , , , , , , , . , , — «» , « ».


Here is what was written for the front-end developer.

For any programmer, an English of at least upper-intermediate with a bias in technical English is highly desirable. So you can read in the original the numerous recommendations of Google and other companies for optimal development (a lot of useful documentation!), Self-study with the help of foreign lectures, communicate with colleagues in forums, ask questions, and also read books on usability and design, among which there are very many cool English-language and not yet translated editions. 

The same is true for the back-end, even more so. In the comments to the previous article, they noticed that the level of upper-intermediate is too big for an IT specialist, enough lower. I judge by myself and by the level of textbooks. Let's just say that from intermediate to upper-intermediate the step does not look like a catcher and the level of “chatting” is taken easily. But from upper to advanced - the abyss and the complexity and vocabulary. However, if you read the rules and understand that you are reading at a different level, no one will take you to take the exam, use it. 

Where to study


In principle, the same technical universities, courses, self-education and corporate universities. But there are important nuances.

  • - (, , .), . - — , . , , , .. 
  • — - (, PHP Java) - -, , ( ).
  • , / . , .
  • open source , .
  • , , (-), . , , , , . , , - , - , .. ( / ). 



It is necessary to choose training tools based on the selected programming language and the current stack at a particular moment. General recommendations are as follows.

  • A basic book on your programming language - I like O'Reilly editions, many are translated by Peter. 
  • Similarly, basic books on your stack. 
  • Cookbooks by language and corporate recommendations, blog articles, etc.
  • Beck Kent, Extreme Programming. Development through testing is a great book for any developer in principle, but especially for the back-end. Getting into the TDD philosophy is expensive.
  • Joel H. Spolsky - you can read his blog, you can still find on the Runet e-book "Joel about programming" - a collection of blog posts in Russian.
  • « », « » — «» , .
  • « » — «» , .
  • , Youtube . , , . , . 
  • webref.ru — , , . 
  • codecademy.com — , , , . 
  • ITc | community of programmers - a car of organized information with courses, lectures and anything else. Read comments, easily determine the best for learning.
  • Programmer's library - a bunch of books on any IT topics.

Why am I focusing on books? Firstly, they are professional, and secondly, they can be conveniently kept at hand, make notes and stick stickers, quickly return to the information you need. This is a convenient and accessible format for the presentation of information for the brain. If you have not tested yourself, be sure to try it, have fun!

The future of the back-end


The future of the back-end is drawn quite clearly and promisingly.

  • : junior , middle , senior , , , team lead .. , , , , .
  • : - Java, /++ « », , , , .. , .
  • -: .
  • DevOps, DevSecOps, — - , .
  • , . 
  • — . - ( -).

I’ll tell you more: if in 2020-2022 you learn SQL and any "backend" programming language, it will be good for you in 2032. And the point here is not legacy support, but that there is no decent alternative to the web yet, and if it and it will appear that the back-end has a much better chance that its stack will fall into place.

The main thing that does not work out for you is to be a poor developer and at the same time count on something interesting. The fact is that each company expects responsibility from the back-end (imagine errors in the code of a banking application, some critical GIS or an online monitoring system - you can immediately turn gray) and a sound approach to work. It is unlikely that it will be possible to filter or say “it is intended” - with all the external invisibility of the backend, the failure in it is most noticeable.

Myths of the profession


▍Backend is very difficult


A moot point. Some developers claim that it is easier thanks to development tools, countless libraries and a low level of dynamism, while others are afraid to approach the backend in principle. However, as always, in the middle: rather, the backend developer stack is diverse and has heterogeneous components, but, firstly, not everything is needed in the project, secondly, it is worth understanding one thing, and now all the relationships are obvious, knowledge strung on a single rod. In any case, you need to try yourself in the backend - even if you turn around and choose a different type of development, the knowledge gained will help you in your work.


▍ Backend developer gets millions


This is generally a common myth about programming. The largest real wages of the Russian developer, which I had to see with my own eyes, is 540 thousand rubles. per month (C / C ++, foreign project, computer vision systems, PhD, remote), the second from it - 400 thousand rubles. (Delphi, udalenka, foreign enterprise, German as native). The rest are very similar to the numbers that I took from the "Habr Careers" for my plates. You will receive millions only if it converges: brilliant knowledge of the language + talent + experience and unique skills in a narrow sphere + project that is ready to pay so much. There are only a few of these guys, and I won’t say that their fate is beautiful: 99% of their lives are work, 1% is a dream. Therefore, it is important to realize another thesis: backend developers are in demand and make good money, better than many specialists. Meansworth a try.

▍PHP - r @ vno, PHP is dead, PHP must die


I love this holivar! But at the same time, I know how beginners are afraid of him and are trying to get around this powerful and in many ways convenient language and its frameworks. The fact is that in the early 2000s-2010s, PHP was an extremely popular programming language for freelancers and other IT luck gentlemen. It says a sea of ​​bad amateurish sites and applications - but not because the language is bad, but because these guys were not able to use it gracefully and competently. From there these myths about "bad" went.

Of course, PHP is easy to learn, livelier than all living ones, hundreds of thousands of projects, design projects and project engineers are written and supported on it and it will live for a rather long time. According to Stackoverflow, PHP is chosen by 25.8% of professional developers. Yes and Octoverse GitHub language is quite stable in the number of projects:


By the way, really good PHP programmers are highly regarded in every sense of the word.

Main tip


There is no better language for the backend, moreover I will tell you that there is no better programming language for anything. Learn the language that you or your future prospective employer needs (you can learn this in advance), then you can quickly and elegantly solve the tasks assigned to you. You should not learn some technology from the principle “everyone ran and I ran.” Then you can become a truly unique, thinking and earning specialist. Which will dictate its conditions, of course, the best. 

Well, are there experienced backends among readers? How is it? Why did you choose this particular development side? Ah yes: → Profession: front-end developer → Profession: system administrator







All Articles