zoukankan      html  css  js  c++  java
  • 系统程序员成长计划写得又快又好的秘诀(六)

    转载时请注明出处和作者联系方式
    文章出处: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(删除全部文件),由于删除的时间太长,才让我发现删错地方了,吓得我出了一身冷汗,还好那台服务器不是运行着源代码管理系统,但还是浪费了我两天 时间去重建服务器上的环境。

    状态不好的时候编程也会犯一些低级错误,让你花费更多时间去调试。总要言之,状态不好的去做重要的事有害无益,这时你不防去做点别做的,比如看看其它模块的代码之类的,甚至完全放松去休息都比犯下严重的错误强。

  • 相关阅读:
    《玩转.NET Micro Framework 移植基于STM32F10x处理器》内容介绍
    《玩转.NET Micro Framework 移植基于STM32F10x处理器》前言
    《玩转.NET Micro Framework 移植基于STM32F10x处理器》内容介绍
    《玩转.NET Micro Framework 移植基于STM32F10x处理器》微软中国.NET Micro Framework项目组工程师所作之序
    《玩转.NET Micro Framework 移植基于STM32F10x处理器》资源汇总
    《玩转.NET Micro Framework 移植基于STM32F10x处理器》微软中国.NET Micro Framework项目组工程师所作之序
    《玩转.NET Micro Framework 移植基于STM32F10x处理器》前言
    Windows、Linux、ARM、Android、iOS全平台支持的RTMP推流组件libEasyRTMP库接口调用说明
    简单高效易用Windows/Linux/ARM/Android/iOS平台实现RTMP推送组件EasyRTMPAndroid MediaCodec硬编码流程介绍
    RTSP网络监控摄像头如何实现Windows、Linux、ARM、Android、iOS全平台支持的拉RTSP流推出RTMP直播流?
  • 原文地址:https://www.cnblogs.com/zhangyunlin/p/6167470.html
Copyright © 2011-2022 走看看