How much does a full stack programmer earn? What's bad about being a full stack developer? Working with data

We've released a new book, Social Media Content Marketing: How to Get Inside Your Followers' Heads and Make Them Fall in Love with Your Brand.


Fullstack developer is a general specialist. His tasks include independent creation of websites and web applications: from design and user interface to the server part. It is almost impossible to give a detailed definition of the work of a given specialist, what exactly he should know and what skills he should possess. Not every person can perform the functions of full stack programmers.

Who is a Fullstack Developer?

Despite the difficulty of defining the full range of responsibilities, there is a general opinion on how to designate full-stack programmers - specialists who are able to create a full-fledged product from a user interface design pattern that will meet minimal but sufficient (to satisfy the needs of web resource users) functions.

A common joke among professionals is that this person is the one who tries everything at once, but nothing comes of it. Despite the fact that this is just professional humor, there is some truth here: a full stack programmer works alone at all stages of the design and implementation of a project, so he often simplifies a lot, makes mistakes, but, as a rule, always returns to them after testing and launching a web resource or application.

A fullstack developer combines front-end and back-end writing responsibilities. He has a huge number of skills and can tackle a project independently, without involving additional specialists, be it UI or UX designers. In particular, he can:

  • Manage the storage of all information located on the site.
  • Work with HTML pages, images, files, media streams and other data.
  • He has a strong understanding of systems engineering and can apply the scientific, engineering and management skills needed to translate a customer's needs into a system configuration description.
  • If necessary, he can act as a developer of mobile applications or web resources. To do this, he must be able to handle various markup languages, databases, graphic editors, ready-made layouts and templates.

It is worth noting that for a full stack developer there is no need to be deeply professional in all related fields and have a detailed understanding of technologies: firstly, he simply does not need such an array of data, and secondly, it is almost impossible to combine this in one person. It is enough for him to know the basic principles of the programs and also be able to apply them in practice.

Advantages and Disadvantages

First of all, Fullstack developers are able to quickly get to work and create a product prototype in a relatively short time. Compared to front-end and back-end specialists, they have more extensive knowledge, thanks to which they constantly have their own opinion on the issues of the current project - they do not need to seek help from colleagues from other areas of web development. On the contrary, if the team has a full stack, it is able to interact with all project participants, thereby reducing work time and technical costs for communication channels.

In addition to the advantages, there are also disadvantages. In particular, such people are almost never specialists in one thing, unlike their colleagues who have highly specialized knowledge and skills. Of course, they can delve into a detailed study of the subject, but this, as a rule, will not bring them any benefit, since knowledge in only one area is practically useless for them. There is also no clearly defined area of ​​responsibility. That is why, if any problems arise, the need to fix them falls on the shoulders of the Fullstack developer, even if it was caused by another specialist. As a result, this fact is often abused.

How to become a Fullstack developer

A person can be called a professional only if he has a sufficient set of knowledge and skills in working with basic technologies to effectively create web resources and applications.

The first stage of training must begin with programming languages. It is enough to study one in detail, for example, JavaScript, PHP or Python. Most of the projects will be related to them. Of course, not all of them will be in demand, but the user must have basic knowledge of structuring, designing, implementing and testing a project.

The second step is the use of frameworks. Whatever programming language is chosen, it will be accompanied by additional advanced functionality of the open source software platform Spring, Hibernate, etc.

Regardless of the purpose of the project, it will need a database and caching so that it can later store a large amount of various information. The specialist must understand one or more database management systems and be able to use their potential. Recommended DBMSs include MySQL, Microsoft SQL Server, etc.

What does it mean to be a Fullstack developer?

As noted above, a full stack programmer does not delegate his powers to other specialists, but performs the entire amount of work independently. Thus, he has a huge amount of different knowledge.

  1. Server administration. A fullstack developer must have basic server skills. This includes: managing a set of software tools that control and filter passing network packets at different levels; connecting to remote servers through a terminal where there is no graphical user interface; management of cross-platform software Apache HTTP server and Nginx mail proxy server. In addition, he must be able to create the most secure and reliable isolated development environments in open platforms for developing, delivering and operating applications.
  2. Working with cloud PaaS platforms. Hosting on popular web services may be needed at any time when the customer requires switching providers. Some of the most popular platforms include Google Cloud and Azure.
  3. Software and hardware part of the service. In addition to the markup language and software created to combine different components of a large software project, a specialist must be able to work with Nginx and Apache web services, convenient API design (after all, most web resources run on APIs).
  4. Design. Here, the specialist must be able to create a prototype of the project before converting it into a working format. At this stage, a whole set of graphic tools is used: Photoshop or Illustrator editor, Ngrok, etc.

This is only a small part of what a Fullstack developer should know and be able to do. However, there are some nuances here: firstly, many professionals choose only part of the necessary technologies, since it is impossible to take into account every program; secondly, even if knowledge of most technologies does not make a person a highly qualified specialist, he can still independently determine what will be useful when working on a project and what will not be useful.

In the field of information technology development, the developer profession is in great demand. Therefore, the question of earnings, how much IT specialists earn, is of interest to many.

Remuneration in Russia

The average salary of a developer in Russia is: 90-155 thousand rubles. depending on the specialist’s area of ​​work:

  • Java,
  • Oracle,
  • Android, etc.

Salary statistics in the capital (rub.)


  • young specialists in the IT field with little work experience can count on a developer’s salary in Moscow - 40,000-60,000,
  • middles can receive an average of 90,000-120,000,
  • team leads, project managers with 3 years of experience receive 100,000 or more.

Open vacancies in the capital and income from them for work ru (rub.):

  • In LLC PRISCO“Delphi developer required, salary - 70,000-120,000. The applicant is required to have at least a year of work experience, knowledge of Firebird, Delphi, SQL.
  • IN " iCraft Optical New York” developer required Python Odoo ERP, salary up to 120,000. Minimum 1 year experience required. The resume will be reviewed after completing a test task to check the applicant’s level of knowledge.
  • JSC “Business Projects” requires an RHP developer, salary - 80,000-120,000. Any education, work experience of at least 3 years, full time.
  • To the company Aviasales full stack developer required, salary from 2000 in dollars, work on o. Phuket. The required experience of the applicant is 3-6 years. The work is very responsible. This specialist must be open to new knowledge, understand back-end and front-end technologies, design, web development tools and system administration.
  • In LLC Communication systems“Website developer required, salary 50,000 per month. Official registration.

Income in different areas of work (rub.):

Quite a popular profession in Russia - web developer, salary - 2 5 000-150 000 per month.

Average - 52 000.

Also, salaries for web developers vary by region of the country:

  • Astrakhan region — 132 500,
  • Kaluga region — 105 000,
  • Altai Territory - 70,000,
  • Altai Republic - 60,000,
  • Kaliningrad region - 52,500.


Profit in other countries:

  • Ukraine — 4500-55 000 UAH. Average salary — 8,000 UAH.
  • Kazakhstan - 60,000-300,000 tenge.
  • Belarus — 550-4300 bel. rub., on average - 950 bel. rub.


Price list of works, how much on average a web programmer’s services cost for a single job:

  • Design - $200.
  • Banners - from $10.
  • Logos - from $100, but you will definitely need an example. If this is a tender for a logo for a large company, the cost of the work can reach $1000-10000.
  • Creation of a turnkey resource from $450.
  • HTML layout - $90.
  • Content management systems - $350.
  • Web programming - $200.
  • Flash - $150.
  • Online shopping - $750.
  • Promotion, SEO optimization - from $300.

It is worth noting that how much a programmer receives depends on the amount of work performed. If he works in a team, then the profit is distributed between the designer, manager and other employees.

Earnings of specialists working with different operating systems

One of the most popular IT specialties for 2018 is iOS developer, with average salaries in the country in the range from 50 to 200 thousand.


The specialty is considered one of the youngest; the average age of programmers is 25 years.

Among the applicants there are more men - 94% and only 6% women.

67% speak English and only 44% of workers in this field have a driver’s license. The salaries of Android developers are also several times higher than the national average - on average 110,000 rub..

Maximum salaries reach 170,000 per month.

Joint earnings report


Salary statistics by city:

  • Moscow - 140,000,
  • St. Petersburg - 110,000,
  • Ekaterinburg - 64,000,
  • Chelyabinsk - 58,000,
  • Samara - 57,000,
  • Krasnoyarsk - 57,000,
  • Kazan - 50,000.

Data for Moscow

  • Specialists without work experience and students of specialized universities receive the least amount in Moscow - 40-60 thousand rubles.
  • Most of all - 150-200 thousand rubles. are received by applicants in Moscow and St. Petersburg with work experience of at least 3 years and successful experience in various startups.


Average salary for game developers in 2018 on different platforms:

  • Russia - 25,000-100,000 rub.
  • Moscow - 50,000-220,000 rub.

Hierarchy of employee ranks and their income (rub.):

  • juniors - 48,000;
  • middles - 98,000;
  • team leads, managers, presenters - 160,500.

Profit in other popular directions (RUB):


  • Average salary J ava developer in Russia is 125 000 .
  • For a frontend developer, the salary ranges from 40,000-150,000. In Moscow, frontend developer salary on average 110 000 per month. In simple words, such a specialist is engaged in creating a custom view of the site and its template. He must be knowledgeable in different areas: design, layout, programming.
  • Business industries often require specialists who work with the Pega platform. Developer salary from 40,000 to 200,000. Managers of large projects can receive 250 thousand or more.
  • 40-100 thousand rubles. monthly salary Flash- developers, they are also called flash designers. Their main field of activity is the creation of:
    • interactive applications,
    • flash games,
    • interfaces with animation, graphics, sound and other animated elements.
  • Perl- developer has an average income of 95 000 . Salary range - from 60,000 to 180,000 in your arms. The main feature of the Perl language is its many possibilities for working with text.
  • B.I. developer . Salary in Moscow – from 70 000 from Junior BI Developer to 200 000 BI Architect with more than 3 years of experience
  • Developer mobile applications. Salary, as in other areas, depends on the experience and place of work of the employee. Resource Superjob indicates the average salary figure in 110 000 rub./month

Salary levels in the USA

A profession in demand in the United States is a software developer.


Average salary - $73,200 per year, according to statistics from the PayScale resource.

  • Minimum annual salaries - 46.5 thousand dollars.
  • Maximum salaries per year - 107 thousand dollars.


Salaries in large global companies:

  1. Average salary for Software Developer V Microsoft Corp amounts to $ 111 000 per year. At Microsoft, a programmer developer's salary can reach $ 147 000 per year. According to statistics, 80% of employees are men and 20% are women.
  2. SV Amazon.Com Inc average salary for programmers is $ 102 600 US dollars per year. Income range by profession in the company: $ 72 500-153 500 per year.
  3. Average salary of developers in an IT company International Business Machines(IBM) Corp. in 2017 was $85,000 USA per year.
  4. Software developer in Google, Inc.. earns an average salary of $86,000 USA per year. The maximum Google specialists can receive is $ 102 600 per year. For comparison, developer salaries in Yandex: interface developer – RUB 73,500. per month, which is about $15,500 per year.


First of all, let's define the terms. There are many different ideas about who a full stack developer is, some even quite reasonably believe that such developers are a myth, but in this article we will be referring to a developer who has the knowledge and skills to write something from scratch software and put it into production. In this case, the software can be designed for a web platform, mobile applications or desktop ones. An ideal full stack developer is one who to some extent owns all platforms and can develop and install his own software on them. But this is really more of a myth.

