What is a full stack engineer
The word full stack engineer , First appeared in Facebook The engineer Calos Bueno An article from - Full Stack
. He defines a full stack engineer as a technical generalist with a deep understanding of the impact of performance . Since then, the word "whole stack" has become popular , I've seen a full stack engineer , Full stack designer , Full stack operation and maintenance , The whole stack of marketing people and so on . And on many recruitment sites for Internet talent , The whole stack of engineers has become a popular recruitment position , The salary level is also higher than the average development engineer position . that , What is a full stack engineer , How should we define a full stack engineer ?
Baidu Encyclopedia's definition of a full stack engineer is like this ：“ Master a variety of skills , And can use a variety of skills to independently complete the product ”. I don't think the definition is comprehensive enough , I think the full stack engineer should be a senior development engineer at the same time 、 Architects and programmers with agile development skills .
The whole stack engineer's understanding of software development has often evolved , They left specific technologies behind , Understand the reason that technology is always faster than computer theory , therefore , They focus on strengthening their core skills , Focus on and be willing to practice other technologies . A full stack engineer is often an expert in one area , At the same time, be familiar with and be good at using other languages in the right situation 、 Tools and Technology .
The value of full stack Engineers
as time goes on , The role and value of full stack engineers have been confirmed in more and more products or projects . that , Let's look at what full stack engineers mean to individuals or companies .
Great improvement of personal value and freedom —— I've read some articles about full stack Engineers , Most of the paper emphasizes the value of full stack engineers to the company and team . And what I want to say is , There is not a good full stack engineer because of how much benefit it will bring to the company , And trying to learn all kinds of technology .
There is also a live broadcast at 8 o'clock every night to show you the code It's not boring grammar , It's a project that the school won't tell you about
snake 、QQ Chat system 、 tuixiangzi 、 Thunderfighter 、 Hackers remotely control 、 Video player and so on
The people I know , It's all those who have an ingenuity , Constantly pursuing higher skills , And people who are committed to making better products . And when you become a real full stack engineer , You will feel the unprecedented improvement of personal value and technical freedom . Imagine when a great idea comes up , You can do it by yourself or by leading a team and constantly improve it , What an exciting thing it is !
Global thinking and technology foresight —— Due to the knowledge of various development links and technical fields , Full stack engineers tend to have a better overall view and technology foresight , Be able to choose the right technology at the beginning of the project , And well control the overall direction of a project . Modern projects are often very complex , And full stack engineers can often bring technical and quality assurance , And become a key figure in the success of a project .
Reduce communication costs —— I often hear designers complain that front-end engineers can't restore their designs 100 percent , And the front-end engineers are complaining that the data returned by the back-end engineers from the interface cannot be used directly , Back end engineers are also complaining that the product manager's requirements cannot be fulfilled at all . As the number of team members rises , Due to the different skill stacks , The cost of communication is bound to rise . In addition to being able to independently complete the front-end and back-end development ( Even design ) Outside , If you can get involved early in the project , Can be very good to avoid technical risks , Filtering unreasonable demands , This will significantly reduce the communication problems caused by different technical differences , Significantly reduce project risk .
Start-up company —— We have come to a mass entrepreneurship , The era of national innovation . The start-ups are springing up . Startups often have a good idea , But I often encounter “ One programmer is missing ” Embarrassment . What I want to say is , They're not really short of programmers , It's a lack of a full stack engineer . Startups tend to have limited capital , A good full stack engineer can help start-ups launch their products in the shortest time and at the lowest cost . It's a start-up that can survive , Get more investment , Even become “ The unicorn ” The most important step for a member .
Key development skills ( Hard power )：
Git / GitHub—— You have to master how to use Git To manage and share your code . hold Git As the first key skill , Because it's not just a code management tool , It's a recommended way to work .
It allows you to develop anywhere , Manage projects of any size efficiently , adopt Git You can also do distributed collaboration with other team members , Greatly improve work efficiency . adopt GitHub, And connect you with all the developers in the world .
At least one programming language —— You need to be proficient in at least one programming language ,JAVA 、PHP、C#、Python、Ruby、Perl etc. , Because most of your core business processes need to be written in this language . You have to master the grammar of the language , You also need to be very familiar with the architecture of the project based on this language 、 Design 、 Implement and test . If you choose JAVA, Then you need to master object-oriented design and development , Application of design pattern , be based on J2EE Development of various components wait .
Using development frameworks and third-party libraries —— Popular development languages , It's usually accompanied by an excellent development framework , such as JAVA Of Spring、MyBatis、Hibernate,Python Of Django,PHP Of thinkphp、yin,nodeJs Of express wait .
These development frameworks tend to follow some of the best practices in the field of software development , And created by very good developers . Skilled use of these development frameworks or third-party libraries can avoid reinventing the wheel , Make your work twice the result with half the effort . More importantly, these excellent frameworks or third-party libraries are generally maintained continuously , It is the most effective guarantee for the quality and safety of your product or project .
The front-end technology —— The reason why the front-end technology is independent , As a key technology , Because it's becoming more and more important in today's project and product development process . In addition to the functions required by a product , It's easy to use ( User experience ) It is also becoming an important criterion to judge whether a product is successful or not . And it all depends on the implementation of the front-end technology , At least you need to master HTML5、CSS3、Java And other basic front-end technologies , At the same time, learn more about JQuery、LESS、SASS、AngularJS or REACT Such as front-end framework or third-party library .
Database and cache —— Any product or project needs a database to store data . As a full stack engineer , You also need to master at least one or two databases , And know how to interact with the database . At present, the most popular databases are MySQL、MongoDB、Redis、Oracle、SQLServer etc. .MongoDB As a document database , It is being used more and more in Internet products , For larger projects , I still recommend using MySQL Or commercial Oracle As a back-end database . and Redis Such an in memory database can be used for caching , To improve the performance of the system .
Basic design ability —— Most articles or discussions about full stack engineers , They don't make design capability a key skill for a full stack engineer , But I think this skill is very important . I've been asked to evaluate products developed by some software engineers themselves , These products have good ideas , The function realization is also in place , But it's not a good product at first sight , Users have no desire to use , The reason is that the design of these products is so bad , And often those developers don't realize the problem at all , For example, the color is inconsistent , The layout is messy , Inappropriate icons wait . The basic design capabilities I suggest , You are not required to be able to P A trance 、 Make wonderful visual effects, etc , But you need to master the most basic UI Design principles , Such as Color matching , Basic typography , And have good aesthetic ability , And some basic UI Design ability , In this way, your products will not be too bad .
After mastering these core skills , You can do it according to your interests and development direction , Learn other skills . such as , If you're interested in data processing , So you can learn big data technology . If you're more interested in the mobile Internet , So you can learn Swift, Development ios application . Knowledge is always interlinked , After having a good technical foundation , It will be very easy to learn other knowledge .