阿里工程师修养之:如何量化考核技术人的 KPI ?

前言

对技术人来说,技术是成长的“核心”。然而,在实际工作协作中,技术的重要性常常被业务所掩盖,造成先业务后技术的现象。一起探讨、交流。

为什么需要技术 KPI ?

在业务技术团队,有一个不好的趋势就是团队越来越业务,越来越没有技术味道。每个人都在谈业务,技术大会上在谈业务,周会上在聊业务,周报里写的是业务项目……

唯独少被谈及的是技术本身。此处并不是说业务不重要,而是说理解业务和把控业务需求是技术人员的 base,而不是全部。

将就的代价

这种技术味道的缺失对技术团队来说是非常可惜的,也不利于技术人员的成长和发展。因为很难想象一个没有技术追求的团队能开发出一个健壮的、可维护性好、可扩展性好的系统。相反,这种业务代码的堆砌,从短期看也许是“较快”实现了业务需求,但是从长远来看,这种烂系统的增加会极大的阻碍业务的发展,形成一个个的黑洞应用,而工程师被裹挟在业务需求和烂系统之间,疲于应对,心力交瘁。

这种将就将导致系统腐化,技术债越垒越高,像肿瘤一样消耗你所有的能量。

我不是药神,只能尝试开出一方——那就是在不影响业务的情况下(特别是相对稳定的业务,请拒绝业务方的时间倒排),Tech Story 应该和 User Story 有同等的重要性,要把重构优化提到和业务需求相等的优先级去处理。我们不仅要对业务需求负责,我们更要对应用的质量,系统的可维护性负责。

因为我们技术人员是应用的父母(有些是亲生父母,有些是养父母),你不照顾它们,不治理它们,它们就会生病,你忍心看到这样的局面吗?

在这里插入图片描述

技术管理者者(TL)的失职

造成这种局面,我们的技术管理者,我们的 TL 要负有主要责任。如果一个 TL从来不关注系统架构和设计,从来不写 code,对技术没有热情也不学习,甚至其本身技术就很烂,那么在这个 TL 领导下的技术团队,又怎么会有技术味道,团队成员又怎么能进步和成长?

现在很多的 TL 每天都混迹在各种会议上,很忙,做着各种沟通协调的事情,可是我们真的需要这么多的会议、这么多的沟通吗?

如果沟通的结果只是做业务和 PD 对团队的传话筒,没有业务创新,没有用技术和数据系统化的解决业务问题,没有在技术方向和架构上给团队指引,没能切实的帮助系统优化、团队提效,请问这样的沟通给业务带来了什么价值,给团队带来了什么价值?还是沉下心来,多看看书,哪怕非技术的书也好。多写写代码,哪怕跟业务无关的代码也好。

所以,我们要回归技术本身。我们不需要这么多“高高在上”、“指点江山”的技术 Manager,而是需要能真正深入到系统里面,深入到代码细节,给团队带来实实在在改变的技术 Leader。

技术 KPI 的量化

提升技术氛围,打造工程师文化不能仅停留在口头上,可搭配一定的强制手段,比如和技术人员的利益绑定。这种绑定就需要我们能对技术贡献进行一个相对公平的分解和量化。

技术 KPI

基于此,我将技术人员的 KPI 分解为业务贡献、技术贡献和团队贡献三个大的部分,其详细内容如下。
业务贡献:包括需求把控,业务项目和业务创新。
技术贡献:包括设计重构、技术影响力、Code Review、创新提效和代码质量。
团队贡献:包括招聘、新人培养和团队氛围。
那么技术贡献中的这几个维度要怎么理解呢,解释的话我就不多说了,用我们工作中的一些案例来描述一下吧。

应用质量

  1. 你负责或者共同负责的应用质量分(可以从代码重复率,圈复杂度,分层合理性等维度考察)。
  2. 你做了哪些提升应用质量分的工作。

设计重构:

  1. 我在客户通项目中,对 CRM 销售域进行了领域建模和设计,并且抽象合理。
  2. 我发现 Infrastructure 中 package 分类不合理,进行了重新设计并重构完成。
  3. 我发现现在系统中错误码比较混乱,我梳理制定了新的错误码规范,并完成了代码重构。

技术影响力:

  1. 在团队内分享 10 篇干货,点赞数 1000。
  2. 团队分享策略模式,得到同学好评 。
  3. 我接受邀请,在行业会议上分享了 SOFA 架构。

Code Review:

  1. 我在 review 某某代码的时候发现,可能存在线程不安全的隐患。
  2. 我在 review 某某代码的时候发现,存在设计不合理的现象,此处使用责任链可以很优雅的解决问题,并具备一定的扩展性。

创新提效:

  1. 我发现本地测试启动 PandoraBoot 比较浪费时间,所以写了一个 TestCon-tainer 大大提升了自测效率。
  2. 我 发 现 有 一 些 boilerplate 代 码 不 需 要 写, 所 以 对 乐 观 锁、 分 页 进 行 了annotation 支持,简化了代码。
  3. 在某个项目或者技术点上面,我产出了一篇专利:基于领域模型的业务配置化。

代码质量:

  1. 提测后的 Bug 数,线上故障数(系统可以提取,不用自己填写)
  2. 我完善了某某模块的单元测试,并多次在自动化回归中发现问题。

KPI答疑

对于上面的 KPI 大部分的技术同学是表示认可的,当然质疑的声音也很多,我这里挑一些典型的回答一下。

Q:技术 KPI 的提出,会不会导致技术同学只关注技术不做业务项目了?
A: 关于绩效,肯定是综合看业务贡献,技术贡献和团队贡献。但是作为一个重要参考和风向标,技术 KPI 是有积极意义的。
Q:你这个设计重构怎么量化?
A: 这个很难用系统标准化,更多的还是要依赖 TL 的专业能力进行评分,但即使是这样,也比以前什么都没有完全黑盒要强。至少在传达一个信息,我们鼓励好的设计,鼓励不断地重构优化。
Q:我们现在的业务需求已经在堆积,一线同学根本没有时间去做重构优化。
A: 这个问题开篇其实已经说过了,你是要不断地裹挟在业务需求和烂代码里面呢,还是花时间 improve,然后更快地支持业务。这个权衡应该不难做,关键是要看决心和能力。对于很多业务,我没有看到推迟几天上线就会影响业务格局的业务场景,所以作为技术团队,我们就应该在 User Story 之外,加上我们的 Technical Story,把完成业务需求和系统重构都当成我们的核心任务

  • 0
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: 软件工程师KPI(关键绩效指标考核是一种评估工作表现和能力的方法,旨在衡量软件工程师在项目中的贡献和业绩。以下是软件工程师KPI绩效考核的一些常见指标和考虑因素: 1. 项目完成情况:软件工程师应根据项目计划和时间表,按时交付高质量的软件产品。项目的完成情况是评估其绩效的一个重要指标。 2. 质量和缺陷率:软件工程师负责设计和开发软件程序,在开发过程中应确保代码质量,并降低缺陷率。被发现的缺陷率越低,质量越高,绩效评估就更有可能得到提高。 3. 技术能力和学习能力:软件工程师应持续提升自身的技术能力和知识储备,跟上行业的最新趋势和技术发展。这包括学习新的编程语言、开发工具和框架等。技术能力和学习能力的提升将被视为顶级软件工程师的重要指标。 4. 与团队合作:软件工程师通常需要与团队成员、产品经理和测试人员一起协作。良好的团队合作和沟通能力是软件工程师绩效考核中的重要指标之一。 5. 创新和改进:软件工程师应该积极参与团队讨论,提出创新的想法和改进的建议。对于软件产品的创新和改进能力,将会得到额外的加分。 总之,软件工程师KPI绩效考核应该综合考虑项目完成情况、质量和缺陷率、技术能力和学习能力、团队合作以及创新和改进能力。通过评估这些关键指标,可以有效衡量软件工程师的绩效,并为个人的成长和发展提供指导。 ### 回答2: 软件工程师KPI(关键绩效指标)绩效考核通常包括以下几个方面。 首先,项目交付质量是软件工程师绩效考核的重要指标之一。该指标评估软件工程师工作成果的质量,包括代码的可靠性、稳定性、可维护性和符合规范等方面。软件工程师需要按时完成任务,并确保交付的产品能够满足客户需求和预期。 其次,研发效率是软件工程师绩效考核的另一个重要指标。在规定的时间内完成高质量的工作,被认为是高效的表现。软件工程师需要合理规划和组织工作,熟练掌握开发工具和技术,以提高工作效率。同时,在解决问题时需要高效沟通和协作,以减少不必要的时间浪费。 第三,团队合作和知识共享也是软件工程师绩效考核的关键指标。软件工程师需要积极参与团队合作,与团队成员有效沟通,共同解决问题。此外,软件工程师还应该乐于分享自己的知识和经验,促进团队内部的学习和成长。 最后,个人职业发展也是软件工程师绩效考核的重要方面之一。软件工程师需要持续学习和关注行业的最新技术动态,不断提升自己的技术能力和专业素养。同时,软件工程师还应该有目标和规划,并积极主动地参与培训和学习机会,以实现个人职业发展目标。 综上所述,软件工程师KPI绩效考核涵盖项目交付质量、研发效率、团队合作和知识共享以及个人职业发展等多个方面。软件工程师需要在这些指标上做出良好的表现,以提高自己的绩效评定。 ### 回答3: 软件工程师KPI(关键绩效指标)可以用来衡量其绩效和工作成果,对于个人和企业来说都是非常重要的。以下是关于软件工程师KPI绩效考核的一些建议: 首先,软件工程师的代码质量和效率是考核的重要指标。这包括编码规范的遵守、文档和注释的完整性、代码的可读性和可维护性等。另外,他们的工作进展和解决问题的能力也要考虑在内。 其次,软件工程师的工作成果也是衡量绩效的重要指标。这可以通过完成项目的数量和质量来评估。例如,按时交付高质量的软件、解决关键问题、提出新的技术方案等都可以作为考核绩效的参考。 另外,软件工程师的团队合作能力也是考核的一部分。良好的协作和沟通能力能够促进团队的效率和合作。软件工程师应该能够与其他团队成员合作,共同解决问题并达成项目目标。 此外,软件工程师的自我学习和职业发展也应该纳入考核范畴。他们应该在行业中保持敏锐的观察力,跟踪最新的技术发展,通过学习和培训提升自己的技能和知识。 最后,软件工程师的行为和态度也是考核绩效的一部分。他们应该展现出高度的责任感、积极主动、解决问题的态度和团队意识。 综上所述,软件工程师KPI绩效考核应该包括代码质量和效率、工作成果、团队合作能力、自我学习和职业发展以及行为和态度等多个方面。这样的综合考核可以更全面地评估软件工程师的绩效,并为其个人和企业的发展提供有价值的参考。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

努力小张

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值