开发人员真垃圾

开发人员真垃圾

如果你是个软件质量人员,你大概率有过这样的感叹。如果你是个不成熟的管理者,可能也偶尔会有这样的感叹。

在软件开发领域,我观察到一个非常奇怪的现象。

那些广泛使用的开源软件,设计精妙,接口清晰,文档齐全,代码质量上乘。拥有完备的单元测试,配备完整的 CI/CD (持续集成,持续发布) 流水线。最让人惊奇的是,这几乎是在没有专门的软件质量人员的情况下达成的。

如果说,维护开源软件的都是大神。那么像我这样的资质平平的开发人员,在做自己的业余项目时,我也能勉强做到优秀开源软件的水准。接口清晰(因为自己要用啊,接口定义不清不是自找麻烦),文档齐全(三个月后,这个代码出问题了,还是需要我来维护,可能自己都忘记了一些关键的设计细节),完备的单元测试(因为根本就没有软件质量人员参与),完整的 CI/CD 流水线(我可不想每次发布版本,折腾 1 个小时,而且还可能出错)。

反观有些公司,开发软件产品时,每个软件开发人员,需要配备至少 0.5 个软件质量人员。更要命的是,因为自动化单元测试,接口测试,集成测试力度不够,软件发布后,某些功能不正常也不知道,最后演变成软件质量人员和开发人员的对抗。软件质量人员觉得,开发人员太差劲了,每次发布版本,都有一堆新问题,甚至一些原来正常的功能也不能使用了。开发人员觉得,软件质量人员没把好质量关,问题没测出来就发布了。

为了挽救软件质量,开始层层加码。质量部门要求软件部门在提测前,必须先自测(手动的),确保软件质量达到提测质量门槛。软件开发人员也开始给质量人员提要求,发明了所谓的 “BUG 早期发现率” 指标。问题是,黑盒测试,理论上是无法发现所有的 BUG 的。只要时间足够,BUG 数量可以一直增长。然后就开始互相埋怨对方,开发人员觉得,质量人员到了很后期才发现这种问题,没有足够的时间修复。质量人员觉得,开发人员反反复复,修复一个问题,可以引入三个新问题。

做完这样的项目,整个项目组都会心力交瘁。

当然,整个过程演绎地有点夸张。但确实目睹了不少项目,或多或少地出现了上面提到地那些不堪的故事,或者叫事故。

最后,大家心理默认:开发人员真垃圾。开发人员一肚子委曲。

过度追求结果

我经常在想,为什么?是开发人员素质不够么?

或许,过度追求结果,是一个重要的幕后黑手

公司是一个以目标为导向的组织机器。所谓的企业人文关怀,其实只是粉饰太平的手段。当然,这一点,大公司会比小公司好一点,外企会比民企好一点。但无法改变事物的本质。因为公司存在的价值,就是为了实现某种业务目标。公司不是养老院,更不是慈善机构。以目标为导向的工作作风,在企业里是受到鼓励的。

在这种情况下,要让员工自发的享受过程,轻视结果,非常难。当大家眼里只有目标的时候,肯定是怎么快怎么来。其实大家心理都知道,慢就是快,没有好的过程,就没有好的结果。但在 deadline 面前,没有人能接受这种“慢”。没有时间构建完备的开发流程,没有时间开发必要的开发工具,没有时间编写单元测试代码,没有时间进行代码审查,没有时间编写接口测试例,没有时间编写文档。最终的结果,往往是欲速则不达。

资源之殇

另外一个重要的原因,我称它为“资源之殇”。当一个软件的人力资源投入,少于开发维护这个软件所需要的最低资源投入时,就会产生“资源之殇”。比如一个软件,保证质量的情况下,应该由一个 10 个团队在开发维护,其中 2 个资深开发人员,8 个普通开发人员。资源配置的阈值是 1 个资深开发人员加 5 个普通开发人员。低于这个值,就可能出现软件质量坍塌。最终这些功能还是能被开发出来,但过程将会极其痛苦。

进一步思考,为什么你会在一些公司里,频频地出现“资源之殇”呢?难道这些企业的管理层都没看到么?

其实不是,管理层知道,员工也知道,其他部门的同事也知道,就连保洁阿姨都知道,因为她经常看到你在加班。

那为什么不改进呢?答案是改不了。开发一个软件的资源投入,是由这个软件所产生的利润决定的。当这个软件产生的利润,只够养活 2 个开发人员时,不可能给你配置 4 个开发人员的。哪怕这个软件的“资源阈值”是 5 个人。

再进一步,一个软件的质量水平,不是由开发人员素质决定的,而是由这个软件带来的利润决定的。这个推论有点太惊世骇俗了。但可能真的是事实。

你可能会不同意,因为一个优秀的开发人员可以顶十个普通的开发人员。试想,一个利润水平低的行业或公司,怎么能吸引到这种人才呢?即使开出高薪,吸引到了这样的人才,也会让他干一百倍的活,直到产生“资源之殇”为止。

一个成熟的企业,软件质量是由制度来保证的,而不是由个别天才来保证的。他们会投入重金,构建完备的软件开发流程,开发完备的开发的工具和内部系统,确保普通的工程师丢到这个系统里,就能写出符合质量要求的软件。但一个利润不足的企业,是不可能投入资源来构建这套系统的。他们的软件质量,完全是由具体的开发人员决定的。

你招了一个在华为绩效很好的开发人员,到了一个小公司,很可能,他根本开发不出高质量的软件。因为开发环境,流程,工具全部都不具备了。

结论

或许,我们看到的那个垃圾开发人员,可能并不垃圾。在自己的业余项目上,他正在忠实地践行软件开发最佳实践。在那里,没有目标导向,没有 deadline,没有随时出没的产品经理,没有需要捏着鼻子来实现需求。也不会说出那句名言:我的电脑上没问题,要不你换个电脑试试。

(完)


Post by Joey Huang under daily on 2022-03-04(Friday) 23:44. Tags: 每日随笔,


Powered by Pelican and Zurb Foundation. Theme by Kenton Hamaluik.