工程师文化和技术团队的管理
写于 2019 年 6 月 16 日。
目的
在很多方面,管理者和员工拥有同样的目的。
首先,都希望提升幸福感。包括物质奖励、成就感、愉悦感等等。
其次是希望提升个人能力:管理能力、技术能力、业务能力、影响力等等。
幸福感代表当下更好的生活,而能力提升用来保证未来更好的生活。
同样的,员目的工更多的是通过自己的努力,而管理者需要依靠团队的每一个成员。对于计算机技术团队来说,建立良好的工程师文化,是提升团队能力、提高执行力、打造优秀团队的重要途径。
什么是好的工程师文化
尊重
管理者和员工都是平等的,只有职级区别,没有优劣之差,没有谁高人一等。
一个人可能某方面做的不好,但在其他一些方面则是专家。而一个技术上非常优秀的人,同时也可能是一个难以相处的人。
关键是同理心,真的站在对方的角度看问题,只有理解了对方处境和诉求,才知道行为背后的原因,才有可能进行干预,让事情朝着更好的方向发展。
先承认自己的能力的有限,然后让每个成员意识到自己能力的有限。每个人都会犯错,团队的一个价值,就在于能纠正一些个人错误。
杜绝傲慢、也不要过分谦虚,需要的是理性。
真诚
公司和员工是合作关系,目标是要双赢。
我们在建造教堂、而不是在搬砖。管理者需要详细清晰地阐述自己的任务和目标,当前是什么处境、有什么基础、又有哪些困难。每个成员同样要明确地知道其他成员的任务和目标。
不要说大话、空话、套话,不要用高大上的使命感价值观来粉饰不合理。
表扬和批判都要言之有物,对事不对人。专注在问题的解决,为的是让彼此都更好。
连接兴趣、能力和工作
尽可能地让每个人做自己感兴趣的工作。整个团队的核心任务,需要是让每个成员都认可并感兴趣的。
尽可能地让每个人爱上自己做的事,兴趣可以转变,工作方式可以转变,把枯燥的工作能转化为有挑战的有趣的工作。
尽可能地让每个人做能发挥自己能力的事,获得成就感。
用事实说话
好不好,用事实证明,而不是靠 PPT。
用数据做决定,而不是先有了决定,再挑选数据。
任何决定之前,给出理由。管理者更不能拍脑袋。
重视技术基础的建设
技术基础往往不能提升创造业务指标,但却是长久发展必不可少的前提。管理者需要让升下级都明确地知道一个技术基础的意义。
软件工程没有速成,速成往往意味着技术债务,不解决只会越来越严重,变成定时炸弹。管理者要避免技术债务的出现。
对于已有的技术债务要计划解决。并且作为明确的工作任务进行分配,设计清晰地考察方法。管理者需要通过绩效目标等方式来保证,完成这类任务的价值,不能低于业务类任务的价值。
最大程度地自动化
工程师不是操作工。
工程师的价值在于让机器完成工作。人会犯错,机器不会。如果机器错了,那是代码没写好,改进它。
打造快速迭代的能力,UT/CI/CodeReview/CD,每个工程师都有能力让系统变得更好,而不需要特权。
拥抱开源精神
学习、使用、回馈开源社区。
像运营开源项目一样运营自己的代码,让别人能快速用起来。
拥有详细的文档,解释背景、原理和基础知识,告诉别人怎么用起来,怎么做贡献。
注重代码质量,标准的 Code Review,使用自动化测试。
代码没有 Owner,每个人都能自由修改。
打造学习氛围
软件工程不是计件劳动,工程师需要时间思考、学习。
把分享作为例行任务。分享不应限制与当前工作用得到的,或是本专业的。
让所有人都知道,分享人是最大的受益者。