Four years ago, I speak at QCon a “build a powerful small team” (after finishing the PPT to share in here) mentioned engineering culture, today, I would like to write an article about engineer culture again, on the one hand, because I have some ideas and experience, on the other hand, because I was walking on the way of business, no doubt, Engineers to build a strong culture of the team or company, it is necessary to put their own photos of the white background and black text related ideas form “in writing”, to play their own face, “if the future do not do, this article will play I the face of the future” | | “this article is too childish, the future I will beat me now face”, of course, if you want to face, I hope it is the former.
Again, this is not a hiring post because I think the first thing to do in hiring is not to put out an AD or go to a headhunter. It’s to make yourself a company worthy of a real engineer and then talk about the attractive things.
Why engineer culture
Looking at the development of the society in the last twenty years, computers and the Internet have penetrated into every corner of the society. All kinds of computer technologies have become a powerful engine for the development of the whole world. All kinds of innovation, whether business innovation or technological innovation, depend on the rapid evolution of technology. Technology has become the core force to liberate productive forces and improve the efficiency of social operation. Technological innovation companies led by the United States are effectively changing the world and human life and production habits.
Today, every technical person working in the computer industry should feel lucky that we have not only chosen the right industry, but also been born in the right era, experiencing unprecedented stimulation and change, compared to our parents’ life, we are really lucky to have lived through this era. So, for those of us who have chosen the right career and were born in the right era, the only question we need to think about is, am I in the right place and doing things the right way?
It seems to me that there are three kinds of business companies in the world,
- Operations or sales driven companies. Such companies are good at operations and marketing, and technology for them is more about supporting large-scale marketing campaigns and cost control, so basically there is no need for technological innovation. The biggest problem with such companies is insecurity.
- Product-driven companies. These companies are good at creating products that improve users’ life experience. Technology for them, in addition to supporting large-scale online users, they are looking for technological innovations that enhance user experience and improve the efficiency of the entire business process. For example: UI interaction aspect, whole business process aspect. The biggest problem with this kind of company is that it is easy to be imitated and copied by others.
- Technology-driven companies. These companies believe that technology can change the world. They are more about creating disruptive things with powerful engineering skills. They are more about replacing people with automated technologies. For example, modern steam engine technology has replaced a lot of people, digital technology has replaced a lot of people to deliver information, and now, companies like this hope that artificial intelligence will replace stupid people to make decisions. The biggest problem with such companies is that they can make something that doesn’t sell well.
All three companies can be successful and have problems, but they all need strong technology, but they put it in different places.
No matter how much you despise techies, you can’t deny that your life today depends so much on these engineers that you wouldn’t know how to live without them. Grandpa Deng said decades ago – “science and technology is the first productive force”, no matter what kind of science and technology theory to be implemented will depend on how advanced engineering technology.
So, today, as an IT or Internet company, “engineer culture” is not a problem, but a common sense!
Call waiting welfare
1. Recently sorted out 20G resources, including product/operation/test/programmer/market, etc., and Internet practitioners [necessary skills for work, professional books on the industry, precious books on interview questions, etc.]. Access:
-
Scan the code of wechat to follow the public account “Atypical Internet”, forward the article to the moments of friends, and send the screenshots to the background of the public account to obtain dry goods resources links;
2. Internet Communication Group:
-
Pay attention to the public account “atypical Internet”, in the background of the public account reply “into the group”, network sharing, communication;
Characteristics of engineer culture
The features I list below come from: Google’s Redefining the Company, my work experience at Amazon, 37Signals’ Rework, What Makes Good Engineering Culture on Quora? What Makes Good Engineering Culture on Slideshare, and some of my practices in the past six months.
In short, I can easily summarize the engineering culture into two broad categories: “freedom” and “efficiency.”
There should have been “innovation”, but I personally believe that innovation takes place only when there is an obsession with efficiency in a free environment.
Innovation is not the emergence of new things out of thin air. In fact, if we observe the history of human development, it is not difficult to find that almost all innovations basically jump out of the original thinking mode and use new thinking mode to improve the efficiency of original problems. For example: communication, transportation, medical care, education, life… It’s almost all about optimizing efficiency.
Therefore, if your mind is not free, it is difficult for you to get out of the old mode of thinking, and you will not think of new methods and ways to use the old mode of thinking. If it is not for the improvement of efficiency, the innovation may not be relevant.
Therefore, I think, engineer culture is freedom plus efficiency!
free
First of all, the engineer culture means the innovation culture. Engineers are people who have the impulse to innovate, because people who have the creative skills usually have the impulse to create something. And the source of innovation water comes from the liberation of the spirit, the spirit of freedom will lead to all kinds of strange ideas, ordinary people think impossible crazy ideas and imagination, and these ideas and imagination led to innovation.
Spiritual freedom is embodied in:
- Self-driven. The best way to govern yourself is to govern yourself. The worst kind of management is parental and nanny management. Real motivation comes from the work of interest.
- Flexible working hours and location. Engineers do more mental work than physical work, and freedom of time and place allows engineers to do their mental work more efficiently. Remote is a great way to work and the open source community is pretty much the same way. For topics about Remote, see 37Signals’ book Remote
- Information equality. This means that all employees are given raw information, not processed and digested by managers, which can easily lead to misunderstandings and completely wrong behavior. Equality of information, including strategy, direction, goals, financial, small documents, code, and knowledge sharing, etc. Similarly, it is also reflected in the expression of opinions. Everyone has equal opportunities to express their opinions and suggestions, so that more ideas and debates can be stimulated, and different and better ideas can emerge. Instead, everyone sees the problem and no one dares to speak up. In Google, in addition to code sharing, there is also Thanks God, It’s Friday culture. Every Friday, executives come out and let employees ask all kinds of tough questions. In Amazon, code and documents are basically open to all employees, including financial statements. In addition to all the Principle SDE of NB, there is a Principle Talk every now and then (there are many talks which are quite imaginative). There is also the Up the River culture inside Amazon. Every year, a group of the smartest and most thoughtful people of the company will be selected to gather and discuss the next step and strategy of the company. And the corresponding KPI can be directly pressed to the Senior VP.
- Don’t be afraid of mistakes. The correct way to deal with mistakes is to analyze and learn from them, not to punish them. The former makes people improve, the latter makes people shrink. The biggest mistake is afraid to make mistakes, the biggest problem is afraid to face the problem.
- Lax approval system doesn’t even have an approval system. Approval usually implies three things, 1) incomplete trust in people, 2) cumbersome processes, and 3) mental constraints. These are the natural enemies of innovation and imagination. The more regulation, approval and process a company has, the less dynamic the company will be.
- 20% free time. Google came up with this idea of giving employees 20% of their time to work on projects they wanted, and that’s how Gmail came about.
The efficiency of
Engineers are by nature driven by efficiency. Some people say that programmers who spend a lot of time making automated tools are not as efficient as human beings. For example, it takes 5 hours to write an automated script, but it only takes 3 hours to repeat the process 200 times. People with that understanding don’t understand engineering at all.
On the one hand, this tool can be shared and reused, so that more people can benefit from it. I spent 5 hours developing this tool this time, and I can use it in another place in an hour next time. More importantly, it’s a culture, a culture of efficiency, that encourages and inspires more of this. If you spend a lot of time because a programmer to develop automation tools, but don’t think the programmer efficiency, to criticize and even punish, you will kill efficiency of culture (about efficiency, you can see my another article on overtime and efficiency “, you will really understand what is the efficiency)
Human beings are more intelligent than other animals is used and invented tools, and archaism cloud: “to do a good job, must first sharpen his”, take a look at the equipment you will know how important the quality of the tools of war, the power of a company in execution, and the power of execution is that you have what kind of support tools. These are not the culture of engineers, but the culture of human development.
In terms of engineer culture, especially software engineering, the specific performance of improving engineering efficiency is as follows:
- Simplified. Simplicity is not crude. Simple things usually mean better understanding by users and easier maintenance and operation. As In Working Backwards, product managers must write three documents for each new product or feature: The media pr document, user manual and FAQS are no more than two A4 pages in total, and no illustrations are allowed, in order to make the product simple and easy to use.
- The relentless push for automation. The very essence of programming is to automate, and look at how much has been automated in human history. For automation, it is not only the elimination of repetitive human labor, but more importantly, there are many things that humans can do completely beyond machines. For example: add a machine, the program can be completed in seconds, but it is impossible for human beings to achieve such a speed. For example: the automatic system of e-commerce using programs to manage a huge number of orders, no matter how many people are added, it is impossible to complete as well and quickly as the machine. Automation requires the development of productivity tools such as continuous integration, continuous deployment, automated operations, basic automated operations, and even automated operations tools. (Amazon’s software engineering is obsessed with automation and simplicity.)
- Avoid inefficient organizational structures and inefficient management. This is reflected in the following aspects: 1) flat organization structure, 2) try to use automated tools instead of support type work, 3) not more than 10 people the whole stack of small teams, 4) according to the division of personnel skills but according to the division of labor is responsible for the product or function (please see about the division of labor, let’s talk about the division of labor), 5) is not solve the problem, the meeting is on the meeting, 6) Reduce communication and decision-making through product goals or Tenets (every department, team, and product at Amazon has its own Tenets, which indicate what it wants and doesn’t want, thus avoiding a lot of bickering and difficult trade-off decisions, such as: There are several tenets of AWS: Operation and maintenance is of the highest quality — it means that any requirement that will complicate operation and maintenance may be rejected by the engineering team, and Throughput & Latency cannot be worse — it means that functions should give way to performance, because when performance gets worse, users will buy more resources.
- Proper component abstraction. Abstraction is part of simplification. On the one hand, it means reuse and generality, and on the other it means great extensibility to accommodate all possibilities. Most importantly, abstraction means the output of technical capabilities, both internally and externally to other teams. Such as: Google’s BigTable/graphs/ProtoBuffer, FaceBook’s Thrift, and the inside of the Amazon web Service framework Coral Timber logging monitoring Service, processing, And Amazon Lock Framework (a distributed locking Framework) used across AWS products…
- Develop high quality products. High-quality code is not only easier to modify and maintain, it also leaves more time to do creative work for the future because there are fewer online glitches to deal with. This means that very rigorous Design Review, Code Review and testing are required. For Code Review, please refer to this article “How to Do Technology from Code Review”. For rigorous testing, please refer to this article “How to Do Performance Testing”.
- Constantly raising standards and hiring the best people. If you take the law from above, you get it. If you take the law from below, you don’t get it. If a company or a team wants to become better and stronger, it must constantly improve its work standard. Improving work standard means constantly cultivating and recruiting better people. Both Amazon and Google have recruiters named Bar Rasier, who was set up to raise the Bar.
- Create a culture of continuous improvement. A good organization, a good team, is the need to constantly reflect forward, which requires all staff to come together. At the micro level, a summary meeting is required to analyze the gains and losses of the project after the completion of the project, and a fault analysis meeting is required to reflect the gains and losses after the occurrence of faults. In Amazon, a Correction of Errors COE (COE) document is required for serious faults, including a section called “Ask 5 Whys”. Allow yourself to ask yourself at least five whys. At the macro level, a company should do a certain job data analysis or employee survey every year, such as whether it has recruited good people, the input-output ratio of the job, where employees spend their time, etc., and then constantly use technical means to improve. (Amazon engineers annual employee survey is the most fine live so big I seen the finest questionnaire, problems in addition to the company, the manager, culture, and from the daily work, the development environment, a rally, test automation, product quality, software architecture, software maintenance, online processing, annual plan, the construction of data warehouse, universal tool to vote… This employee survey leads directly to the company’s investment direction in the project.
How does the engineer culture land
If you want to enforce any culture within your company, you have several options:
- Through politics: You need to hold three spots — hiring, performance reviews, and promotions. For example, if you’re looking to simplify and automate in the engineering culture, when you’re hiring, you need to bring in people who understand simplification and love automation, and then you need to put a hard indicator in the performance review and promotion area — what did you simplify this year? What is automated? If not, you may not be promoted and your performance may not be up to par.
- By economic means: let the cost of not doing it > the cost of doing it. Then, normal humans would choose the lower-cost option. For example, if you are going to implement Design/Code Review/UT to improve quality, you can move QA and OPS teams to the side and let Dev teams do their own testing and be responsible for it, so that those Dev teams can do multiple manual tests and deal with multiple online glitches. They will automatically write automated tests and do Code Review, while QA and OPS teams just help Dev make tools for you, and Dev owns all the testing and operation, and Dev is responsible for any failure, so they will find that, The cost of not doing Code Review and UT is far greater than the cost of doing C Code Review/UT, so they will do things with low cost.
Finally, there are a few minor conditions for engineering culture to be established.
- First, the team should be small, Ownership is very important, Eat Your Own Dog Food. No one to wipe your ass, eat your own shit, no pain, no motivation to progress.
- Second, love to learn and try, learn to try new technology, broaden your horizon, learn to try new ways of thinking, otherwise, stay in the same place, the original way of thinking will only make you in the same place.
- Third, bosses trust technology more than management. Believe that technology will solve problems with technology, believe in management, then there will only be systems, processes and values to solve problems.
other
Having said that, times are still evolving, but this is something I’ve experienced or seen in engineering culture over the years. A few final comments —
996 and overtime Work have never been a problem for engineers. When solving technical problems or creating things, engineers are very self-conscious and do not need to be driven by others. Engineers are the most willing to Work Hard. I’m sure that almost everyone who goes into programming is basically interested in it, thinking it’s fun, and then being told by companies that they’re not interested in it. Why, do you companies learn from Chinese education? People have a high interest in this matter, but it is to pass the exam /KPI/996 things to kill people’s interest bit by bit, turn people into machines, slaves, cattle, make people tired of learning and work, is what you managers hope? Do you manage only when you make people unambitious? Like the first type of person in The Two Management Styles in Software Development?
Also, I don’t know why many people (including programmers themselves) come up to me and tell me THAT I’m an idealist when I mention these things. These are not ideals anymore and have been used by many successful companies for many, many years. You just haven’t seen it. Others say that China’s national conditions are different. That makes it harder for me to understand. This reminds me of the time when the Qing Dynasty sent a bunch of people to go abroad for investigation and came back, saying that the foreign republican things were not in line with China’s national conditions and were eventually drowned out in the tide of history. In addition, what do you mean “China’s national conditions are different”? China has the world’s largest number of Internet users and the world’s largest market. It is no longer a poor country in the past. What are the differences between China’s national conditions?
I don’t know what engineers do for a living? But I think we’ve chosen an exciting career, and we’re in the midst of a huge growth in the industry, and we need to ask ourselves, are you willing to let your ability, youth and enthusiasm die out?