Recently, when I was talking with my friends, I often talked about full stack engineers. I asked them why they want to become full stack engineers. Technician’s answer: “Full stack engineer, both front and back end technology, feeling very cow!” “, the professional replies: “Full stack engineers are needed by many companies. They don’t have to worry about finding a job and the salary is higher than ordinary engineers. “, the follower replies: “Many of my friends want to be a full stack engineer, they all say that full stack engineer is very good. Sometimes, I ask him cheap cheap good where? He was too stupid to answer.

If you can read this article, I believe that you are either full stack engineer or interested in full stack engineer. Here’s a question for you: “Full stack engineer, what’s good about it?” You can take a few seconds to think about it, and the value you gain from this article will be much higher.


1. What is a full stack engineer



Definition of full-stack engineer on Baidu:

Full-stack engineer refers to the person who has mastered multiple skills, is competent for front-end and back-end, and can independently complete products with multiple skills.


Is this definition correct? Take a second and think about it. This is very important!


This definition is wrong!

This definition is wrong!

This definition is wrong!

Say important things three times, hence the dilemma at the end of the encyclopedia.



2. Full stack engineer at Facebook


Facebook claims that it only hires full-stack engineers. Let’s take a look at the requirements for full-stack engineers:

Layers of the Full Stack:

1. Server, Network, and Hosting Environment.

2. Data Modeling

3. Business Logic

4. API layer / Action Layer / MVC

5. User Interface

6. User Experience

7. Understanding what the customer and the business need.


Other Pieces of the Puzzle:

1. Ability to write quality unit tests. By the way, even JavaScript can have unit tests these days.

2. Understanding of repeatable automated processes for building the application, testing it, documenting it, and deploying it at scale.

3. An awareness of security concerns is important, as each layer presents its own possible vulnerabilities.

According to the full stack engineers in the market to understand:

Points 1 to 4 are required skills for Java (backend) developers, and Point 5 is required skills for Web front-end engineers.

Full stack engineer, is to master 1-5 skills.


User experience # 6 and understanding customer and business needs # 7 are not within the skill set of full-stack engineers on the market. You may have a different view, but let’s look at some common cases.

one

The product manager comes to the programmer; “What kind of experience do you have? How inconvenient to use.” .

Programmer: “Now how do I have time to do this, the project has been delayed so much, so have time to optimize it again!”

two

The product manager came to the programmer to change the requirements, this is the fifth time to change the requirements, so the programmer unbearable: “how do you do, can you think clearly, a requirement changed five times.”

Is this a product manager problem? No, it’s the programmer.


In case one, the user experience is not the priority of the full stack engineer, but the completion of the function is the most important.

Case 2: For a product, 40% is designed by product manager, 20% by programmer and 40% by others. When a programmer gets a product, he/she needs to make clear customer requirements, business logic, relationship between functions, data flow and interaction mode, etc. These are the programmer’s understanding of product requirements, but also the refinement of product functions. If programmers do this, they can identify hidden problems and design errors in the product before development, and there is no need for product managers to go back and forth to fix requirements. Understanding customer and business needs is not a priority for full stack engineers. In full stack engineers’ eyes, functionality is not an issue. I will do it first.


The ability level of full-stack engineer is that of senior programmer. Senior programmer does not have 6 and 7 skills. 6 and 7 are the skills of architect, lead programmer and above.

If you look at the other three pieces of the puzzle, you automate deployment because you have the framework, someone will do it; Unit testing, security, how many full stack engineers do it? This is not to say that I do not respect full stack engineers. In the market, full stack engineers are basically mules in the company. They do a lot of work every day, work overtime to catch up on projects, finish front-end and back-end, and fix front-end bugs after back-end. There is simply no time to think about it, let alone spend time doing it.


It can be seen that the full stack engineer in the market, or the full stack engineer defined in the encyclopedia, is different from the actual full stack engineer.


3. Full Stack Engineer, not what you think

