What is a real engineer culture

Undoubtedly, engineers have played an extremely important role in the history of Internet technology, such as the programmer Bill Gates who founded Microsoft, Page and Brin who created Google with search algorithms, and Mark Zuckerberg, the hacker who built the Facebook social network. Grid, countless famous Internet companies were founded by engineers.

 

Is there a specific culture for technologists? What is a real engineer culture?

 

Today, I want to talk about the engineer culture again, on the one hand, because I have some ideas and experiences; on the other hand, because I am also on the road of entrepreneurship.

 

In my opinion, to build a team or company with a strong engineer culture, it is necessary to form a "document" of your own ideas in black on a white background, so that you can slap yourself in the face later:

 

"If the future doesn't do it, this article will slap my future in the face" or "This article is too naive, the future me will slap my present face". Of course, if it has to be slapped in the face, I hope it is the former.

 

Why engineer culture?

 

Looking at the development of society in the past two decades, computers and the Internet have penetrated into every corner of this society, and various computer technologies have become a powerful engine for the development of the entire world.

 

Both business innovation and technological innovation rely on the rapid evolution of technology, which has become the backbone of liberating productivity and improving the efficiency of social operations.

 

Today, every technician in the computer industry should feel lucky, because not only did we choose the right industry, but we were also born in the right era, and we can feel unprecedented stimulation and change.

 

At this point we only need to think about one question, and that is, are we in the right place and doing things the right way?

 

In my opinion, there are three types of business companies in this world:

 

Operating or sales-driven company

 

Such companies are good at operations and marketing. For them, technology is more to support large-scale marketing activities and control costs. Therefore, basically, technological innovation is not required. Such companies are very insecure.

 

 

product driven company

 

Such companies are known for their products and create products that can improve the user's life experience. For them, technology, in addition to supporting large-scale online users, is more important to enhance the user experience and improve the efficiency of the entire business process. Technological innovations, such as In terms of UI interactions and business processes.

 

The biggest problem with such companies is that they are easily imitated and copied by others.

 

 

technology-driven company

 

These types of companies believe that technology can change the world, and they are more about using powerful engineering skills to create disruptive products and replacing human jobs with various automated technologies.

 

For example, modern steam engine technology has replaced a large amount of manual labor, and digital technology has replaced a large amount of manual labor for information transmission. In the future, they also hope to use artificial intelligence to replace human beings to make more decisions. The biggest problem with such companies is that they may make products that are well-received and not well-received.

 

These three types of companies may be successful and have problems, but, without exception, they all need strong technical support, but they place technology in different positions.

 

No matter how much you look down on technicians, you can't deny that your life today is quite dependent on these engineers. Without them, you probably don't know how to live.

 

Grandpa Deng said decades ago - "Science and technology are the primary productive forces", no matter what kind of scientific and technological theory is to be implemented, it will depend on how advanced the engineering technology is.

 

So, today, as an IT or Internet company, "engineering culture" is not a problem, but a common sense!

 

"Two Magic Weapons" of Engineer Culture

 

In a nutshell, I summarize so much engineering culture into two categories: "freedom" and "efficiency."

 

There should also be "innovation", but I personally think that the premise of innovation is that innovation will happen in the obsession with improving efficiency in a free environment.

 

Innovation is not the emergence of new things out of thin air. In fact, it is not difficult to observe the history of human development. Almost all innovations are basically "jumping out of the original thinking mode and using a new thinking mode to qualitatively improve the efficiency of the original problem."

 

For example: communication, transportation, medical care, education, life... Almost all of them are optimizing efficiency.

 

Therefore, if the spirit is not free, it is difficult to jump out of the old thinking mode. If it is not for the improvement of efficiency, this innovation may not be grounded. Therefore, I think, the engineer culture is freedom plus efficiency!

 

以上列举的这些特征,来源于:Google 的《重新定义公司》(How Google Works)、我在 Amazon 的工作经历、37Signals 的"Rework"、Quora 上的" What Makes Good Engineering Culture? "、 Slideshare 上的 “What Makes Good Engineering Culture”,以及我最近这半年来的一些实践。

由前 Google CEO 施密特编写的《重新定义公司》(How Google Works)一书

 

 

自由

 

工程师文化首先意味着创新文化。因为工程师都是有创新冲动的人,而创新的源泉来源于精神的解放,精神自由才会引发各式各样的奇思怪想。

 

因此他们才会有常人觉得不可能的疯狂想法和想象力,而这些想法和想象力导致了创新。

 

精神上的自由具体表现在以下六个方面:

 

1. 自我驱动。自己管理自己是最好的管理,最失败的管理是家长和保姆式的管理,从兴趣出发的工作才可能迸发出真正的动力。

 

2. 灵活的工作时间和地点。工程师们的工作更多的是脑力工作,而不是体力工作,工作上时间和地点的自由安排可以让工程师们的脑力工作更有效。

 

Remote(远程办公)是一个很不错的工作方式,开源社区基本上都是使用这钟方式。

 