Not a bad definition from quora.com

When people are looking for a full stack developer, they expect to see a singing and dancing tech wizard.
Or at least someone who won't complain too much when asked to work outside of his comfort zone.


Perhaps, judging by the title, it will seem to someone that this is a plaintive post that talks about how bad life is for an unqualified schoolchild who got everything from various articles on the Internet. No, the post is not a complaint, we are talking about full stack, not full slack, and at the end the list of advantages will also be considered. And we will not consider a school student, but a developer with five or more years of experience. Let's just see what disadvantages there are in such a development.

Cons

In every single area you are worse than a specialist
Seems pretty obvious, but I'll explain anyway. If you spent six years on one technology, then obviously your knowledge will be greater than that of someone who spent six years working on several. You had more projects, you were more involved in some typical solutions, you read and wrote more code.

It's harder for you to go deeper
A good full stack developer is always heavily loaded. And your time to learn new things is distributed among all the technologies you work with. Naturally, your development is slower than that of a highly specialized programmer.

You are more likely to experience task overload
If you are working on several projects from several sides at once, then even with good time management it will often happen that all projects require increased attention and time. This will have to be solved either by transferring some of the tasks to other developers, or by distributing priorities, or by careful planning. Of course, any developer has the possibility of overload - as you know, in the real world any task needs to be done “yesterday”. But such tasks may suddenly appear in batches.

It's hard to replace you
This may seem like a plus to some - it’s difficult to fire you, you are loved and appreciated. But the other side of the coin is the inability to transfer tasks, calls at any time of the day, problems with going on vacation, difficulties when trying to do something else.

You do not have a clear area of ​​responsibility
If there is no water in the tap, it means the full stack is to blame! No matter what problems arise, no matter what bugs appear, most likely, you will have to deal with them, even if the problem should actually be the responsibility of another developer. It’s just that your picture of the world is much more complete, and you can localize and correct the error faster. Unfortunately, this is often abused.

“Oh, give it to him - he’ll figure it out!”
In a situation where it is necessary to deal with bad or old code, you will most likely be involved. It’s especially sad when an employer wants to save money by hiring one developer for the entire project. And you open it and realize that it’s easier to throw it out and rewrite it entirely.

You don't know all the library sets
This follows quite obviously from the first point, but I would like to mention it separately - if only because vacancies often require experience working with specific libraries.

You don't keep up with all the trends
Again, this follows from the first point. For some reason unknown to me, they often look for a developer who can perfectly implement something that was released six months ago. Alas, you cannot simultaneously know and be able to use ES6, talk about the differences between the latest version of Symfony and the possible problems of migrating from Oracle to Tibero at the moment. You may have read about it, but just didn’t have time to try it.

You don't always write optimal code
Most likely, your code is clear, well organized and commented. But surely a more qualified specialist could have done it a little better. Another question is that this is usually not critical. It’s really bad if the mess of languages ​​in your head forces you to use approaches and solutions that are in no way suitable for the current project. It's terrible to see how some even write functions that would be similar to the implementations they are familiar with in another language.

Do you often look at manuals?
Even functions for working with strings look different in all languages, let alone anything more complex. If you often switch between different technologies and languages, then most likely you will constantly have a manual hanging on your computer that you peek at, which of course somewhat reduces the speed of work.

You may start to envy the salaries of specialists
If you start looking for vacancies for your most expensive skill, you may be disappointed - specialists with extensive work experience can receive very good money for it. Let's be honest - you don't have such experience working with a specific technology. But even if you delve into this technology and gain the necessary knowledge, would you like to continue doing just this for the rest of your life? For example, administering the Oracle DBMS?

Disadvantages of employment

Separately, I would like to mention the difficulties that occur when changing jobs.

I will call you to work using random keywords in your resume
HR does not look closely at the fact that you worked on this technology on a small project three years ago. He saw a word that looked like a vacancy that needed to be filled, made a stand, and is trying to place you there at any cost, without being interested in your desires and current preferences.

Full stack full stack
No matter how broad a specialist you are, it’s unlikely that you’ll find a place to work with exactly the same technology stack. It happens, but extremely rarely. However, the intersections are often quite large, and nothing prevents you from improving what is missing and expanding your horizons even more.

They don't believe you
Yes, this is such a funny and real problem. If you put too many things on your resume, then they simply won’t believe you and won’t even try to check or ask about the level of knowledge you have. Therefore, no matter how funny it may seem, the best way is to ruthlessly remove from your resume all information that you consider irrelevant for your future. Better yet, tailor your resume to each vacancy.

It is more difficult for you to find a suitable vacancy
Fullstack developers are rarely sought out, and it is not always possible for an employer with such a vacancy to compete with a highly specialized vacancy in terms of conditions. And the question arises - what keywords to use when searching for a vacancy? If you are, say, a Java developer, then you simply specified Java in the search and started clicking. But full stack is a little more complicated. Usually the problem is solved by subscribing to several different filters according to the words that are most interesting to you - or simply selecting by the desired salary level. The latter does not always work, because to my great bewilderment there are still a huge number of vacancies without any indication of the salary scale. Apparently, HR is afraid that then everyone will want the described maximum? Strange. If anyone knows the arguments in favor of such a recruiting strategy, please provide them in the comments.

Pros

Now, finally, about the tasty stuff.

You can choose who you want to work with next
It's much easier for you to change orientation (pardon the ambiguity) than for a regular developer. You see a lot in application, you can figure it out and understand what interests you. Yes, you will have to spend time going deeper - but it will be time well spent. Yes, you will most likely have to start several pet projects to try everything you want. But again, this pays off handsomely.

You burn out less
If you have the opportunity to periodically change projects, then you will get much less tired of using the same thing. Of course, unless you're a hardcore fan and don't enjoy just writing everything in, say, vanilla C or asm.

It’s easier for you to grow into a team lead or architect
A fairly obvious plus - the more you understand the general structure, the greater your chances of growing into a leader. Of course, if you have the desire and communication skills.

You can debug anything
An obvious plus. Your systems thinking has reached a level where you can fix anything, anywhere.

Work is more fun, interesting and educational
In one day you can gain many new skills and knowledge in completely different things.

Alone, you can create wonderful things at the intersection of different technologies.
You alone can do what the standard approach requires 3-4 people. Program a microcontroller for the Internet of Things that communicates with a web server, writes to a database, and data from which can be viewed on a website, application or mobile device? Easily! You alone can imagine the entire system and implement it without agreements, misunderstandings and delays.

Your solutions work faster and more reliably
By understanding the interaction of different systems, you can choose better ways to combine them. You understand each component better and are not afraid to use it. As an example, let’s take “clueful technologies” (the moped is not mine, it was mentioned in publications). In general, the cloud is a wonderful way to solve a huge number of problems, including scaling problems. Unfortunately, I increasingly see that cloud solutions are used simply because the developer does not know how and is afraid to solve his problem in some other way, but presents it as an additional plus. And a lot can be done much cheaper and better if you have at least a superficial understanding of the issue.

You can use almost any source
In a world where practically any applied problem has already been solved, spending time on writing another bicycle is simply a crime in relation to the duration of your life. Now you can take any repository in any language and use it as a starting point for your solution. You will fly with a fresh breeze over the rake that thousands of other developers have collected before you.

You're getting Zen
Now you know that there is no development language that is better than the rest. You know there is no best database. You may assume that some tool is better suited for your purposes... but you are quite willing to use alternatives if there is some reason for it, for example, the qualifications of other developers. You no longer write articles about synthetic tests created to show the advantages of one technology over another. You know that a five percent increase in productivity is probably not worth two of your man-months. And you can finally spend the time freed from holivars on something useful. For example, to establish a relationship with a girl (for example, let’s call her Katya). You now understand that technologies are different, that people are different, and you just need to find the right way to connect everything together. You love the world and

Controversy over the definition of a "full-stack developer" not only causes heated debate online, but also leads to inconsistency regarding how to evaluate, attract, and hire such developers.

And while it would be easier to simply push this discussion to the background, the term “full-stack developer” will not disappear. Demand for professionals with these skills has increased by 198% in the past year alone. In addition, most developers from all over the world use these words to describe their type of activity (according to ours).

In this article we will try to explain why there is confusion regarding the name of this specialization and will present the point of view of each side. We will also help recruiters and hiring managers agree with the team on what is meant by “full-stack” and what skills they need.

To better understand the current controversy surrounding the term "full-stack developer", we'll look at where it all began.

The birth of a full-stack developer

The term "" came into fashion not so long ago. One of the earliest mentions dates back to 2008, and the first search for “full-stack developer” on Google did not appear until 2010. Since then, the popularity of this query has begun to grow.

“Full-stack developer” has been in Google search trends since 2004. The rise in popularity is reflected in different spellings, such as “fullstack developer” and “full stack developer”.

But if this type of activity existed in some form in pre-Internet times, why don't we see the term increase in popularity until the early 2010s? It turns out that the answer to this question requires a short historical excursion.

Story

Late 1970s/early 1980s

Before the Internet, before the mobile era, usually one person was involved in writing a program from start to finish. He also worked on hardware. The separation of purely programming responsibilities was rather rare.

Late 1980s/early 1990s

The client-server organization is coming to the world - groups of programmers begin to collaborate to create applications. Teamwork is becoming the new norm.

Late 1990s/early 2000s

The Internet is “coming” - technologies are becoming more and more specialized, and accordingly, the people involved in them are developing a narrow specialization.

Mid 2000s

Development is becoming very expensive due to the difficulty of managing a large number of specialists involved in one project. On the other hand, web 2.0 sites are becoming more understandable and well-functioning.

Late 2000s

Related technologies are being simplified to the point where many programmers can once again create applications and websites from start to finish. The official birth of the term “full-stack developer”.

Early 2010s/present

The rapid rise of more complex technologies has led to the stack becoming more "layered". It has become more difficult for developers to maintain knowledge at the appropriate level. Front-end and back-end specialists are starting to appear. “Full stack” development takes on a new, broader meaning.

According to the history of the term, "full-stack developer" first gained popularity in the mid-2000s, when simpler and more streamlined technologies allowed many developers to complete projects completely. This approach was diametrically different from that of the late 1990s and early 2000s.

Over time, the shift towards more complex technologies and more layers in the stack (early 2010s) led to a new division of roles. Backend and frontend work is becoming increasingly separated, leading to the popularization of the terms “frontend developer” and “backend developer.”

In response, during the same period of time, the term “full-stack developer” also gained popularity. This is due to an attempt to highlight developers who do not fit into the binary system of frontend/backend specialists. Instead, they position themselves as a third breed of developer who can handle both front-end and back-end responsibilities.

But, of course, not the entire tech community agrees with this interpretation. Although it is difficult to say when these disputes began, two events acted as a catalyst for them. The first was a post by former Facebook engineer Carlos Bueno from 2010 about what a full stack is. The second event was when Lawrence Gellert heard a Facebook employee say at a conference that the company only hires “Full Stack developers” (2012).

What do we have as a result? Heated debate regarding terminology still lives on, almost 10 years later.

The cons of being a full-stack developer

Members of the anti-full-stack developer camp dominate the debate about what a full-stack does (or doesn't consist of). In short, their argument revolves around the idea that a full-stack developer is someone with “the ability to easily manage backend and frontend at a senior level.”

While there are some variations to this idea, this camp believes that full-stack developers should be able to:

  • Write first-class front-end code at the same level as a narrow front-end specialist.
  • Write equally excellent backend code at the same level as a backend specialist.
  • Manage server infrastructure.
  • Understand non-technical project management and business requirements, on the basis of which you can coordinate your work with the product.
  • Monitor the work of QA, DevOps and security-related issues.

And while this group recognizes that many developers can perform some work within both disciplines, they believe that few people can do it equally Fine. In short, they consider a true full-stack developer to be a unicorn of sorts. And people who call themselves full-stack developers (and there are too many of them) do so without having the appropriate qualifications.

The claims of this camp regarding the term “full-stack developer” boil down to the following points:

  • This is a way for companies to place unrealistic demands on employees. This allows them to load one employee with a huge number of responsibilities, which is beneficial for the company, but the benefit comes at the expense of the employee. Companies want to get a lot of work done and a lot of experience at a low cost (compared to hiring several specialists).
  • This term implies a general level of experience that most developers do not have. A true full-stack developer must be “dual proficient” – both in the front-end and in the back-end – and this is impossible given the speed of technology development. When someone calls themselves full-stack, having less than that level of experience, this is an unreasonable use of the term.
  • This encourages broad but superficial knowledge. A full-stack developer can never immerse himself in either the backend or the frontend. A developer who tries to cover the entire stack is “a Swede, a reaper, and a pipe player,” and he does not achieve mastery in any area.

Representatives of this camp agree that there are very few true full-stack developers. However, they tend to believe that people who define themselves as full-stack are actually front-end developers with some back-end knowledge (or vice versa).

The case for being a full-stack developer

The full-stack camp, in turn, advocates for a broader understanding of this term. They reject the idea that a full-stack developer must have equal proficiency in every layer of the stack. Instead, he needs working knowledge of the entire stack and expert knowledge of several of its layers.

The definition of full-stack, with a less restrictive set of requirements, describes a person who is able to:

  • To a certain extent, have confidence in writing both front-end and back-end code.
  • Generate a minimum viable product on your own or with a little help from others as needed.
  • Be an expert in multiple technologies.
  • Show at least a basic understanding of technologies not specialized in.

In other words, from this point of view, a full-stack developer does not need to be an expert in all layers of the stack. Instead, he must be an efficient and experienced generalist. This should be a person with a broad base of knowledge, his own specialization and a willingness to admit the lack of deep knowledge in what he does not specialize in.

There are several key considerations in defense of the term "full-stack developer":

  • A good developer does not store his knowledge. Most developers work on either front-end or back-end. But to be good at any of these areas, you need to understand both. Drawing a rigid distinction between them discourages developers from learning anything outside their own specialization. But in a sense, the boundary between backend and frontend is artificial.
  • Companies need generalists. A specialist may not always suit you for all business purposes. Small companies and startups with limited people and funds need developers with extensive experience and a variety of knowledge. Large companies are more likely to delegate work to individual specialists, but they can also attract full-stack developers in the context of project management.
  • Full-stack developers build bridges between the frontend and backend. Developers who specialize in one of these areas occupy their own niches, but full-stack developers help bridge the gap between them. Because they understand both sides, they can identify problems and opportunities that may escape the attention of a specialist.

These arguments prove that full-stack developers do not replace, but complement the work of front-end and back-end specialists. Their value lies in their ability to understand and work with the entire project, and to apply general technical knowledge to everything they deal with.

This philosophy can be summarized by a quote from The Pragmatic Programmer:

“The more you know, the more valuable you are... the more technology you know, the better you can adapt to change.”

Common denominator

For those of us who, amidst the debate, are trying to decipher the concept of the term "full-stack developer", there is good news. Both sides agree that a full-stack developer must understand all layers of the stack. The main difference between the debaters is how much knowledge of each layer such a developer should demonstrate.

In order to get closer to a common denominator, a document recently published by the Association for Information Systems analyzed the 5 most commonly used definitions of the term “full-stack developer.” This was an attempt to derive a general definition of the term. Here's what happened as a result:

“Full stack development is a methodology that covers all layers of the stack and at the same time creates a complete, implementable solution to business requirements. Full stack developers have broad experience in all layers of the stack and expert level of knowledge in some of them. In a given stack, they must be able to produce a minimum viable product,” Towards a Consensus Definition of Full-Stack Development, 2018.

If you are a recruiter or hiring manager and want to steer the discussion in a constructive direction, you can take the following steps:

  • Make sure your requests are reasonable. Nobody from both camps expects a full-stack developer to be able to deliver results equal to those of an entire team of developers. If you decide that it makes sense for your team to hire a full-stack developer, make sure you don't inadvertently start looking for a "unicorn" and don't ask one person to match the results of many people. Most importantly, be prepared for the possibility that there may be more than one skill set to succeed in this role.
  • Find out how your company collaborates with developers. How do your team members share work and who supervises them? What level of flexibility in terms of front-end and back-end do they expect from each individual colleague, full-stack or not? If recruiters and hiring managers embrace this perspective, they will have an easier time understanding how a full-stack developer should function in the context of their company. This will help make the hiring process more efficient.
  • Focus onthe needs of your company. In general, the larger the company, the more specialized developers (and other professionals) can work for it. If your team is in the process of growing, consider how a full-stack developer will work on it - not just today, but also in the long term as the team grows. A team of 300 people may have more room for full-stack developers than a team of 8 thousand people.
  • Think of "full-stack" as a rough guide. The range of opinions regarding the interpretation of this term suggests that full-stack developers can be very different. Just because a candidate calls himself this is not an indication that he is a good fit for you. On the other hand, a candidate who calls himself a front-end or back-end developer may have broad enough knowledge to qualify for your full-stack position. Don't ignore the terminology, but don't get too hung up on it either, let the candidates' skills speak for themselves.

Which “camp” do you and your team belong to? Share in the comments!

A fullstack developer is a specialist who can create a web application from scratch: both client and server parts. Not everyone will be able to answer the questions of what technologies such a specialist should work with, what skills to have and what knowledge to have. We'll tell you who a full-stack developer is and what his advantages are in terms of employment.

Required skills for a full-stack developer

It's been a long time since the 2000s, so standard LAMP (Linux, Apache, MySQL, PHP), which was used by almost every second developer back then, is not enough to consider oneself a full-stack developer. Nowadays, a full-stack developer must have completely different skills and abilities in his portfolio.

Server and hosting

Understanding of server and hosting operations. Knowledge of using the file system, hosting in cloud storage. And also work with managing access to data and network resources.

Working with data

A full-stack developer must be able to create a balanced data model, be familiar with relational and non-relational databases, and be able to work with XML/JSON formats.

Backend technologies

This includes knowledge of PHP, Python or Ruby languages, the ability to build client-server interaction, API development, work with analytics and related frameworks.

User Interface

A full-stack developer must be able to work with layouts, be proficient in layout, and know markup languages. Knowledge of JavaScript is also necessary to create a visually appealing interface.

UX Design

The ability to develop UX is a mandatory point that any full-stack developer should be familiar with at least at a basic level. It is necessary to understand how the user will interact with the interface - this is an important part of the success of the project.

What are the advantages of a full-stack developer?

An important characteristic of a full-stack developer for an employer: such a specialist can fill the positions of both front-end and back-end specialists. There is a myth that Facebook recruited exclusively full-stack developers in the 2000s.

On headhunting sites, 7-10 new vacancies for full-stack developers appear every day, and a salary of 119,000 rubles per month is available if you have at least a year of development experience.

Getting the necessary skills

You can study on your own to gain all of the above skills, but this approach will not guarantee your success. A better way is to enroll in an online university