JavaRush /Java Blog /Random EN /And the Swiss, and the reaper. Who is a Full Stack develo...

And the Swiss, and the reaper. Who is a Full Stack developer and how to become one?

Published in the Random EN group
And the Swiss, 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 alluring and attractive. This, as you probably already understood, is the position of a Full Stack developer. She has earned such a controversial reputation for a number of reasons, which are discussed below, but in short, all because developers and other technical experts cannot agree on what a real Full Stack developer should be. And the Swiss, 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,
veteran developer and founder of Stickbuilt software company.

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. And the Swiss, 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 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. And the Swiss, and the reaper.  Who is a Full Stack developer and how to become one?  - 4

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

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

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

  4. 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).

    And the Swiss, and the reaper.  Who is a Full Stack developer and how to become one?  - 5

    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. And the Swiss, and the reaper.  Who is a Full Stack developer and how to become one?  - 6

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

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

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

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

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

And the Swiss, and the reaper.  Who is a Full Stack developer and how to become one?  - 7

Conclusions and perspectives

As can be concluded from all of the above, in order to become a full-fledged and maybe even a reference 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 move, work on key skills and not stop self-learning. But whether it is necessary to make such efforts to become a realized Full stack developer is another question. If we talk about the advantages and disadvantages of such work, then the disadvantages are obvious - you need to study a lot and understand a bunch of different things. With pluses it is more difficult. A full stack developer usually has the ability to have a greater impact on the project as a whole than highly specialized programmers. For the majority, this increases job satisfaction, and the CSF, again, blooms and smells. Whereas understanding the full range of technologies and skills that are required for successful development opens up sometimes truly unlimited possibilities. It is believed that it is full-stack developers who most often become successful IT entrepreneurs. And in general, a person with such a deck of skills for surewill not be left without work , regardless of any crises.
Comments
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION