开发中的效率问题
date
Apr 19, 2023
slug
dev
status
Published
tags
项目管理
summary
type
Post
左耳朵耗子:聪明的程序员使用50%-70%的时间用来思考,尝试和权衡各种设计和实现,而用30% – 50%的时间是在忙碌着编码,调试和测试。聪明的老板也会让团队这样做。而傻逼的老板,苦逼的程序员会拿出来100%-150%的时间来忙着赶进度,返工,重构,fix 大量的bug… 所以, 越差的团队一般会越忙,而且还忙不完。
最近参与一个倒排期的项目,在开发的过程中,看到几个问题:
- 同事A和B一起参与项目的开发,其中A负责下游对接,B负责上层应用逻辑,在前期共同做设计的时候把之前的模型推翻重来,引入了新的模型,在开发过程中频频出现需要用新的模型兼容老模型的情况,苦不堪言
- 另外一个问题是在联调的时候同事B说由于时间紧张,就不写测试了,代码写完直接部署,通过联调调用来验证问题,有问题再修改部署,由于同事B是老板,在开发的过程中只写了代码,接口的发起(自测)、软件包的部署,配置的修改都让同事A来做…
在这个项目当中体会到了两个点:
- 鼓励采取战术思维方式,着眼于使功能尽快运行
- 「保姆式」软件开发
暂且先不讨论同事层级之间的关系,只关注问题本身
战略设计和战术设计
在A-Philosophy-of-Software-Design第三章提到了「战略设计」和「战术设计」,其中提到的一个观点就是:大多数程序员以我称为战术编程的心态来进行软件开发(针对大多数的开发人员的编码时的思维方式,作者称之为战术式编码)。在战术方法中,您的主要重点是使某些功能正常工作,例如新功能或错误修复。乍一看,这似乎是完全合理的:还有什么比编写有效的代码更重要的呢?但是,战术编程几乎不可能产生出良好的系统设计。
但是战术设计一般是短视的,会为了完成任务(Deadline)而引入不必要的复杂度,这在我们工作当中也很常见,就是有些人在写代码的时候不会考虑扩展,看到这个需求,CURD把需求写完了,感觉是很快速,但是产生了大量的重复代码,后续的维护性也很差
战略性编程需要一种投资心态。您必须花费时间来改进系统的设计,而不是采取最快的方式来完成当前的项目。这些投资会在短期内让您放慢脚步,但从长远来看会加快您的速度
好的设计不是免费的。它必须是您不断投资的东西,这样小问题才不会累积成大问题。幸运的是,好的设计最终会收回成本,而且比您想象的要早。
「保姆式」开发
在左耳朵耗子的文章中提到保姆式开发:
所谓“保姆式”软件开发就是——我只管吃饭,不管做菜洗碗,就像——衣来伸手,饭来张口的“小皇帝”一样,身边有一堆太监或宫女,不然生活不能自理。这种情况经常见于开发和测试,开发和运维间的关系。很多公司,测试和运维都成了开发的保姆。