“A full stack developer is a technical wizard who knows all programming languages and technologies, and also sings and dances beautifully.”
Who is a Full Stack Developer?
So, what is a Full Stack developer in the traditional sense? 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 (frontend) and the internal code that runs on distributed servers (backend). As a rule, if the phrase “full stack,” appears in an open vacancy announcement, 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 the operating system on servers and fixing an office printer. In fact, in most cases, a full stack developer is required to master at a decent level the set of technologies that are necessary for the successful completion of the project. Thus, in this case, "stack" means a collection of software modules and components combined together to achieve the desired functionality.Why is this topic so controversial?
The debate about what a Full Stack developer really should be, and whether such a beast is found in quantities sufficient to single out such specialists in a separate group, has been going on for a long time. As experienced programmers note, it flared up with renewed vigor after representatives of Facebook, at the dawn of its formation in the 2000s, during a speech at one of the specialized conferences for developers, stated that they hire only and exclusively Full Stack developers . “If the traditional definitions of a Full Stack developer confuse you, then you are correct. This is because a Full Stack developer is something ephemeral. There is no scientific model to describe what a “full stack” is. ” There is no single way to measure the level of a full stack developer compared to other full stack developers. The only consensus about the Full Stack is that no one agrees with a single definition of the essence of this phenomenon. That is why everything you read about this is nothing more than a subjective opinion,” said Ryland Goldstein, an experienced software developer and architect.The Four Pillars of Full Stack Development
However, although many experts argue that a Full Stack developer is a controversial concept, there are not fewer vacancies, rather the opposite. Therefore, let's see what areas of knowledge, as a rule, you need to have in order to qualify for this kind of position.-
Frontend development.
Front-end usually refers to web development technologies and programming languages such as HTML, CSS, and JavaScript. It also includes JavaScript frameworks such as React, and all other technologies related to the "client" side of the product.
Where to start learning:
You can start with the Create React App or Gatsby frameworks , which are quite easy to create a full-fledged React application. It's a good idea to get familiar with CSS preprocessors, basic CSS tools like CSS-in-JS , and tools like Sass .
-
Backend development.
The backend refers to all the code that runs on the servers, including the applications and APIs that make the site work. The main programming languages for the backend are Java, Python, Ruby and others. In addition, back-end development also includes database management, which requires knowledge of SQL.
Where to start learning:
First of all, it is recommended to start by deepening your knowledge of JavaScript, as a kind of bridge between front-end and back-end in many cases. In particular, it's a good idea to learn NodeJS , which is a software platform based on the V8 engine that turns JavaScript from a highly specialized language into a general-purpose language.
Also, in order to have the most complete qualifications in the backend, it is recommended, in addition to Java, to gradually master such programming languages as Python (first of all), PHP and Ruby.
-
Project management.
The project manager, in short, is required to manage the project, which includes many tasks, including interaction with clients, colleagues, third-party contractors, etc. In a word, everything you need for the successful implementation of the project. This also includes planning, making strategic decisions about working on a product, etc.
Where to start learning:
To successfully develop as a project manager, it does not hurt to learn the most popular tools in this area. The main ones are: GanttPRO (a service for planning and managing projects using a Gantt chart), Jira Software (a popular system for planning and tracking agile projects), LiquidPlanner (a tool for real-time project management), Basecamp (another management system projects and collaboration), etc.
-
DevOps.
And finally, the fourth pillar of full-stack development is the knowledge of DevOps. DevOps responsibilities can vary greatly from project to project, but they typically cover everything related to running code in production, including, for example, setting up the servers on which the application will run, and ensuring that the team’s specialists work well together with technical the solutions they use.
Where to start learning:
The DevOps realm also includes quite a few tools. Here are the ones to start with: source code management tools ( GitLab , GitHub , Bitbucket ), CI/CD tools (Ansible, Jenkins, Chef), communication and collaboration tools (Slack and Microsoft Teams), and services cloud computing and storage (AWS, Azure and GCP).
In addition to the above four basic components of a “full stack,” it would not be truly complete if it did not also include mobile development, databases, and QA automation - a true Full Stack developer understands these technologies too.
Full Stack Developer Salaries
As for the salaries of full stack developers, they are not so much higher on average than their counterparts with a more specific specialization in development. In the US, the average salary for full-stack developers is almost $75,000 per year, according to PayScale . At the same time, the minimum salary (for full-stack programmers) is about $46,000 per year, and the maximum is about $114,000 per year. As for ex-USSR countries, in Ukraine, according to the Work.ua resource, the average salary of full stack developers is 35,000 hryvnias (about $1,300) per month, while in Kiev it is 45,000 hryvnias (about $1,650). In Russia, according to theseAccording to data, the salaries of full-stack developers, on average, range from 40 thousand rubles ($530) to 150 thousand rubles. ($2000). If we talk about the average indicators for the world as a whole, then the specialists working in the position we are considering today earn about $45,000 a year. And in Europe, full stack developers receive the highest salaries in Denmark and Sweden.How to become a Full Stack developer?
And now let's briefly go over the skills, abilities and technologies that you need to master in order to call yourself a full stack developer with full confidence and without a hint of irony.-
Programming languages.
A full stack developer must be proficient in several programming languages at once. First of all, of course, there are the basic ones: Java, PHP, C#, Python, Ruby, Perl, etc. In a word, those most popular PLs, on which the main business processes of the product will most likely be written. Of course, learning a number of such languages to perfection will be extremely difficult. But you need to at least master the grammar of the language that will play an important role in development, and also know how to structure, design, implement and test a project based on one or more PLs.
-
Frameworks and code libraries.
Well, a good knowledge of the main programming languages in most cases includes the ability to use popular frameworks and libraries, such as Java Spring, Hibernate, Python Django, PHP thinkphp, MyBatis and others.
-
Frontend technologies.
The importance of knowledge of front-end technologies for full-stack developers is also great, and is increasing over time. Today, when the convenience and general “wrap” of the product become no less important than the functionality, a significant part of the overall success of the project falls on the shoulders of the frontend. For a Full stack, you must at least know basic front-end technologies, that is, HTML5, CSS3 and JavaScript, as well as master the main front-end frameworks and libraries, namely JQuery, LESS, SASS, AngularJS and the previously mentioned React.
-
Database.
Databases are another important part of the “full stack,” because any product or service needs to store information somewhere. Accordingly, a full-stack developer should know at least a couple of the most popular database systems and how to work with them. The most popular database systems today are MySQL, MongoDB, Redis, Oracle, SQLServer and others. Among them, MongoDB is most popular as a database for various Internet projects, MySQL and Oracle are used as a backend in enterprise products, and Redis is often used for caching and improving system performance.
-
Management and soft skills.
But to achieve good results in this area, just learning some technology or programming language will not be enough. Successful project management includes many components, including time management, planning, good communication skills, and more. And all this is acquired mainly through practice.
-
Basic knowledge of design.
And finally, knowledge of design, namely UX / UI design, albeit at a basic level, is also within the competence of a full stack developer.
By the way, here is a well-composed roadmap , designed to graphically display the whole variety of the above technologies.
GO TO FULL VERSION