3. 信息平等。这意味着,全体员工得到的是原始信息,而不是被管理者们层层加工消化后的信息,信息的屏蔽很容易造成误解和完全错误的行为。

 

信息的平等,既包括战略、方向、目标、财务等大信息,也包括文档、代码和知识的共享等小信息。

 

同样,平等也表现在意见表达上,任何人都有表达自己的意见和建议的平等机会,这样才会激发出更多的思路和思辩,从而才会有更多更好的思路出现。

 

在 Google,除了代码全员共享,还有 Thanks God, It’s Friday 的文化,每周五高管们会和员工在一起,面对面回答员工提出的各种尖锐问题;在 Amazon,代码和文档基本上对全员开放,包括财务报表也对员工开放。

 

另外,亚马逊所有最牛的 Principle SDE(资深技术专家)隔三岔五都会有一个 Principle Talk(有很多 Talk 相当令人开脑洞)。

 

还有 Amazon 内部每年会选出一批公司最聪明最有想法的人开会,讨论公司下一步的发展战略,并可以把相应的 KPI 直接传递给 Senior VP。

 

4. 不害怕错误。处理错误的正确姿势是分析和总结教训,而不是惩罚犯错人。前者让人改善进步,后者让人萎缩不前。工程师最大的错误就是不敢犯错,最大的问题就是不敢直面问题。

 

5. 宽松的审批系统甚至没有审批系统。

 

审批通常暗示着三件事:

  • 对人的不完全信任

  • 繁琐的流程

  • 思维上的束缚

 

这些都是创新和想象力的天敌。一个公司的监管、审批、流程越重,这个公司的活力也就越差。

 

6. 20% 的自由时间。这是 Google 提出来的,员工有 20% 自由的时间做自己想做的项目,Gmail 就是这么诞生的。

 

 

效率

 

工程师天生是追求效率的。有人说认为程序员花大量的时间做自动化的工具,还不如人肉的效率高。

 

比如写自动化的脚本花 5 个小时,而重复做这件事 200 次只花 3 个小时。有这样的理解的人根本不懂工程师和工程。

 

一方面,这个工具可以共享重复使用,更多的人可以从中受益。更重要的是,这是一种提高效率的文化,它会鼓励和激发出更多这样的事情发生。

 

如果公司管理者因为一个程序员花大量的时间开发自动化的工具,而认为这个程序员没有效率,并且对他批评甚至惩罚的话,那么这个管理者就完全扼杀了提高效率的文化。

 

人类之所以比别的动物聪明就是会使用和发明工具,而古语也有云:“工欲善其事,必先利其器”。

 

看看美军的装备你就知道战争工具的好坏有多重要了,一个公司的强大之处在执行力,而执行力的强大之处在于你有什么样的支持工具。这些,已经不是工程师文化,而是人类发展的文化。

 

对于工程师文化来说,尤其是在软件工程领域,提升工程效率具体表现在如下七个方面:

 

1. 简化。简化不是简陋,简单的东西通常意味着用户更好理解,也意味着更容易的维护和运维。

 

就像阿里推行的“小而美”、乔布期推崇的“没有产品手册简单易用的产品”Amazon 推行的 Working Backwards 里说的那样。

 

一个新的产品或功能,产品经理需要写三个文档:媒体公关文、用户手册、常见问题,三个文档总共加起来不超过两页 A4 纸,且不准用任何图片说明,目的就是为了让产品简化和容易使用。

 

2. 残酷无情的推行自动化。编写程序的最本质的目的就是自动化,对于自动化来说,不仅仅只是消除人肉的重复劳动,更重要的是,很多事情人的力量完全比不上机器。

 

比如:增加一台机器,程序运算在秒级就可以完成,而人是永远不可能达到这样的速度。

 

再比如:电商中用程序管理数量巨大的订单自动化系统,增加再多的人都不可能像机器那样完成的又好又快。

 

自动化需要大力开发提高生产力的工具,比如:持续集成,持续部署,自动化运维,基础自动化运维,甚至自动化的运营工具。

 

3.避免无效率的组织架构和无效率的管理。

 

这体现在以下这些方面:

  • 扁平化的组织架构。

  • 努力用自动化工具取代支持型的工作。

  • 不超过 10 个人的全栈小团队。

  • 不按人员的技能分工而是按其负责的产品或功能分工。

  • 开会不是解决问题,开会是表决提案。

  • 通过产品的目标或信条来减少沟通和决策过程。

 

比如,Amazon 里的每个部门、每个团队、每个产品都有自己的信条,这个信条标明了要什么不要什么,这样可以避免很多扯皮和难缠的选择。

 

我们来看看 AWS 的几个信条:运维是最高优级的——这意味着只要是会让运维变得复杂的需求都可能被工程团队拒掉。

 

Throughput & Latency(吞吐量和延迟)不能更差——这意味着功能要为性能让路,因为性能变差了,用户就要购买更多的资源。

 

4.正确的组件抽象。抽象是简化的一部份,最重要的是,抽象意味着技术能力的输出,无论是内部的其他团队还是外部的团队。

 

比如:Google 的 MapReduce/BigTable/ProtoBuffer,FaceBook 的 Thrift,还有 Amazon 内部的 Web Service 框架 Coral Service、处理日志监控的 Timber,以及全线 AWS 产品都用到的 Amazon Lock Framework(一个分布式锁框架)……

 

5.开发高质量的产品。因为高质量的代码,不但可以易于修改和维护,还可以因为较少处理线上故障,从而有更多的时间去为未来做更多创造性的工作。

 

这意味着需要有非常严谨的 Design Review,Code Review,以及测试。

 

6.不断的提高标准以及招聘最好的人。如果一个公司或一个团队想变得越来越好、越来越强大的话,就必须要不断提高自己的工作标准。

 

提高工作标准意味着要不断地培养和招聘更好的人才。在 Amazon 和 Google 的招聘系统中都有一个叫 Bar Rasier 的职位,这个职位就是为了提高招聘标准而设立的。

 

7.创建一个持续改善的文化。一个好的组织和团队,需要全体员工一起不断反思前进。

 

在微观层面上,在项目做完后需要有一个总结会分析项目中的得失,在故障出现后,需要有故障分析会。

 

在 Amazon,严重的故障需要写一个 COE(Correction of Errors)的文档,其中有一节叫“Ask 5 Whys”,让你问自己关于这个故障至少 5 个为什么。

 

在宏观层面上,一家公司每年都应该做一定的工作数据分析或是员工调查。比如,是否招聘到了不错的人、工作的投入产出比、员工在哪些地方花费时间等等,然后不断的用技术手段来改善。

 

Amazon 每年的工程师员工调查表是我见过的最细的调查表了, 表中的问题除了针对公司、管理层、文化等方面。

 

还包括日常工作、开发环境、持续集成、测试自动化、产品质量、软件架构、软件维护、线上问题处理、年度计划、数据仓库建设、通用工具投票……这个员工调查直接导致公司对工程的投资方向。

 

工程师文化如何落地?

 

如果你要让一种企业文化在公司内得到执行,有下面几个手段可以选择:

 

 

“政治”手段

 

招聘、绩效考核和升职。比如,你要落地工程师文化中的简化和自动化,那你在招聘的时候,需要把懂简化和喜欢自动化的人招进来。

 

然后在绩效考核和升职的地方设置上一条硬性指标——你今年简化了什么?自动化了什么?如果没有,不但不能升职,绩效还可能不达标。

 

 

“经济”手段

 

让不做这件事的成本 > 要做这件事的成本。然后,正常的人类都会选择成本低的方案。

 

比如,如果你要推行 Design/Code Review/UT 以提高质量,你就把 QA 和 Ops 团队全挪到一边去,让 Dev 团队自己测试,自己负责。

 

这样等这些 Dev 重复多次手动测试,处理多次线上的弱智故障,他们就会自然而然的写自动化测试和做 Code Review 了。

 

而 QA 和 Ops 团队只是帮 Dev 你做工具罢了,而测试和运维的事全是你 Dev 的 Ownership,出了故障也是 Dev 自己负责。

 

于是,他们就会发现,不做 Code Review 和 UT 的成本远远大于做 Code Review/UT 的成本,他们就会去做成本低的事了。

 

最后,工程师文化要落地,还有几个小条件:

  • 团队要小,Ownership 很重要,Eat Your Own Dog Food。 没有人帮你擦屁股,自己的屎自己吃,没有痛苦,不会产生想进步的动力。

  • 热爱学习和尝试。学习尝试新的技术,开拓眼界,学习尝试新的思维方式。否则,原有的思维方式只会让你在原地打转。

  • 老板更多的相信技术而不是管理。相信技术会用技术来解决问题,而只相信管理,那就只会用制度、流程和价值观来解决问题。

 

 

其他

 

以上这些是我这么多年经历过或看到的工程师文化,最后说说我的几个观点。

 

996 和加班这件事,对于工程师来说从来都不是问题。在解决技术问题或是创造的时候,工程师是个很自觉的群体,基本不需要他人驱动。

 

我相信几乎对于所有走上编程这条道路的工程师,基本上都是兴趣所至,他们觉得编程很有趣。

 

但很多工程师却被一些公司的 996 搞得对编程毫无兴趣,为什么?这些公司就是通过考试/KPI/996这些东西把工程师的兴趣一点一点的磨灭掉、对学习和工作产生了厌倦和讨厌。

 

另外,文章中我说的这些文化,并不是什么理想主义,而是已经被很多成功的公司使用了很多年。

 

还有人说,因为中国国情不同所以这些方法并不实用,这更让我费解。中国有全世界数一数二的互联网用户,也有全世界数一数二的市场,不再是以前那个一穷二白的年代,中国的国情到底有哪些不同呢?

 

我不知道各位工程师为什么而活着?但我觉得,我们选择了一个刺激的职业,也赶上了这个行业大发展的时代。

 

我们不妨扪心自问一下,你是否愿意让自己的能力、青春和热情就这样被磨灭掉?

Guess you like

Origin http://43.154.161.224:23101/article/api/json?id=326311989&siteId=291194637