`
ihuashao
  • 浏览: 4545130 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

如何成为优秀开发人员[7]:正确地做事(善用自动化)

阅读更多

  上一个帖子 聊了“善用工具”的话题,讲的都是如何有效利用工具来提高效率,今天说一下如何利用“自动化”来提高效率。<!-- program-think-->
  隐约记得Perl语言的创始人Larry Wall曾经评价过程序员的三大美德,分别是:懒惰、急躁、傲慢。(刚才找到原文在这里 )在这三大美德中,“懒惰”赫然排在第一,可见其重要(另外,马云似乎也说过类似的名言)。我对他说的“懒惰”的理解,就是干尽量少的活,但是依然保质保量地完成工作。那么,如何才能偷懒捏?一个有效的办法就是:自动化。
  我这里说的“自动化”,当然不是大学里自动化专业的那个“自动化”,而是指:利用各种方式(主要是计算机)来帮你自动完成 某些(枯燥、费时、无价值)的重复劳动;然后你就可以利用节省出来的时间,干一些更有意义的事情了(比如学习点有用的东西)。
  具体该如何做呢?要实现自动化,首先就要观察你平时做的事情中,有哪些属于重复 劳动;然后评估一下这些重复劳动是否可以用某些工具来替代;如果有可能替代,你就可以动手把这个工具实现出来,然后就让工具帮你做事情了。
  说了这么多,感觉有些抽象,下面我举几个方面的例子来给大伙儿加深一下印象。

  ★Blog订阅
   如果你经常看我的Blog,但是没有使用Feed订阅工具,那你就要当心了。你属于不善于利用自动化的人。假如使用了Feed订阅工具,你就不需要经常访问某个URL的页面去看有没有新帖子。因为这个枯燥的重复劳动已经由订阅工具帮你自动完成了。你所要做的,仅仅是在订阅工具中初始化某个URL(只要做一次),然后工具会在有新帖子的时候通知你。所以,除非你要发评论,否则不需要访问我Blog的页面 :-)

  ★调试程序
  估计看我Blog的人,大部分都有过调试程序的经验。当程序行为不正常时,经常需要设置断点,然后单步跟踪代码,以便找出程序出错的源头。其实这个过程也有大量的重复劳动。
  我一般喜欢通过程序断言(以下简称assert)来简化上述过程。看到这里,有些同学心里犯嘀咕了:程序断言和自动化有什么关系啊?其实每一个assert就好比一个自动 的代码检查点,每次 程序运行到assert处的时候,如果你设置的逻辑条件不成立,它会立即终止程序并打印出相关信息(比如调用栈、文件行号等)。
  如果你在写代码的时候,经常在一些关键点 设置一些条件恰当 的assert,可以大量节约调试时间。我自己写的程序,在自测的时候,有70%-80%的逻辑错误会被assert暴露出来,所以改起来非常快;测试人员提交给我的Bug,大概也有一半以上可以通过assert快速定位出错误的源头。

  ★自动化测试
  说完了程序员的例子,我再说一下测试人员(其实我在“每日构建:流程 ”已经稍微提到了测试的自动化)。我发现很多公司的测试人员,重复劳动特别严重。他们不断地重复做一些软件功能的验证操作;发现bug后通知程序员改;程序员改完,再次进行验证操作......如此循环往复。N年之后,这些测试人员的个人能力没啥提高,年龄倒大了不少。
  在此我强烈建议测试人员,尽量多使用一些自动化测试工具(比如QTP )和一些测试脚本来完成上述的软件功能验证操作。不光能节约很多时间,提高了效率;而且在自己编写测试脚本的过程中,或许还能学些新东西,提高一下个人能力。比如我见过一个测试人员,由于经常用Python 写一些脚本进行网络和数据库方面的测试,久而久之,Python就很熟悉,然后就被转做Python编程。

  ★人肉自动化
  上面说的自动化都是技术层面的(都是靠软件实现)。为了给大伙儿扩展一下思路(免得思维定势),最后来说一下非技术的例子。
   比如部门中经常有人出差,每次出差都要都要订机票。订机票就属于重复劳动,而且挺繁琐。得去网上查航班、还得看哪个航班折扣优惠、选好航班还得付钱,然后去机场还得打印行程单,出差回来还得填写报销单(报销单还得找N个人签字),然后拿着报销单与行程单找秘书报销。这些琐事累加起来,少说也得一个小时才能搞好。
  为了提高效率,上述这些琐事统统都交由秘书搞定。出差的家伙需要做的就是发一个邮件告诉秘书,要订某天某时的飞机到某地,就一切OK了。经过这样改革,部门里的人(除了秘书)皆大欢喜。


版权声明
本博客所有的原创文章,作者皆保留版权。转载必须包含本声明,保持本文完整,并以超链接形式注明作者编程随想 和本文原始地址:

http://program-think.blogspot.com/2009/02/7.html

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics