开发者的效率目标
在实际开发过程中,往往存在两种截然相反的行为倾向:
- 以时间换效率
- 以效率换时间
这两种行为模式,在固定一天时间内,达到同样的生产力,可以靠低效率、堆时间的方式,和另一种高效率,节省时间的方式。
大多数人都知道提高效率,但是,提高效率是目的,是手段,如果仅仅知道提高效率,还是没找到落脚点。
那么,如何提高效率呢?
从大的方面,可以分为投入和产出两个方面考虑。
投入。
投入意味着成本,对于开发者来说,我们这里主要指的是时间成本。
节省时间成本需要有几个意识:
- 质量意识
- 服务意识
质量意识,要求开发者开发过程中,注重开发的质量,把握质量与工期的平衡,以达到在总工期中投入时间的最小化。在软件工程化中,问题发现的越靠后,付出的代价越大,甚至会浪费别人的时间来排查,而这些时间是弥补之前的过失,本来可以用来产生更大价值的。
服务意识,要求开发者服务自己和服务别人,在开发中,注意积累重要的文档,编写方便的测试代码,服务未来会遗忘当下的自己,以及方便其他开发者合作。
产出
产出,就是指的创造价值。
为客户创造价值,以及为长期主义坚持的事情创造价值。
一次编写,长期收益,是最好的模式。
模块的交付意识
模块要控制输入输出。
一个模块,要保证输出正确,并且获取输出的数据,由该模块owner 负责封装接口api,编译成库,并且模块接收测试应用程序同时写好。这样保证了两点:
- 输出的可靠性,可靠的输出是下游模块调试效率的保证;
- 测试程序,和封装的接收侧lib库,方便下游直接快速应用;下游快了,上有慢了。开发任务在上下游间再分配,上游保证输出正确和提供调用测试程序和库,将联调时间压缩到最短。
- 遇到问题,测试程序可以迅速定位错误出现在上游还是下游,节省了大量定位问题的时间。
重新分配开发内容和组织形式后,开发变快,持续收益。
接手别人的程序来调试,一定要自己写测试程序,有时候重写都比用一个未经调试的混乱和错误百出的代码快很多倍。无论何时,自己的测试程序才是让自己快速定位问题和前进的法宝。基于自己的测试程序重写,是最快的捷径,反而用现成的,更慢。
用到自己的库时,出问题,注意写测试代码,对比系统默认的库和自己改过的库,判断问题出在哪里。