zishu's blog

zishu's blog

一个热爱生活的博主。https://zishu.me

Some thoughts on full stack

Here I want to recommend a book called "Self-Cultivation of a Full Stack Engineer". While reading it, I analyzed it from my own perspective and wrote this note.

"Full stack engineers are becoming the rising stars in the IT industry, and they are highly sought after in both listed internet companies and startups. The author of this book is a senior engineer at Tencent, with rich experience in front-end, back-end, and app development. In this book, the author shares the skills and requirements of a full stack engineer, their core competencies, future development directions, and thoughts on mobile development. In addition, the book also provides a detailed account of the author's learning experience starting from scratch. The content of this book is comprehensive, objective, and practical, suitable for newcomers and programmers in the internet industry, as well as practitioners who are looking to transition to a technical role."

The author, Yu Guo, graduated from the Software Engineering School of Xi'an Dianzi University. He has served as a senior UI engineer and front-end development leader at Tencent's Social User Experience Design Department, responsible for product design in multiple projects. He wrote this book based on his own experiences.

Speaking from his own perspective, his passion for technology and machines led him to the field of computer science. In the book, he often mentions his combination of rational and emotional thinking and conducts in-depth analysis of full stack engineers.

A full stack engineer refers to an engineer who can handle all the work related to databases, servers, system engineering, and clients. Depending on the project, clients may require a mobile stack, web stack, or native application stack. This is the official definition. From my current understanding of front-end thinking, it roughly means a person who takes care of front-end and back-end, handles data processing for project maintenance, and even does their own design.

Many people say that being a full stack engineer has many advantages. They don't have to worry about different people writing code that is not in sync or having inconsistent thinking, which can lead to different ideas in the final project. A full stack engineer handles the entire process in their own mind.

Perhaps because I am relatively new to this industry, I believe that the existence of full stack engineers is not very reasonable. For example, before assembly lines were introduced, individual craftsmen were responsible for all aspects of product manufacturing, from raw materials, production, polishing, to finished products. Although it may involve many steps, one person can perfectly complete the process, similar to the existence of a full stack engineer.

On the other hand, assembly lines are more like a team effort, with different roles such as product, UI, front-end, back-end, and testing, all working together.

Compared to full stack and teamwork, I personally think that the advantages of a team are greater. However, it is hard to resist the preference of bosses for one person doing the work of three, which is more in line with the concept of full stack.

The time and effort required to cultivate a full stack engineer are unimaginable, and it is uncertain whether the cultivation will be successful. However, if one specializes in a specific technology field, the probability of becoming a senior engineer is definitely higher than that of becoming a full stack engineer. Of course, this is just my personal speculation and does not have specific data to support it.

The book also mentions that another benefit of assembly lines is that they do not create dependence on individual engineers. Even if one employee is lost, someone else can take over the work.

Although I have mentioned many advantages of teamwork, it does not mean that there are no drawbacks. The book summarizes a few points:

  • Unclear engineer responsibilities lead to low efficiency.
  • Lack of ownership among engineers leads to poor product quality.
  • Lack of a global perspective affects personal growth.
  • More roles lead to low project efficiency.

"Because of the disadvantages of low efficiency and high cost caused by the work process of each person doing their own job, many startups do not have a complete assembly line and prefer to build teams in a more flexible way. This is why full stack engineers have become an ideal choice. However, the rise of full stack engineers is also inseparable from two important factors: technological development and the increasing number of platforms providing PaaS services."

Although becoming a full stack engineer requires a lot of time and effort, I still prefer this mindset. For example, let's say there are three people, A, B, and C, each specializing in their own field. One day, they encounter a small problem in a project they are jointly responsible for, but they don't know which domain the problem lies in. Although it is a small problem, each person needs to investigate it individually. Since there are three domains, it means that two people's investigations are ineffective, which ultimately lowers the project's efficiency.

At this point, there is an engineer, S, who is not a full stack engineer but enjoys learning technologies from multiple domains and has some knowledge in not-so-advanced technologies. S investigates the problem and quickly identifies the cause.

In this case, the efficiency of one person is equivalent to that of three people, although this statement is not rigorous, it's just an analogy.

I suddenly thought of a saying, I'm not sure if it's accurate:

"The existence of full stack positions is unreasonable, but the mindset of full stack is essential for an ambitious engineer."

Loading...
Ownership of this post data is guaranteed by blockchain and smart contracts to the creator alone.