JavaRush /Java Blog /Random EN /Both the Swede and the Reaper. Who is a Full Stack develo...

Both the Swede and the Reaper. Who is a Full Stack developer and how to become one?

Published in the Random EN group
Both the Swede and the Reaper.  Who is a Full Stack developer and how to become one?  - 1There is a position in the field of computer development that is mysterious and obscure, but at the same time alluringly attractive. This, as you probably already understood, is the position of a Full Stack developer. It has earned this controversial reputation for a number of reasons, which will be discussed below, but in short, it’s all because developers and other technical specialists cannot come to a consensus on what a true Full Stack developer should be. Both the Swede and the Reaper.  Who is a Full Stack developer and how to become one?  - 2

“A full stack developer is a technical wizard who knows all programming languages ​​and technologies, and also sings and dances beautifully.”

Ian Peters-Campbell is
an experienced developer and founder of software company Stickbuilt.

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 developing all parts of the system’s functionality, including both the user side of the product (frontend) and the internal code running on distributed servers (backend). As a rule, if the phrase “full stack” appears in an advertisement for an open vacancy, it means that the developer must have knowledge and skills in backend and frontend 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 have a decent level of knowledge of 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 required functionality. Both the Swede and the Reaper.  Who is a Full Stack developer and how to become one?  - 3

Why is this topic so controversial?

The debate about what a Full Stack developer really should be, and whether such a beast even exists in quantities sufficient to separate such specialists into a separate group, has been going on for quite some 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 make you confused, then everything is correct. This is because a Full Stack developer is something ephemeral. There is no scientific model that describes what a “full stack” is. There is no clear way to measure the level of a full stack developer compared to other similar developers. The only consensus regarding Full Stack is that no one agrees on a single definition of the essence of this phenomenon. That’s why everything you read on this subject is nothing more than a subjective opinion,” said Ryland Goldstein, an experienced software developer and architect. Both the Swede and the Reaper.  Who is a Full Stack developer and how to become one?  - 4

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, quite the contrary. Therefore, let's look at the knowledge in which areas, as a rule, you need to have in order to apply for this type of position.
  1. Frontend development.

    Typically, front-end 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 studying:

    You can start with the Create React App or Gatsby frameworks , with which it is quite easy to create a full-fledged React application. It's a good idea to learn CSS preprocessors, basic CSS tools like CSS-in-JS , and tools like Sass .

  2. Backend development.

    The backend includes all the code running on the servers, including applications and APIs that make the site work. The main programming languages ​​for the backend are Java, Python, Ruby and others. Apart from this, backend development also includes database management, which requires knowledge of SQL.

    Where to start studying:

    First of all, it is recommended to start by deepening your knowledge of JavaScript, as a kind of bridge between the frontend and backend in many cases. In particular, it's a good idea to learn NodeJS , 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 programming languages ​​such as Python (primarily), PHP and Ruby.

  3. Project management.

    От проджект-менеджера, если вкратце, требуется управлять проектом, что включает множество задач, среди которых взаимодействие с клиентами, коллегами, сторонними подрядчиками и т.д. Словом все, что нужно для успешной реализации проекта. Сюда также входит планирование, принятие стратегических решений по работе над продуктом и т.д.

    С чего начать изучение:

    Для успешного развития в качестве проджект-менеджера не помешает изучить наиболее популярные инструменты в этой сфере. Основными можно назвать: GanttPRO (сервис для планирования и управления проектами с помощью диаграммы Ганта), Jira Software (популярная система для планирования и отслеживания agile-проектов), LiquidPlanner (инструмент для проджект-менеджмента в реальном времени), Basecamp (еще одна система управления проектами и совместной работы) и т.д.

  4. DevOps.

    Ну и, наконец, четвертым столпом фуллстек-девелопмента является знание DevOps. Обязанности DevOps-а могут сильно отличаться в зависимости от проекта, но How правило к ним относится все, что касается запуска программного codeа в продакшн, включая, например, настройку serverов, на которых будет функционировать приложение, и обеспечение слаженной работы специалистов команды вместе с техническими решениями, которые они используют.

    С чего начать изучение:

    Сфера DevOps также включает в себя довольно много всяких инструментов. Вот те, с изучения которых имеет смысл начинать: инструменты управления исходным codeом (GitLab, GitHub, Bitbucket), CI/CD-инструменты (Ansible, Jenkins, Chef), тулзы для коммуникации и коллаборации (Slack и Microsoft Teams), а также сервисы облачных вычислений и хранения данных (AWS, Azure и GCP).

    Both the Swede and the Reaper.  Who is a Full Stack developer and how to become one?  - 5

    Помимо вышеперечисленных четырех базовых составляющих “полного стека,” он не был бы действительно полным, если бы не включал в себя также мобильную разработку, базы данных и QA автоматизацию — истинный Full Stack разработчик разбирается и в этих технологиях тоже.

Зарплаты Full Stack разработчиков

As for the salaries of full stack developers, they are not that much higher on average than their colleagues with a more specific specialization in development. In the US, the average salary of full-stack developers is almost $75 thousand per year, according to PayScale . At the same time, the minimum salary (for programmers in full-stack positions) is about $46 thousand per year, and the maximum is about $114 thousand per year. As for ex-USSR countries, in Ukraine, according to the Work.ua resource, the average salary of full stack developers is 35 thousand hryvnia (about $1300) per month, while in Kiev it is 45 thousand (about $1650). In Russia, according to these data, salaries of full-stack developers, on average, range from 40 thousand rubles ($530) to 150 thousand rubles. ($2000). If we talk about the average for the world as a whole, then specialists working in the position we are considering today earn about $45 thousand per year. And in Europe, full stack developers receive the highest salaries in Denmark and Sweden. Both the Swede and the Reaper.  Who is a Full Stack developer and how to become one?  - 6

How to become a Full Stack developer?

Now let’s briefly go through the skills, abilities and technologies that you need to master in order to call yourself a full stack developer with complete confidence and without a hint of irony.
  1. Programming languages.

    A full stack developer must be fluent in several programming languages. First of all, of course, there are the main ones: Java, PHP, C#, Python, Ruby, Perl, etc. In a word, those most popular languages ​​in which the main business processes of the product will most likely be written. Of course, it will be extremely difficult to learn a whole range of such languages ​​perfectly. But you need to at least master the grammar of the language that will play an important role in the development, and also have a good knowledge of how to structure, design, implement and test a project based on one or more languages.

  2. 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.

  3. Frontend technologies.

    The importance of knowledge of front-end technologies for full-stack developers is also great, and increases over time. Today, when convenience and the overall “wrapper” of a product become no less important than functionality, a significant part of the overall success of the project falls on the shoulders of the frontend. For Full stack, you need to 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.

  4. Database.

    Databases are another important component 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 most popular for the backend in the field of enterprise products, and Redis is often used for caching and improving system performance.

  5. Management and soft skills.

    But to achieve good results in this area, simply learning some technology or programming language will not be enough. Successful project management involves many components, including time management, planning, good communication skills and much more. And all this is acquired mainly through practice.

  6. 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 all the variety of the above technologies.

Conclusions and prospects

As you can conclude from all of the above, in order to become a full-fledged and maybe even a standard full-stack developer, you will have to spend a lot of time and effort. However, constant and regular practice allows you to master much more complex disciplines over time. The main thing is to understand where to go, work on key skills and not stop self-learning. But whether you need to make such efforts to become a successful Full stack developer is another question. If we talk about the advantages and disadvantages of such work, the disadvantages are obvious - you need to study a lot and understand a lot of different things. The pluses are more complicated. A full stack developer usually has the opportunity to have a greater impact on the project as a whole, compared to highly specialized programmers. For the majority, this increases job satisfaction, and, again, the ChSV blossoms and smells. Whereas understanding the full range of technologies and skills that are required for successful development sometimes opens up truly unlimited possibilities. It is believed that full stack developers most often become successful IT entrepreneurs. And in general, a person with such a deck of skills will certainly not be left without work , regardless of any crises.
Comments
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION