写于 2019 年 6 月 16 日。

目的

在很多方面,管理者和员工拥有同样的目的

首先,都希望提升幸福感。包括物质奖励、成就感、愉悦感等等。

其次是希望提升个人能力:管理能力、技术能力、业务能力、影响力等等。

幸福感代表当下更好的生活,而能力提升用来保证未来更好的生活。

同样的,员目的工更多的是通过自己的努力,而管理者需要依靠团队的每一个成员。对于计算机技术团队来说,建立良好的工程师文化,是提升团队能力、提高执行力、打造优秀团队的重要途径

什么是好的工程师文化

尊重

管理者和员工都是平等的,只有职级区别,没有优劣之差,没有谁高人一等。

一个人可能某方面做的不好,但在其他一些方面则是专家。而一个技术上非常优秀的人,同时也可能是一个难以相处的人。

关键是同理心,真的站在对方的角度看问题,只有理解了对方处境和诉求,才知道行为背后的原因,才有可能进行干预,让事情朝着更好的方向发展。

承认自己的能力的有限,然后让每个成员意识到自己能力的有限。每个人都会犯错,团队的一个价值,就在于能纠正一些个人错误。

杜绝傲慢、也不要过分谦虚,需要的是理性

真诚

公司和员工是合作关系,目标是要双赢。

我们在建造教堂、而不是在搬砖。管理者需要详细清晰地阐述自己的任务和目标,当前是什么处境、有什么基础、又有哪些困难。每个成员同样要明确地知道其他成员的任务和目标。

不要说大话、空话、套话,不要用高大上的使命感价值观来粉饰不合理。

表扬和批判都要言之有物,对事不对人。专注在问题的解决,为的是让彼此都更好。

连接兴趣、能力和工作

尽可能地让每个人做自己感兴趣的工作。整个团队的核心任务,需要是让每个成员都认可并感兴趣的。

尽可能地让每个人爱上自己做的事,兴趣可以转变,工作方式可以转变,把枯燥的工作能转化为有挑战的有趣的工作

尽可能地让每个人做能发挥自己能力的事,获得成就感。

用事实说话

好不好,用事实证明,而不是靠 PPT。

用数据做决定,而不是先有了决定,再挑选数据。

任何决定之前,给出理由。管理者更不能拍脑袋。

重视技术基础的建设

技术基础往往不能提升创造业务指标,但却是长久发展必不可少的前提。管理者需要让升下级都明确地知道一个技术基础的意义。

软件工程没有速成,速成往往意味着技术债务,不解决只会越来越严重,变成定时炸弹。管理者要避免技术债务的出现。

对于已有的技术债务要计划解决。并且作为明确的工作任务进行分配,设计清晰地考察方法。管理者需要通过绩效目标等方式来保证,完成这类任务的价值,不能低于业务类任务的价值。

最大程度地自动化

工程师不是操作工

工程师的价值在于让机器完成工作。人会犯错,机器不会。如果机器错了,那是代码没写好,改进它。

打造快速迭代的能力,UT/CI/CodeReview/CD,每个工程师都有能力让系统变得更好,而不需要特权。

拥抱开源精神

学习、使用、回馈开源社区。

像运营开源项目一样运营自己的代码,让别人能快速用起来。

拥有详细的文档,解释背景、原理和基础知识,告诉别人怎么用起来,怎么做贡献。

注重代码质量,标准的 Code Review,使用自动化测试。

代码没有 Owner,每个人都能自由修改

打造学习氛围

软件工程不是计件劳动,工程师需要时间思考、学习。

把分享作为例行任务。分享不应限制与当前工作用得到的,或是本专业的。

让所有人都知道,分享人是最大的受益者。