Originally I do not know this title, in Oschina perfect resume when the system helped me choose this role, aroused my attention, so I learned a bit. The old way to introduce an article, plus own a little experience. (Link: http://digi.163.com/14/0116/10/9IN26JNS00162OUT.html)
Recently at home and abroad are popular a word called full Stack, Chinese translation came to call Pang engineer, also called Quantuan Engineer. A lot of professionals on Weibo are talking about full-end engineers, who have a crush on them. My definition of a full-time engineer is: A person who has a variety of skills and can do the product independently with multiple skills. For example, an all-stack engineer is a person who can build a 10-storey building independently, while an ordinary engineer can build a skyscraper with a group of people.
As to what skills to master, I think this to be engaged in the industry and technology direction, do the Internet and do software is not the same, even if the Internet, the backend can be divided into a number of technical schools.
The 8/2 law applies everywhere, the whole stack engineer is the person who grasps 20% commonly used skill, but this 20% skill will have 80% chance to be used, the remaining that 80% not commonly used, let us Google bar.
Some people say that the whole stack of engineers in China for many years, they call the webmaster. This talk is a bit reliable but not so reliable, I have also done webmaster, know as a webmaster need to master many kinds of technology. What is not reliable is, many stationmaster actually did not actually write how many code, but skillfully use some build station software to build station.
The value of a full stack engineer
Some people say, you are so cool, you know five kinds of technology, you can do five people's work? The full stack engineer is not to say that a person is capable of a few people's work, but to look at this problem in many ways.
Holistic Thinking
The development of modern projects is seldom said to use only one or two kinds of technology, especially under the tide of mobile internet. Any technology used in an Internet project will require back-end development, front-end development, interface design, product design, database, various mobile clients, three-screen compatibility, RestFul API design and OAuth, and more avant-garde projects that may use a single Page Application, Web sockets, HTML5/CSS3 these technologies, as well as third-party development like the public Weibo application and so on.(This is true, I have also dabbled in one or two, such as backend development, front-end development, database, RestFul, OAuth, WebSocket, third-party service number, enterprise number)
The Web front end is far from the previous cut figure with a jquery last Ajax compatible with a variety of browsers so simple. Modern web front end, you need to use Modular development, multi-screen compatibility, MVC, a variety of complex interaction and optimization , and even you need to use node. js to assist the front-end development. (node. JS was studied before, but not in the actual project, the Web front end is really no longer a graph with a jquery last Ajax compatible with a variety of browsers so simple, as early as four years ago I remember the web front end is doing this, the contact Backbone.js is a front-end MVC box Racks, module development is also trending, front-end complexity, interaction with the backend, page rendering, and code optimization. The complexity of the front-end development, from my recent participation in the project of the new interface transformation is very deep feeling. )
So a modern project, is a very complex composition, we need a person to control the overall, he does not need to be a senior expert in various technologies, but he needs to be familiar with various technologies.It is very important for a team, especially the Internet company, to have a holistic mindset. (Reminds me of a job-hopping technical director.) )
Like if I handle the project, I will certainly notice the Web optimization, also consider the API to be compatible with a variety of clients, will take into account the three screen compatibility issues. Do not say that the project completely use Ajax regardless of SEO, nor for functionality and ignore the speed of access, I will be very good to grasp the balance, because I know their weight and implementation costs.
Communication costs
The larger the project, the higher the cost of communication, the people who have done project management know that the manpower in the project is 1+1<2, and the more people are less efficient. Because communication is a cost, different technology people say the words, the front end and the back end is bound to pinch rack. Everyone will fight for their own interests, no one is not there.
And the cost of the entire stack of engineers is almost zero, because all kinds of technology are understood, know-how, accidentally did it all. Even in team collaboration, it's much easier to communicate with different technicians, you get a backend and a front end to communicate, it's completely're same page, not to mention the designers and the backend. But if there is a person understand the product understand the front-end understanding of the design, the communication results are obviously different, because they speak, each other can understand.(I didn't feel the cost of communication before, because most of the back-end development, a development team or a team communication is not so high cost, until recently this team, and the application team to communicate with me deeply understand the importance of communication, communication costs far beyond my imagination, Communication costs from the interface documentation to the development of the interlock everywhere. )
Start-Up company
For startups, the value of a full-end engineer is very large, and startups can't be like big companies, with all the talent. So we need a multi-faceted, all kinds of life can be a shoulder-pick, one-stop multiple side of the balm. For startups, it is impossible to say that the DBA front end client all kinds of talents are all gathered, a lot of work is not saturated, do not ask people and can not do, outsourcing and not trust quality, so the whole-end engineer is to save money a coup. Although the whole-end engineer will pay a lot higher than the average engineer, but the combined down, the cost will be much lower.(This ... Think of the NBA swing people, such as hackers, peak period from 1th to the position of 4th, but wages are not those superstar high ... )
The dilemma of a full stack engineer
I speak of the technology has two development direction, one is the vertical one is horizontal, horizontal is the Swiss Army Knife, longitudinal is the efficient Gan Moye. These two directions are not right and wrong, the development to a certain process will be mutually fusion, like the Chinese Buddhist meditation on the south of the north gradually, in fact, in the end, gradually enlightenment and epiphany is the same, Dayton from the gradual.
If a company does not understand the value of the entire stack of engineers, then the status of the entire stack of engineers will be very embarrassed, say not a little bit, the whole stack of engineers is what will, all will not. There was an interview, the other side asked me a very basic problem, I can not answer, I could make products, also know what is the same thing, I will not make those mistakes, but I am not a concept, to test down my very easy. So at the time of the job interview, sometimes it will be a disadvantage, you may be less than which in a certain aspect of the people who drilled very high wages.(..... 100 words omitted here)
Because often in various technology shuttle, I often forget the code syntax and some API, so I often need to check the API and even check grammar, I think I can hardly work without Google. This is in the eyes of some people, the performance of technology is not enough. I remember just a key, an index of how to find the answer, not all, the brain is not a computer, I can't ask me to write down everything.(..... Written interview like to test grammar ask some unfamiliar API usage of you enough! )
One time the interviewer asked me a question, I said I do not know, but I guess it is like this, the other side asked me, why do you think so, I said intuitively, the other side smiled and did not speak. After the interview I looked, and sure enough, and I guess the same. Yes, I am intuitive, but this intuition is not the same as a woman's intuition, which is a technical intuition, a reflection of your past technical experience.
I am not a very professional web front end, not a very professional node. JS Development Engineer, not a very professional iOS development engineer. Employers will ask me, you are professional to do which aspect, why should I give you such a high salary?
What are the qualifications to talk about full stack engineers
I should be a full-stack engineer, industry experience has been more than 10 years. Have done a lot of independent products, also took a lot of projects, through the products include desktop, web products, mobile products, the web side covers the front and back end, mobile is mainly iOS and hybrid development.
Familiar with the Web front-end, the MVC/modular development has actual combat experience, familiar with Coffeescript, Grunt, Requirejs, handlebars and so on, I wrote a small JavaScript framework, a project in the JS code more than 10,000 lines. Be familiar with web optimization and know how to make webpages faster. Also slightly understand SEO, know what kind of URL and code will be more pleasing spider.
familiar with node. JS, several projects are based on node. JS and are currently published with the Open Source blog program Purelog, which has multiple modules published on NPM. Familiar with hybrid development, I used to have more than a year in the study of hybrid technology, multiple apps based on hybrid development technology, and a solution similar to phonegap. HTML5 on the mobile phone performance is quite familiar, dug a lot of technical pits, such as white screen problem, sqlite problem, scroll bar problem, hardware animation acceleration, click Delay problem and so on.
Will do design, familiar with Photoshop, all products, whether it is logo or interface are all their own design, although in the eyes of senior designers, but in the team of engineers is a more alternative.
Familiar with Objective-c, with more than two years of experience in iOS development, there are about 10 apps on the App Store. Familiar with the general operation of the server, you have a VPS and run multiple sites, although the configuration server often go to Google.
In the early years, I have been a year of Delphi, also made a few years of ASP, although these technologies I have now abandoned, completely to the *nix platform, but accumulated experience is in the. Years of project management experience, has worked in three companies as a project manager, accumulated project management experience for more than 4 years. Published technical and review articles on multiple technology portals. (This paragraph is mainly to illustrate the author's eligibility ...) Worship a bit, you need to work hard)
Why would I be an all-stack engineer?
I believe that many full-stack engineers will be the same as me because they want to start a business and become a full-stack engineer. I have a business and do product heart, and I am not willing to trouble others, some people are good at integrating resources, empty gloves white wolf, but I am obviously not such a person, so I had to do it myself.
After two lonely startups, I found out that I was not a suitable person to start a business, so I became a full-time engineer. I was initially doing ASP, then I started writing clients with Delphi, and then wrote three years of asp.net,2010 years because the company needed to start iOS development. The Web front end is always on its own, and the JavaScript in the project is basically what I'm doing.
I love to write code, love to reinvent the wheel, love new technology, and I think that's why I became a full-stack engineer. (haha)
on my own, I think the whole stack of engineers have more fun than the average engineer, because you know the shape of a product, you can design a product, you are from a global perspective to do things, you get more sense of accomplishment.
In fact, there are many things to learn.
Full stack Engineer