Four years ago, I gave a talk at QCon called
Build a strong, small teamAfter finishing
PPT is shared here) mentioned engineering culture, today, I want to here to write an article about engineer culture, on the one hand, because I have some ideas and experience, on the other hand, because I was walking on the way of business, there is no doubt that to build a strong engineer team or company of culture, so it is necessary to put their own want to close the idea to open photos of the white background and black text “in writing”, To play his face – “if the future do not do, this article will play I the face of the future” | | “this article is too childish, face of the future I will beat me now”, 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 US imperialists are changing the world and human life and production habits.

Today, every technical person working in the computer industry should feel lucky, because not only did we choose the right industry, but we were born in the right era, and could experience unprecedented stimulation and change, compared to our parents, we are really lucky to live through such an era. So, for those of us who have chosen the right career and were born in the right year, it’s just a question of, am I in the right place?

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!

Characteristics of engineer culture

The features I’ve listed below come from Google’s Redefining the Company, my experience at Amazon, 37Signals’ Rework, And Quora’s What Makes Good Engineering Culture? What Makes Good Engineering Culture on Slideshare, and some of my practices in the past six months.

For me, 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.

free

First of all, the culture of engineers means the culture of innovation. Engineers are people who are motivated to innovate, because people with creative skills usually want 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 related to Remote, see the book Remote.
  • Information equality. This means that all employees get raw information, rather than layers of information digested by managers, from big ones like strategy, direction, goals, and finances to small ones like documents, codes, and knowledge sharing. 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 once in a while, and many of the talks 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 ideas 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 restraint. 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, and more people can benefit from it rather than micro-comparisons. More importantly, it’s a culture, a culture of efficiency, and he’ll encourage more of it. 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 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 is good or bad of contend for tool, 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: Media pr, user manual, FAQs, no more than two A4 pages, and no illustrations are allowed.
  • The relentless push for automation. The very essence of programming is automation, and look at how much automation has been done in human history. For automation, it is not only to eliminate the repetitive labor of human flesh, but more importantly, a lot of things can not be done by machine. For example, with a machine, the program can be completed in seconds, and people can never achieve such speed. 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 organizational structure, 2) efforts to replace support work with automated tools, 3) small, full-stack teams of no more than 10 people, 4) division of labor not by skill but by product or function (see Let’s Talk about Division of Labor), 5) Reduce communication and decision-making through product goals or Tenets (each department, team, and product in Amazon has its own Tenets, which indicate what is wanted and what is not, for example: AWS Tenets: Throughput & Laentcy is of the highest quality — this means that the engineering team may reject any requirements that complicate operations, and Throughput & Laentcy can’t get any worse — this means that functions have to 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 MapReduce/BigTable, FaceBook’s Thrift, Amazon’s in-house WebService framework Coral Service, Timber, which handles log monitoring, 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 the article “How to Do Technology from Code Review”. For rigorous testing, please refer to the 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, which means constantly recruiting the best 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 focus in three areas — hiring, performance appraisal & promotion. 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 want to implement Design/Code Review/UT to improve quality, you can move the QA and OPS teams to the side and let Dev team do their own testing, while QA and OPS team just do the tools for you, and the testing and operation are all your Dev Ownership. Dev is also responsible for the failure, so they will find that the cost of not doing code review and UT is far greater than the cost of doing code review/ UT, and they will do it.

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?

(Full text)



Follow CoolShell’s wechat public account to search for articles on your mobile phone

) Please indicate the author and sourceCool shell – CoolShell. CnPlease do not use it for any commercial purpose.)

– = = =
accessCool shell 404 pageLooking for a lost child.= = = –



Revenue from this AD has been donated to Wikipedia by advertisers