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.
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 frontend, 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;
- 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 backders of different levels: in the office of a conditional social network or a large announcement site, a backend developer must not only have basic skills, but also work with high loads, microservice architecture and containerization (Docker, Kubernetes), know 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.).
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
But there is also a basic set of requirements that a backend developer will see in almost any job.
- 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 many 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)|
|C ++C #GolangSQL.NET||PhpPythonJavaJava spring frameworkPostgreSQL||PhpPythonJavaPostgreSQLJava spring framework||PhpJavaPythonPostgreSQLJava spring framework||PhpJavaMySQLPostgreSQLHighly 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 (and not “get out” “).
- A responsibility. Indeed, the back-end is responsible for literally everything: that the data is preserved, that the relational tables work as it should, that the time zones are taken into account, that the site is smart, etc. And if the curve navigation from the front-end leads to a couple of malicious cries of users, then a back-end error can be very expensive – in the literal sense (for example, if business data for some reason ceases to be saved or the separation of access rights to some CRM- does not work) system).
- Attentiveness and attention to detail. Again, there are no trifles in the backend, so you need to carefully design the connectedness of the work of all components and not miss anything.
- Disability. Procrastination is a dangerous enemy of the back-end, it must be able to work concentratedly, sometimes in extremely tight deadlines, so please “cut the code with slack” in a pet project or already in a team lead (there are enough other tasks there).
- Logical thinking and analytical mindset. It is understandable.
- Ability to bring things to the end, focus on results. The result is important in the backend – a correctly and expectedly working application.
- The ability to switch to macro tasks. It often happens that you need to leave the code for one part of the project and implement a rather large function. This is not easy, because the programmer is already immersed in architecture and logic. The ability to switch without any problems for tasks is practically a Jedi.
- Planning and execution skills. The backend of any project is a collection of diverse tasks. And if you are the only back-end of the project or you have poorly implemented the division of labor with your colleagues, only planning will save you from rummages, fakaps and failure of deadlines. Strict planning for yourself and time is the key to quiet work with virtually no processing (which backenders happen more often than others).
- Teamwork skills. You will need to interact with a single development team for a single application, which means discussions, but not conflicts, refactoring, but not insults, upholding your position, but not boycotts. If an evil introverted back-end does an excellent job, commits and rinses his hands, users will not be able to evaluate his work for a long time – because you need to “assemble” the project as a part of the whole team, and not fence yourself off on the principle of “no front foot”.
The need for knowledge of foreign languages
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.
- If you can become a front-developer after a non-core university (construction, design, economics, etc.), then a back-end is much more complicated. The ideal educational foundation for the backend developer is mathematical, physical, and IT education proper. They provide an excellent base for understanding algorithms, functions, patterns, computational processes, etc.
- The situation is also sadder with the courses – you can start learning some language (for example, PHP or Java) and even make some full-stack mini-project, but only real-life experience will give a full understanding of the functioning and interaction of all components, because the backend has too many details and pitfalls (even despite the cool development tools).
- It is for the backend that the best educational way I see is the study of the basics of the server language and the path from the trainee in a company where there is a mentor / mentor by profession. On a real project and narrow tasks, you will quickly understand what’s what.
- No one cancels small open source projects that you can commit to.
- And, of course, there should be a website (pet project), which will become the main training base. The path ahead is not the easiest, so choose the topic that, in addition to the development itself, it will be interesting for you to develop. For example, if you are fond of sports and a healthy lifestyle, develop a diary application with counters, connectors to some sensors, achievements, etc. It will be useful and exciting (and sometimes commercially successful startups grow out of such side / pet projects).
Top Books and Learning Tools
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.
- Robert Martin “Ideal Programmer”, “Clean Code” – a translation book from Peter is good, but in the original style and jokes are generally incomparable.
- Martin Fowler and the team of authors “Corporate Application Templates” is an “adult” book for javists, but it will not hurt for any server language as a collection of insights and cool finds.
- Free courses and videos, which are infinitely many on Youtube in Russian and English. Just listen, repeat, organize knowledge. For starters, anyone will do, very soon you will learn to distinguish cool things from amateur ones.
- webref.ru – a very cool site for web developers, understand, learn.
- codecademy.com is an interactive site for teaching development in different programming languages in English, from the lowest, zero, level.
- 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.
- The standard way inside your stack: junior with monosyllabic tasks and queries, middle with deep programming skills and excellent stack skills, senior with design, architectures, high loads and other kubernetes, team lead with managerial skills etc. This is a good corporate path within which you can change companies, projects, industries, grow and be in demand.
- Switching to another stack and leaving the web: it is often the backend developers who master Java, C / C ++ and go to the “bloody enterprise”, desktop applications, development of development tools, neural networks, computer vision, etc. Indeed, it is easier for a backend to master these difficult technologies and YaP.
- Transition to full-stack development: the back-end is closer to the full-stack and you can make such a transformation completely unnoticed.
- Transition to DevOps, DevSecOps, information security – when you know web applications from the inside out like the back of your hand, this path turns out to be logical and very profitable.
- Transition to managerial positions if there is a desire and a penchant for managerial tasks.
- Freelance and its software agency – for the brave and moderately gambling guys. You can make good money on outsourcing development (especially if you go in the direction of full-stack development).
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 in legacy support, but in the fact 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. Means
▍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.
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.