Why is this happening? The key is the separation of the front and back ends. This is both the benefit and the trouble of technological progress.

In the early years, when we did development, we did both the front and back ends together. We just had to design our own framework to do the front and back end isolation. Then some of the front-end frameworks came out, and we used those frameworks to do our own development. Later, there were programmers specializing in front-end development, especially for frameworks like VUE, and front-end programmers were reduced to interface interaction engineers.


Let me share an example:

In the first two years, I set up a new team. According to the company’s direction and product requirements, the team configuration is 3 Java and 2 Web. In my opinion, Java is responsible for interface and background development, while Web is responsible for the development of APP embedded page and active page. As a result, when planning, the Web will report that the workload is too large to finish in time. I just wondered, how is that possible?

I have a deeper understanding, the technical manager adopted the solution is the front and back end separation, Java only interface, the background page by the Web programmer to develop, this is doomed, such a configuration with this solution, certainly can not complete the work on time. In this technical solution, Java programmers cut off two hands and do only one business, while Web programmers become interface interaction engineers.


Picking up where we left off, web programmers, not content with interface interaction, want to find their value and start learning 1-4 capabilities, so full stack engineers are on fire.

Web programmers learn backend development and become full stack engineers. Java programmers learn web development and become full-stack engineers; Android/IOS app programmer, learning background, and can develop app, and can write their own interface, become a full stack engineer.

Coupled with mass innovation and entrepreneurship, many start-up companies cannot recruit suitable programmers, or in order to save costs, they start to recruit a large number of such full-stack engineers. For the company, it is to spend one to do two things. This practice is not good for the company and individuals, harmful to the company is not discussed here, I have the opportunity to write another article to share; The damage to full stack programmers is shared in the next two sections.


The concept of full stack engineer is put forward by ghost. I haven’t found out who put forward this concept, and I don’t know how the author talks about it in the original work. But I read a lot of old books, like Mind Of Programming, Agile Development, XP, Scrum, Refactoring, Test-Driven Development… . For example, refactoring is about code refactoring, but it covers a lot of design thinking, design patterns, product understanding, user experience, etc. So learning this book will not only help you write good code, but also make you a good architect. Another example is “Agile Development”, which talks about agile development methods, but about project management. In fact, it talks about a lot of technical management and development methods. Learning this book, you can become a project manager of agile development, and also become an architect or technical director.

Therefore, the concept put forward by the ghost is not a simple concept, it is to let your career can have growth. If you look at these books, they’re all written by people who have been in the industry for a decade or two, and they’re all written by ceos or VPS of tech companies, at this level, they’re all focused on developing programmers, not just passing on a skill.


Let’s go back to point 6 and 7 of facebook’s full stack capability requirements. These are the capabilities of architects, so to become a full stack engineer, master these seven points, can reach architect, or lead programmer. The other three points are the skills that the technical director needs to master. If you master these three points, you can become the technical director.

The true full-stack engineer is the concept of upward growth in your career. To put it simply, it is to make you rich and handsome. Instead of letting you master more development languages and grow sideways, you will only become a fat person. The Internet industry is developing so fast that fat people can’t keep up with the pace and will bring disaster to your career.

If you’re not familiar with the skills required for different levels of programming, you can check out my article on “Programmer Job No. 1.”



4. The consequence of senior programmers becoming full-stack engineers


Baidu Baike describes the “dilemma” of full-stack engineers:

Technology has two directions of development, one is vertical and the other is horizontal, horizontal is the Swiss Army knife, vertical is cutting iron as mud. Neither of these two directions is right or wrong. To a certain extent, they will be integrated with each other, just like the Chinese Buddhist meditation practice of south and north gradually. In fact, in the end, gradual realization and Epiphany are the same. It can be said that the whole stack can do everything, but nothing.

If a company doesn’t quite understand the value of a full-stack engineer, the position of a full-stack engineer can be awkward. To put it mildly, a full-stack engineer can do everything and nothing. There was an interview, and they asked him basic questions, and he couldn’t answer them, but he could make products, and he knew what was going on, and he didn’t make those mistakes, but he just couldn’t answer the concepts, and it was very easy to beat him. So in the interview, sometimes it will be a disadvantage, he may not get as high salary as those who are deep in a certain field.

As he often shuttled around in various technologies, he often forgot the syntax of the code and some APIS, so he often had to check the API and even the syntax. He felt that I could hardly work without Google. This, in some people’s eyes, is a lack of skill. He memorized a Key, an index of how to find the answer, but not the whole thing. The brain is not a computer, so he can’t memorize everything.


Baidu Baike describes the value of full stack engineers:

For a startup, the value of a full-stack engineer is very great. It is impossible for a startup to have all kinds of talents like a large company. So need a generalist, all kinds of work can carry one shoulder, alone block multifaceted all-rounder. For start-up companies, it is impossible to say that all kinds of talents have been prepared for the front-end and back-end clients of DBA. Many jobs are not saturated with employees, can not be done without employees, and outsourcing is not assured of quality, so full-stack engineers are a clever way to save money. Although the salary of full-stack engineers will be much higher than that of ordinary engineers, overall, the cost will be much lower.


Full stack engineer cause and effect

We combine value and dilemma to make an analysis: full-stack engineer is a generalist and a master of all kinds, and he is not good in any aspect. The place where he can embody value is a start-up company, and he cannot pass the interview of a large company. Working in an understaffed company, would you say projects run smoothly? Is it normal to work late at night after 10:00? So you chose to be a full-stack engineer. Have you decided that you’re going to be a startup, working after 10:00 PM, six days a week?

There’s now a 97% chance that a startup will fail within a year and a half, which means that by choosing full-stack engineers, you’re basically choosing a new job every year or so. You want to work in a stable company, good development, basically is extravagant hope.


Full stack engineers should have a feeling that, at the beginning, the interview is very smooth, it is easy to be hired, with the increase of years, the interview will be more and more difficult. Why is that?

When you first became a full-stack engineer, you were proficient in one language, so when the interview, the interviewer will see that you are proficient in one language, but also other languages, so it is easy to interview. However, full-stack engineers spend a lot of time on catching up on projects, working overtime and solving various language problems. With the increase of years, they are no longer proficient in this language and increasingly rely on Baidu or Google. During the interview, it is difficult for the interviewer to find a job.

And when is it hard to find a job? Let’s see, after graduation at the age of 22, it takes 3-4 years to grow to a senior programmer and become a full-stack engineer. It takes about 3 years to grow to the point where you can only rely on Baidu or Google to work. I was about 29 or 30.

Let’s move on. After the age of 30, can you physically keep up with this kind of intense work? At this time, many people have just had children, and children at this stage are the most noisy. You have to take care of them more or less, and you can only sleep two or three hours a day. Can you handle it? So now many companies do not want engineers after the age of 30, it is reasonable, you can only be a versatile, ability can not keep up with the requirements of the company, overtime can not add young, and the salary is much higher than young, the company does not fire you who fire?


This is the Internet industry. All the troubles in our industry are self-inflicted. This article shares the idea that becoming a true full stack engineer can avoid this cause and effect.


5. Consequences of mid-level programmers moving to full-stack engineers

Originally, full-stack engineers were a way to increase their value and salary by learning more languages, as senior programmers could not be promoted to architect or department manager. Before you know it, you’re second only to architect in the industry.

As a result, a lot of programmers aspire to be full stack engineers, and this idea extends to mid-level programmers. I’ve even heard junior programmers say they want to be full stack engineers, which is crazy. Let’s talk about what happens when mid-level programmers become full-stack engineers.


Let’s look at an example:

Android intermediate programmer, learn background language, get through the front and back to become a full stack engineer.

What is the range of capabilities of an intermediate programmer? Intermediate programmers are only responsible for modules and don’t know the full gameplay of the project, but the full project is within the reach of senior programmers. Android programmer, in the APP development team, can only be responsible for the module of the project, the background is vacant, pull this programmer to the background to help develop interface, background he can only write some interface, is responsible for the module at most. You can see he is in charge of modules everywhere, only at the intermediate programmer level. And this kind of person is easy to use, in the company will be very popular, project team want him. He was in charge of Android, he was in charge of the backend interface, and he was never going to be able to complete the project, either Android or the backend.

This mid-level programmer, when he first becomes a full-stack engineer, will be paid more than the same programmer because he can do more than others. But, as long as he did for a year or two, change jobs are in trouble, had in his life, should be a senior programmer level, to the interview, the interviewer by senior programmer must be covered, if the intermediate programmers to interview, he basically can only answer some of the key, so the interview effect affirmation generally, even after a technical interview, talk about salary will be a problem, This level of salary is lower than the intermediate level, and when he was a full stack engineer, he had taken the salary close to senior programmers, and he was not willing to accept the salary reduction, so his career development is about the same.


6. Value of full stack engineers

Through the previous analysis, we know that full-stack engineer is not a person who has mastered various skills, is competent for front-end and back-end, and can independently complete products with various skills.

It refers to the person who has complete control of a technology stack.


Let’s take facebook’s full stack skills as an example. Full stack engineers are hierarchical, and they are good senior programmers with 1-5 points. Master 1-7 points, can become an architect or lead programmer; Master other jigsaw puzzle skills to become technical director. At the beginning of our article, we said that many companies want full-stack engineers because they have higher skills and can carry higher positions. Full stack engineers are paid more because of higher positions. Of course, this is the idea of foreign companies. Domestic start-up companies recruit full-stack engineers because one person can serve as two people, which can save costs for the company.


I write this article not to discourage you from becoming full-stack engineers, but to encourage you to focus on your career growth and become a true full-stack engineer.

Java programmer, web development is a natural, this is to become a qualified Java programmer necessary skills, if the company’s personnel, there is a person to do H5 development, then by the person to do, their own skills do not need to line. Occasionally there is a shortage of Web manpower, help to share some of the workload; Or there is a small project, a person can complete, you put the front and back together to carry it.

Web programmer, learning background language, career can go further. If you just do the interactive development of the interface, the ability of working for two years is almost the same as that of working for five years, and the salary difference is twice. Would you say that the occupation of working for five years is not very dangerous? And “Web front-end development” level examination, it will test Java and PHP and other content.


Speak the whole stack of engineers on market, only to master the whole stack engineer technical part, and the whole stack engineer, to fully grasp the technology stack, which including the development of customers and business in front of the understanding ability, product analysis and design ability, the system architecture in the process of development ability, the ability to code development, database, unit testing, deployment, etc., Operation and maintenance, security, performance improvement and other capabilities after development. This is the path to career growth. This is the path to career growth.


The point of view of this article is put forward by me for the first time, and there is no similar point of view on the Internet. The accuracy is yours to grasp, and I hope it will be helpful to you. If you have different ideas, we can discuss them together. If it’s helpful to you, please follow me, I regularly share programmer related topics. If you have any knowledge points or puzzles that I need to share, please leave a message to me, and I will do targeted sharing next time.


The authors introduce

Chen Huaxiang

18 years as full-stack engineer, 8 years as CTO of Group Company;

Expert in project management, career growth, r&d system construction;

Amy’s Video Chat, with 300 million installations and 40 million registered users;

Leader of The Project of “Teng Xue Hui” of Tencent Academy;

Founder of Risker Network

Project management, programmer career development enterprise internal training lecturer and coach;

“Programmer career First lesson”, “Career Planning: The Way to cultivate programmer’s Annual Salary of Millions”, “Advanced Training for senior Programmers”, “Project management from entry to Mastery”, author and lecturer.