他们八成是没看过下边这个漫画,想靠代码行数来衡量也太小瞧程序员的创(zuo)造(bi)能力了。我建议用头发多少或者发际线来判定,头发多的或者发际线没后移的都是没努力用脑子的,都不能给高绩效(开个玩笑 ).
把代码行数纳入 KPI 一个最大的弊端就是让很多程序员把重心放在了如何增加代码行数上,而不是如何编写高质量代码上,甚至会有人不惜一切代价用作弊手段换取代码量,大量复制粘贴,完全不考虑复用,产生大量垃圾代码。(很多小白程序员最爱复制粘贴了)中国还有很多软件公司的技术管理停留在软件作坊的水平。
业务功能点、接口响应时间、资源占用等都可以作为量化指标衡量程序员的能力,但是代码行数不应该纳入进去,有可能只会产生更多垃圾代码,得不偿失。有点软件工程知识的人也知道不应该根据代码行数,而是可读性、可测试性、可维护性等来衡量代码质量,甚至现在很多时候都会想着如何精简代码,减少复杂度,增加可维护性等,而不是一味地怼代码量。下边这个非常有意思的漫画很好地诠释了代码行数与绩效挂钩可能会发生的一系列问题(转载自西乔《神秘的程序员们》):
管理者总是会偷懒的,只是从一开始就偷懒还是到规模扛不住时才偷懒。
有些人从一开始就偷懒,明明还只是一线经理,手下每一个人做了什么以及做的事情有没有价值应该一清二楚,不清楚也应该自己负全责去搞清楚,但就是懒所以想用指标来衡量人。
有些人升到总监或者副总裁后发现自己不可能认识下面的每一个人了,但又想表明自己有能力掌控大局,于是只能拿指标这种自己能看明白的事情来指指点点,因为更具体的事情已经不可能搞清楚。
我觉得真正厉害的人脑子是很清醒的,到底下属谁做的事情有价值,谁应该获得奖励,都能做很好的判断。自己判断不了的,必须培养出自己能信任的人来把关,不能为了升官发财就找理由把自己部门人头数量做大。当然,这个世界上也总有懒人,不胜任工作的人。
你们老板要上线一个界面统计每一个人的代码,这没什么好震惊的。我们公司早就有内部统计页面,显示每个人在这个绩效周期发了多少 commit,代码行数多少,codegen 自动生成的代码默认不统计在内,配置文件改动是否统计在内可以动态选择。
我的意思是,是个程序员就可以写这样的界面,你不写总有人写,最终这些数据一定会展现出来。写代码最少的人无法回避这个问题,因为写代码最多的人最有动力去写这样一个界面来表现自己。关键是,这些信息展现出来后管理层如何利用这些信息,那就是能力的区别了。
我一直觉得中国缺乏专业的软件管理人员,是造成目前软件开发效率低效的直接原因。
因为人才的匮乏,使得很多公司只能仰仗这种对软件开发一窍不通的管理人员来管理软件团队,其后果只会是让团队效率更差……
而很多公司还会很迷惑,明明在其他行业运用得非常好的经验在软件开发怎么就会起到反作用呢?一定是公司流程还不够规范,然后各种咨询公司和CMMI认证服务就有了市场。最终公司建立起一套非常完善非常先进的企业资源计划系统(简称ERP)。并且对公司的方方面面都建立了标准操作程序(简称SOP)。细化到进入公司大门应该先迈哪条腿,电梯排队间距和每厢电梯核载人数以及电梯站位姿势。对于程序员而言,写代码花括号放什么地方,什么地方要用花括号,在什么时候可以开始编写代码,什么时候可以提交代码都有了明确的规范。乃至于修改一段代码需要在办公自动化系统(简称OA)中完成一个多达20人审批的流程。
但是,这仍然没能解决量化程序员产出的问题,而很多公司在这个规范化的过程中,就被激增的成本噎死了……