现如今,连上一辈人都能说几个关于程序员的段子,程序员这一职业早已出圈,而更多“后浪”开始担忧“中国的程序员数量是否已经饱和或者过剩”。埃文斯数据公司(Evans Data Corporation)数据显示,2019年底全球软件开发人员的数量将达到2640万,到2023年预计达到2770万。
除了严格意义上的软件开发人员,越来越多的行业逐渐将软件研发与自身业态相结合,促使开发者人数不断攀升。
如何提高开发者的效能?如何改善开发者的工作质量?如何激发开发者与团队整体的潜能?一系列问题开始浮现。面对庞大的生态系统与从业人员,程序员管理的黑盒正在慢慢打开。
1
用代码管理程序员
目前,考量程序员工作的指标主要包括工作时长、代码行数(LOCs,Line of Codes)、提交次数(NOCs,Number of Commits)等,不仅“简单粗暴”,而且很容易被换行、死代码等噪音所干扰。
无法回溯、无法度量意味着不透明的开发过程、难以维护优化的软件质量、难以落地的最佳实践和模糊的人才发展方向。思码逸给出了整体解决方案,评估、指导程序员工作与未来发展。
程序代码库分析平台思码逸Merico近日刚刚完成数千万元Pre-A轮融资,联想之星参与本轮投资。
思码逸成立于2018年,2
019年初上线企业版产品,在深度代码分析技术与机器学习技术的基础上,从代码库提交历史中提取回溯数据,进行开发者贡献与效率、软件工程质量、组织人才发展三方面分析,并提供具备可操作性的实时反馈,消除开发过程及结果中的不可见性,以更智能的度量驱动管理升级,推动开发团队与开发者个人共同提升。
思码逸创始人兼CEO任晶磊认为,“程序员管理是个黑盒,传统的管理方式是互评、汇报等,成本高且容易受主观影响造成偏差。我们希望打开这个黑盒,通过技术驱动的方法进行绩效管理。”任晶磊为清华大学计算机系博士,前微软亚洲研究院研究员,曾在斯坦福大学、卡内基梅隆大学做访问学者。
据21世纪经济报道,作为以全球企业为定位的初创企业,思码逸近30人团队在亚洲、北美、欧洲的多个国家和地区协同工作,产品和数据安全方面兼顾各地区的标准和要求。
截至2020年5月,思码逸产品已在中美多个标杆企业中落地使用,客户包括字节跳动、长亭科技、知道创宇、和讯网等,来自互联网、信息安全、金融、地产等多个行业。
字节跳动People团队表示,思码逸提供的分析工具的诸多功能中,对其最有价值的三项是:技能标签与人才画像;对代码贡献的多维度衡量;代码级的质量评估,如代码复用度检测。
团队研发效率视图
团队管理者周报视图
思码逸的代码分析引擎是将代码编译为抽象语法树,辨别每一次提交所产生的代码逻辑量变化,从而进行工作量的判断;此外,分析引擎也能够从代码间调用关系中分析出函数影响力,再结合代码质量以及代码对项目整体质量的影响,能够较为准确、客观反映开发者的工作价值。目前该分析引擎已支持15种开发语言,且正在持续补充中。
在此基础上,思码逸进行了开发者贡献与效率、软件工程质量、组织人才发展三方面的分析,并提供具备可操作性的实时反馈。对于研发管理者来说,这款工具能帮助他们客观高效评估团队工效能,及时发现瓶颈并解决问题,减少主观判断造成的偏差,提升管理精细化程度;对开发者来说,客观实时的反馈不仅使自己的贡献及时被看见,也能给自身成长提供多方面建议。
2
软件工程分析如何发挥作用?
在数字化转型的当下,越来越多行业正在将数字技术融入产品、服务与流程中。关注软件工程效率与质量、团队工程能力提升的不再只是传统意义上的科技公司,而成为各行各业前瞻者们的共识。据互联快报网,从软件工程的角度看,思码逸增强软件开发过程有两个基本途径:一是优化计划和安排;二是增强评价和反馈。在优化和安排侧,常见的工具包括JIRA、GitHub、GitLab以及国内的ONES和KodeRover等;在评价和改进侧,主要的工具包括GitPrime、Code Climate的Velocity、source{d}以及思码逸Merico。从瀑布模型到敏捷开发,软件工程范式的改变正是评价和反馈逐步增强的过程,这也是为什么软件工程分析成为当下热点。从商业视角来看,工程质量、效率和软件工程能力提升的问题已经得到市场的积极响应。从近年与软件工程分析相关的投融资事件和主要产品发布来看,GitHub和GitLab都已整合进分析能力,这反映了市场的迫切需求和相关技术的落地应用。以GitPrime、PinPoint和思码逸Merico三个代表性产品为例。GitPrime首先定义了四个基础指标,然后在基础指标之上,辅以对pull request的各项统计,构建了针对项目、工作流和开发者的视图,来反映项目进度、工作流是否顺畅、开发者贡献等。PinPoint则计算了30余种软件工程指标,并给出了它们之间的关联关系,以方便用户采取合适行动改进指标。思码逸Merico则采用深入分析代码及其历史的方法,更直接准确地获得信息。思码逸设计了工作当量、工作价值等特有指标,反映每一个提交的工作量、代码影响力、工程质量、代码质量等多个维度。基于高质量的基础数据,Merico思码逸针对开发团队面临的效率、质量和人才三大痛点设计了相应的数据报告。如今,软件工程分析工具在业内的认可与接受度正在逐步提高。不论是流程分析还是代码库分析,这些工具所提供的洞见都能够在极短的周期内反馈回计划与安排侧形成闭环,帮助团队小步快跑,有针对性地改善软件工程质量与效率,建设团队的软件工程能力。3
助力远程办公提质增效
今年由于疫情因素,程序员们也开始尝试远程办公。无论硅谷科技企业,还是国内互联网公司,程序员们都面临着远程办公带来的挑战。
协同软件选定了,网络调试稳定了,IM软件终于不卡顿了,人脸打卡蓬头垢面地打上了,早会也穿着睡裤开完了。然而家里的诱惑实在太多,这边摸摸猫那边躺一会,一不小心又是无所事事的一天……从本质上来说,自驱其实是绩效管理问题。管理者关注的绩效指标应当足够合理、具备说服力、易于操作,并使公司目标、团队目标与个人目标保持一致。基于这样的指标,将结果快速反馈给管理者与员工个人,及时对齐目标,消除信息不对称不透明。当员工相信自己的点滴工作累积将主导绩效评价结果时,自驱力自然就提升了。那么绩效指标如何设计,才能充分激发团队自驱力?作为一个技术人员占绝对多数的公司,思码逸从自己的管理经验出发,分享了软件开发团队的五阶绩效统计评价维度。落实到具体实践中,这些评价指标未必需要全部用上,也未必每个都适用于某个团队的实际情况,需要管理者充分理解、判断本团队的现状,再进行指标的设计与组合。讨论包括线上及线下讨论,换句话说,说话不积极,态度有问题。讨论参与度越高,绩效评价就越高。这一维度上没有什么专门的工具,纯粹依赖管理者的“体感”。 即在代码库提交的维度上进行评价,这里主要评价的是开发流程的顺畅与否。关键指标包括积压变化(backlog change,未解决的 issue 数量量变化)、周期时间(cycle time,解决一个 issue 所需天数)、工作量量平衡(workload balance,完成 80% 工作量量的⼈人数占比)、吞吐量(throughput,每人每月解决的 issue 数量)、缺陷率(defect ratio,bug 占所有 issue 总数的⽐例)等。在Issue活动维度上进行统计评价的工具不少,典型的一款产品叫Pinpoint,以上的指标就来自于他们的产品设计。当然,通过调用代码库的接口,团队也可以自开发工具来进行简单统计。即对代码库中的代码进行统计。可以看出相比上一维度而言,代码统计更接近开发者的产出。可见度不再只局限于commit代码、解决issue的动作,开始能够了解每个commit中开发者做了什么,做得如何。对产出的评价可以分为两大方面:工作量与质量。工作量方面的关键指标包括代码行数、修改代码的位置数量、修改的文件数量、工作中新产出代码和重构旧代码的比例。质量方面的指标是搅动(churn),即在一个较短的时间内多少比例的代码被反复删除重写,这可能暗示了代码的质量相对较低。在这个维度上的统计工具,比较著名的是GitPrime,也就是被IT培训平台PluralSight收购整合后的Flow。
即基于抽象语法树(AbstractSyntax Tree)对代码库中的代码进行深度分析。在这个维度上,工作量指标是基于代码逻辑的复杂度和代码中其他代码对此代码的依赖性,因而工作量评价会更接近于此代码对项目整体的贡献度;而质量方面的评价也更加贴合工程质量视角,除静态扫描出的规则性质量问题外,还能给出项目内的测试覆盖度、代码复用度等指标上的评价。
由于技术难度较大,这个维度上的工具选项就很有限了。思码逸是目前市面上唯一提供这个分析深度的研发管理工具,当然这款产品的应用并不仅限于评价代码表现。
业务分析是最接近于传统意义上“绩效”的维度,也就是去评价技术团队到底为公司业务发展起到了怎样的助推作用。
很多非技术出身的管理者也许觉得,既然技术团队的终极目的也是服务于业务,拿最终成果来评价有何不可?那么不妨来看看球赛的赛后统计:除了比分外,赛后统计一般会给出相当详尽的全场数据。所谓“最终结果”,在一场球赛里就是比分,它可能受到多方面因素的影响,而这些因素可能是在球队可控范围外的。一个过度简化抽象的最终结果并不足以完整客观地反映全场表现,更无法支持教练组进行战术战略的分析规划,提升球队的未来表现。技术团队的贡献与业务发展,二者之间之间一定有相关性,但其间的链条远比球队表现到最终比分的链条要更长、更复杂。仅仅依赖业务分析这个评价维度,在销售、市场团队可能行得通,但应用在技术团队可能难以让人信服。
自驱力源于合理的绩效管理,而合理的绩效管理其实是数学问题。至于选择怎样的指标、如何配比参数,就需要依靠技术管理者们的智慧了。
据悉,思码逸计划于年内推出面向开源社区的产品。对开源项目进行客观度量,一方面有助于开源项目合理分配财务捐赠等资源;另一方面也为开发者个人提供技能发展的建议与背书。
相关阅读: