Someone says that full stacks are eternal middles that do not know anything deeply enough. Others believe that this is the most promising path for a programmer. But the devil is in the details – before expanding the stack of technologies, it would be nice to know about them and who the hell is that full stack.
Who is a Full Stack Developer?
So who is a traditional Full Stack developer? The most common definition tells us that this is a specialist responsible for the development of all parts of the system’s functionality, including both the user side of the product (front-end) and internal code that runs on distributed servers (back-end).
As a rule, if the phrase “full stack” appears in the announcement of an open vacancy, it means that the developer must have knowledge and skills in back-end and front-end development at the same time. However, many companies go further, and by “Full Stack developer” they mean a universal soldier who is not only able to develop all the components of a software product, but can also take on everything else, from product management to setting up an operating system on servers and fixing an office printer. In fact, in most cases, a full stack developer is required to master the set of technologies that are required to successfully complete a project at a decent level. Thus, in this case, “stack” means a collection of software modules and components, combined to achieve the required functionality.
Why is this needed?
A back-end or front-end programmer should consider expanding the stack if he wants:
- Open up new horizons for creativity. You can work on numerous projects and use many tools. Back-end and front-end development are less flexible in this sense – the developer plunges into the stack and acts within certain, sometimes rather narrow boundaries.
- Avoid burnout. Full stack orientation is a burnout protection. When you feel that work is becoming a routine, you don’t need to change it. It is enough to shift the focus of attention.
- Always benefit. Full stack comes in handy everywhere – he sees the whole picture, so he understands how to prepare a convenient and functional application for any platform.
It is profitable for an employer to hire a competent full stack for several reasons:
- In terms of resources, this is the best solution. The more people in the team, the more difficult it is to manage processes within the team. And so you can focus on the management of a small project team and adequately organize the development process, track its stages and results.
- Again, about burnout – this is a win-win situation. A developer full of strength, ideas and enthusiasm works effectively and brings in more money.
- Full stack can be sent to a new project as a pioneer. And not only in the new one – it can generally be moved from project to project and everywhere it will be like a fish in water.
Pros and cons of being a full stack
- It’s easier to find a job than a narrow specialist;
- It’s easier to become a team lead or an architect, because the full stack understands the general development structure;
- He understands a little in different technologies, therefore, it will be useful in more projects;
- Working at the intersection of technologies teaches us not to be afraid to try new things, and gives scope for creativity.
- Job descriptions indicate impracticable knowledge requirements;
- It is not clear where to grow, what to study, what skills to possess;
- Full stack is always weaker in a specific topic than a narrow specialist;
- You will have to work in multitasking mode, switching between technologies, methods and languages.
What do you need to become a full stack developer?
If you read canvases of requirements for a full stack from a vacancy – do not be alarmed. It is almost impossible to own all the instruments of the full stack. In reality, no one demands it. The strength of a full stack is that he can quickly and effectively adapt his knowledge to a new situation. And these are, in fact, soft skills. Here are a few more useful ones:
- Learn and self-learn. You need to be ready to read, ask, google. Technology is rapidly becoming obsolete. For example, five years ago there was a requirement to know jQuery in every full-stack or front-end job, and now many projects are trying to get rid of it.
- Understand the client’s task. In small projects or on freelance, full stack is the only developer, so it is important to understand the business task and be able to find the best technical implementation of this task.
- Explain complex programming things to non-programmers in clear language. And insist on using a specific technology, clearly arguing why others will not work.
- Be able to read and understand someone else’s code. This is important for everyone, but especially for a full stack – it works with different languages, so it is important not to get confused and quickly navigate in someone else’s code.
- Be passionate about your stack and be interested in related technologies. You should know if necessary, which tool is best to use. And it is also useful to understand what is happening around.
In short, the front-ender needs to be taught back-end, and the back-ender the front. More broadly, you need to get fundamental knowledge about a specific stack and understand how it works. You will have to shovel a lot of information, and basic knowledge will help separate the wheat from the chaff. Here’s where to start:
- Client-server application architecture. This is the foundation of everything. Let’s find out what a server is, what protocols are used. You may need to configure the server environment, so it won’t be superfluous to know how to set up and configure the server.
- Data exchange protocols used on the Internet. One of the tasks of the full stack is to organize the communication between the client and the server. You need to know what language they speak to each other.
- Database . Almost all information on the Internet is stored in databases. The databases provide convenient tools for obtaining this data. You will have to store and aggregate data, manipulate it. In general, you cannot do without bases.
- HTML, CSS. If you are going to work on the frontend, then you will have to interact with the markup and the DOM tree anyway.
- PHP / .NET / Ruby / GO or any other programming language that is used for back-end programming. First you need to learn the language, look at the best practices / patterns for your language, then go to the frameworks, if any.
Very good: you can implement the idea yourself, take and make an application for yourself. Also good: if you don’t like the full stack, you can always roll back, focus on one technology and go into specialization. To go full stack means to go the hard way. And it will never end – all the time you have to improve your skills, ask a lot and google. And in old age, looking back, you will be sure that you have learned everything in development.
So, now you know what to learn and what kind of person you should be in order to become a full stack developer. As the conclusion, I will cast light on a very important aspect – salary of the full stack.
Full Stack Developer Salaries
As for the salaries of full stack developers, they are not that much higher in comparison with their colleagues with a more specific specialization in development. In the US, the average full-stack developer salary is nearly $75,000 per year, according to PayScale. At the same time, the minimum salary (for programmers in full stack positions) is about $46000 per year, and the maximum salary is about $114000 per year.
As for the ex-USSR countries, in Ukraine, according to the Work.ua resource, the average salary of a full stack developer is about $1300 per month, while in Kiev it is about $1650. In Russia, according to these data, the salaries of full-stack developers, on average, range from $530 to $2000.
If we talk about the average indicators for the world as a whole, then specialists working in the position we are considering today earn about $45000 a year. And in Europe, developers receive the highest full stack salaries in Denmark and Sweden.