系统程序员成长计划-写得又快又好的秘诀(六)
转载时请注明出处和作者联系方式
文章出处:http://www.limodev.cn/blog
作者联系方式:李先静 <xianjimli at hotmail dot com>
Save your work
Broncho团队基于Google Android平台研发的手机(代号A1),即将上市。 Broncho论坛用户享受优惠购机,请到www.broncho.cn注册。谢谢支持。 |
“Ernst和Young所在的小组决定使用正规的开发理论—他们常用削减法,分阶段进行开发并具有中途交付能力。他们的步骤包括细致的分析和设计 —正如本章描写的基本原则一样。而其他竞争者径直开始了编码,在开始几个小时里,Ernst和Young小组落后了。但到中午时Ernst和Young小 组却是遥遥领先了,而到了这一天的最后,他们却失败了。导致失败的原因不是因为他们的正规方法,而是他们偶然错误的把工作文件覆盖了,最终他们比午餐时所 做的估计少交付了一些功能,他们是被没有使用有效的源程序版本控制这个典型的错误给打败了。”
–摘自《快速软件开发》
前段时间看探索频道的《荒野求生秘技(Man & wild)》,我很喜欢这个节目也喜欢那个英国佬,甚至连重播都不会放过。他展示在沙漠、丛林、冰河和雪山等各种环境的求生秘技,他吃蜘蛛、白蚁、蝎子和 蜥蜴,边吃边说这东西很恶心,但是里面含有非常的维生素,蛋白质和糖份,能够Save your life,所以要吃下去。
在Man & Code的世界里,环境好多了,不用面临危险,寻找水源和食物根本不需要什么秘诀。这里我们不需要求生秘技去Save your life,但我们需要一些习惯去Save your work。我说过作为一名高效的程序员,不是因为他打字比别人快,而是因为他省下了别人浪费的时间,有什么比成果被毁,从头再来更浪费时间呢?下面我介绍 一些习惯,它们简单有效,根本算不上什么秘技,但它们能够Save your work,让你的工作稳步前进。
o 随时存盘
每次停电时,我都会听到有人惊呼,完了,我的代码没有保存!补回半小时或一个小时的工作不难,在一个好的工作环境里,这种情况一年也就会遇到几次, 浪费的时间完全可以忽略不计。但是那种感觉很难受,会影响你的工作情绪,无缘无故的让你重做你的工作,和因为要改进去重做完全是两回事。在我以前工作过的 一个公司,有段时间经常跳闸,每周都要停好几次,怎么也找不到原因,后来请人来查,据说是线路太长,静电引起的跳闸。经过那段时间的折磨,我养成了一个习 惯:写代码的时候,平均30秒钟存盘一次。现在遇到停电,别人惊呼的时候,我开始闭目养神了。
o 使用版本控制系统
和一些老程序员聊天时(呵,其实我也老了),他们经常问起我们项目有没有使用版本控制系统,我说当然有了,大二的时候就我用Sourcesafe来 管理用powerbuilder写的代码了,后来的工作中一直在使用不同的版本控制系统。接着他们开始讲述他们惨痛的经历…这些经历小则让他们项目延期, 大则导致整个项目失败。
版本控制系统有很多功能,但对我个人来说,它最重要的功能是备份代码。每完成一个小功能,我都会把它提交(checkin)进去,如果我不小心删除 了本地文件,或者某个做尝试的修改失败了,我可以恢复代码到前一个版本。不同团队有不同的规则,有的团队是不允许这样checkin的,他们只允许 checkin经过严格测试的代码。如果是那样,你可以在本地建立自己的版本控制系统,初学者在学习时也可以这样做。现在有很多免费的版本控制系统可用, 像CVS、SVN和GIT等等,我个人习惯用CVS,SVN是CVS的改进版,将来肯定会替代CVS的,所以推荐大家使用它。
o 定期备份
温伯格在《Quality Software Management: System Thinking》讲了一个有趣的故事,他以前去研究一些失败的案例,发现这些项目的失败都是因为欠佳的运气引起的:比如遭受到洪水、地震、火灾和流行感 冒等灾害,项目主管们把自己描述成外部问题的受害者。他又对另外一些成功的项目进行研究,发现其中有些项目同样经历这些自然灾害,但是他们成功的完成了任 务。区别只是在于成功项目的主管,采用积极预防措施,定期备份代码,把它们放到不同的地点。
以前在学校的时候,我有两台电脑,一台赛扬和一台486。我经常在上面重装系统,一会儿装Linux,一会儿装NT,一会儿又装Netware。虽 然我经常把代码备份到不同的分区上,结果还不小心把所有分区全干掉了,让我痛心不已。那只是写的一些小程序,重写一遍问题也不大,但是对于专业程序员或一 个软件团队来说,重写整个代码就不能接受了,所以需要更可靠的备份机制。
使用源代码管理系统还不能保证代码的安全,比如服务器硬盘损坏和办公室发生火灾等都是可能发生。团队里一定要有人负责定期备份源代码管理系统系统上 的资料,作为初学者也应该有这种意识。另外,我发现有些朋友把重要的资料放在邮箱里,现在的邮箱容量很大,因为提供商会定期备份,非常安全,这倒是一个不 错的主意。
o 状态不好就做点别的
女同胞有定期状态不佳的时候,男同胞也不是每天状态都很好。感冒了、丢东西了、或者家人争吵了,都会影响你的状态。状态不好的时候做事,往往是进一 步退两步,甚至犯下严重的错误。有次我得了重感冒,居然在服务器的根目录下运行rm * -rf(删除全部文件),由于删除的时间太长,才让我发现删错地方了,吓得我出了一身冷汗,还好那台服务器不是运行着源代码管理系统,但还是浪费了我两天 时间去重建服务器上的环境。
状态不好的时候编程也会犯一些低级错误,让你花费更多时间去调试。总要言之,状态不好的去做重要的事有害无益,这时你不防去做点别做的,比如看看其它模块的代码之类的,甚至完全放松去休息都比犯下严重的错误强。