2011年8月15日星期一

程序员每天只需编程4小时

很久没有更新“电子工程师乱弹编程”这个系列。今天继续谈谈时间管理的方法。
其实我一直认为,作为程序员每天有效编程时间大约4个小时就可以,我每天就是最多编程4个小时,不是因为我没有什么活,其实我的工作任务在很多人看来是“相当繁重”的。减少编程时间后,剩下的时间用来学习,研究,可以进行“时间投资"(下文会介绍)。


如何摆脱加班的痛苦,减少工作时间,以下是我的几个小方法:


1. 减少”所谓的无效工作时间”
例如工作时上网时间,因为干这些事的时候,我们精神体能处于死亡的状态。编程时不要看邮件,减少外部的干扰。


2. 放弃完美
根据我的经验很多过长的工作时间就是我们追求完美所造成的。正如《卓有成效的程序员》所说的,“始终牢记你到底要做什么,如果情况开始失控就及时抽身而出。“80 10 10”法则,80%的客户需求可以很快完成,下一个10%需要花很大的努力才能完成,而最后的10%却几乎不可能完成。”我们常常为了那20%的东西,花费了80%的心力,我们所要警醒的是20%的东西是否是核心功能,对于不是重点的功能我们应该说“不”,并及时抽身而出,取和舍是减少工作时间的要点。


3. 使用合理的开发流程,开发方式,高效的开发工具
对于软件开发方法,我个人并不喜欢敏捷,应该所很不喜欢,因为软件质量和生产率成正比,因为软件的质量越高,生产率越高。而不是编码的速度越快,生产率越高。
我喜欢的开发方式是模块化开发,并且是采用相对传统的方式进行开发(常常使用迭代法,一定要画UML),我们组的系统的架构基本上是模块化的,每个提供对外接口,每个模块都要写一个对于的测试例程,一来是为了模块测试,二来是方便做持续集成的人理解。然后进行持续集成。这种开发方式相对比较累的人是做持续集成的人,我最近一直在做这件事。模块化开发出的模块,也可以提高代码质量,以及复用性。


4. 进行时间投资
这是我最近看《杠杆思考术》一书看到的一个概念。程序员的时间投资的根本就是找出“模式”。其实对于程序员而言,例如自动化构建的脚本就是一种时间投资方式,有时重做轮子也是时间投资的方式之一,例如自己写一些适合自己项目开发的工具类库,特别的工具类库常常可以在特定的项目开发中节约很多开发时间。以下摘抄一些书中原文:

因为投资而增加的时间,就应该用来投资打造新的模式或新的事业,进一步作为提升自己能力的自我投资,也就是所谓的再投资。如果能够反复运用这些时间,每年就可以产生数百个小时的时间资产,而且这些额外的时间还能够以复利的形式像滚雪球一样快速增加,所以投资效果就会越来越大。只要能够有效地缩短工作时间,就能争取到更多的额外时间,这样一来也就可以达到不错的成效,而且最终还可以跟升职加薪有所关联。
所谓的时间投资,其实是由几个基本步骤组成的。
首先,最重要的是事前的调查。环视一下自己的工作全貌,检查什么事情是很麻烦的,哪些地方很花时间,自己要完全掌握。
接着,就要检讨在这些工作中哪些项目可以进行的更有效率,也就是所谓的过滤。不管是跟成果有关联的事还是没有关联的事,只要是非做不可并且没办法交待别人的,都按照其重要程度排出先后顺序。而且,为了建立所谓的模式,就必须实际投资时间去实施,以追求效率化。在这种时候,如果无法达到预期的效果,就没有必要勉强坚持下去。相反,如果能够持续取得成果,就能累积时间资产。


当然大话谁都会说,找到适合自己的方法才是最好的方法,对了,今天你是否只编程4小时?