Introduction: how to become a full stack engineer? What technical accumulation is required? What are the benefits of being a full stack engineer? I hope this article can provide some help for students who hope to become engineers of the whole stack and share with them.
As developers, we don’t excessively distinguish between server and client. We are web developers, engaged in web development and more understanding of technology and practice.
The road to becoming a full stack engineer
It is neither difficult nor easy to become a full stack engineer, in which technology accumulation accounts for a large part:
Keep up with the frontier
Master enough input.
Pay attention to the new news release of overseas communities, new products and technologies in the industry, learn to obtain high-quality information, adhere to and get used to doing.
Focus on Learning & continuous practice
Have their own thinking and rigorous output.
To master efficient learning methods, for example, we are doing k8s container cluster related things recently. We need to understand the underlying design and cluster scheduling, and learn golang, the learning process of new technologies:
- Invest in a good ide, such as webstorm, GoLand, IntelliJ idea, etc., and stick to it.
- Identify official documents and keep learning.
- Check the API manual and keep getting familiar with and memorizing it.
- Write a learning summary to form a virtuous circle: define function – > code design – > complete function – > refactoring optimization – > optimize code design – > Complete – > refactoring – > complete mastery.
Conclusion: practice depends on persistence. In the face of new and unknown fields, we should also meet difficulties.
Pay attention to basic knowledge & make more summaries
Understand clearly and get twice the result with half the effort.
For example, as a web developer:
- Necessary knowledge: language foundation, web application foundation, familiar with Linux operating environment, network transmission process, HTTP protocol, TCP protocol.
- Advanced knowledge: familiar with browser request process, web server port monitoring principle, database principle, browser request principle, application security communication TLS protocol, data encryption and decryption scheme and data signature scheme.
- Architecture level: application layering mode, data model definition mode, micro service division idea, system design mode.
As a wireless team: the most profitable and most worthy part of investment
By understanding the principles behind these most common problems, we can solve most problems independently, improve the efficiency of full link R & D, and communicate and cooperate with people in various posts without obstacles.
To do one thing, find out what scheme is most suitable, what role is most suitable, and what technical architecture is more suitable:
- Network protocol layer, HTTP protocol, DNS, layer 7 / layer 4 load balancing, which will involve the basic knowledge of server, front end, SRE, network security and other posts.
- Principles and details of framework layer: application framework react / koa / spring, database framework and security components.
- The framework of Alibaba’s Middleware / derivative technology framework.
- Engineering: CI / CD continuous integration, automated testing, code construction and release process.
- Infrastructure IAAs: private cloud, hybrid cloud and public cloud. AWS, Alibaba cloud, etc.
Value to the team:
- Due to the characteristics of wireless: the problems that will be encountered account for a large proportion related to HTTP protocol, end-to-end performance optimization, network exception handling, and the basic process of front and back-to-end interaction. It can quickly locate and repair problems encountered in offline debugging, and make quick decisions in the first time in case of problems encountered online.
- Not all problems can be remedied by experience. People often make mistakes repeatedly. They are afraid that they will not find the root cause in case of repeated problems, so they need to solve them from the source and master the basic knowledge of the whole stack.
- Understand the basic knowledge clearly. When using upper-level technologies, such as various frameworks and operation and maintenance systems, you can quickly see the essence behind the used technologies.
- It can reduce the probability of making mistakes and make more correct decisions.
Practice of full stack technology system
Three people must have my teacher and learn from the people around me.
Take an example of people around me in reality: in the login authentication user system, first design the system, data model design, interface design, and finally implementation. The most important and valuable part is the early design stage. Finally, it is implemented with node.js, Java and golang respectively. The implementation between different languages and frameworks is similar. The function transplantation is very fast and can be carried out in parallel.
The prerequisite for designing good code is also exactly matched with the mastery of the previous basic part. The better the foundation, the better the design.
- Excellent design not only makes the system reliable, but also makes the design simple, clear and easy to understand.
- There is no time when the cost of maintenance is high.
The whole stack does not mean reducing the requirements. The whole stack is to improve the development efficiency. If the quality is poor and difficult to maintain, it will reduce the team efficiency.
- Avoid just dabbling more, but lack of actual combat. Seeing it does not mean being able to use it.
- Being able to write the full stack does not mean that the written code can be used in the production environment, so as to avoid subconsciously reducing the requirements for yourself. If the quality of the written code is not qualified, it will violate the original intention of the full stack.
Benefits of being a full stack engineer
Master the whole link knowledge system and core knowledge points of front and rear server
- Improve R & D efficiency, problem-solving ability and troubleshooting efficiency, so as to quickly detect problems and deal with problems in time.
Able to understand the demands of students in different positions
- Back end students: can understand why the front-end students put forward high requirements for interface fields, and expect the interfaces provided by the back-end to be defined according to the standards of the open source community (good interfaces are self explanatory, do not need too many documents, follow the industry API design specifications, use interfaces in line with people’s intuition, and the interface fields are stable).
- Front end students: can understand why the back-end students are unwilling to write special logical judgments easily (a set of models has been defined gracefully, and adding a special branch will destroy the consistency of the code).
- R & D students: I can understand why the operation and maintenance students are unwilling to give operation and maintenance permission easily (once the operation of the underlying operation and maintenance is improper, it will cause too much damage and require profound technical accumulation).
Counter examples of incomplete knowledge
Real counter example: full stack helps reduce low-level errors.
- The examples here are all problems I have participated in solving. What I have seen in the process is: These are not profound problems. These problems occur because of incomplete knowledge:
- The application service went online, the server configured the nginx proxy online CDN, and returned to 502. The developer and SRE found out that they did not have access to the public network (reason: the application owner was not familiar with network knowledge and operation and maintenance system, and did not cooperate well with SRE).
- The front-end domain name is different from the back-end domain name. The browser request fails because there is a cross domain problem (reason: I am not familiar with the use of header in HTTP protocol).
- The back-end interface name design is ambiguous, nonstandard, and does not meet the restful API specification (reason: I am not familiar with the specification based on HTTP protocol, which is essentially the application of method in HTTP).
- Other problems, such as websocket problems, front-end performance optimization, cache related problems, are inefficient (reason: most of them are related to being unfamiliar with HTTP headers).
I always think that the whole stack is not a certification certificate, and there is no need for someone to certify you. When you can get the trust of students in different technology stacks, you will be the greatest affirmation to you.
Author: Chashi I
This article is the original content of Alibaba cloud and cannot be reproduced without permission