什么才是软件开发的葵花宝典?

3个月前 (01-02 22:38)阅读2回复0
yk
yk
  • 管理员
  • 注册排名3
  • 经验值146465
  • 级别管理员
  • 主题29293
  • 回复0
楼主

  让我们先从一些现象动身。我们的前提是,软件开发是一项智力密集型劳动。关于智力密集型劳动,我们看察到的现象是,个别的表示差别很大,团队的表示差别很大,组织的表示差别很大,国度的表示差别很大。那不象体力占次要的劳动,象百米王跑百米的速度也仅比我快50%。

  但在棋类运动中,一个高手能够车轮战数位低手,并且毫无破例地将他们逐个击败!

那些智力运发动表示出的特征是,计算切确并且速度快。其行为很象东方不败。固然关于葵花宝典的传说良多,但最准确的描述只要一个字\"快\"。东方不败已经快到了吓人的地步。

  就象卡斯帕罗夫已快到了深蓝的地步。

有一则关于物理学家玻尔的轶事,有一次玻尔在普林斯顿大学听两个年青传授演讲他们的工做功效。期间玻尔突然发言说,假设照你们的研究算下往,会得到一个很有意思的推论。成果两个年青传授回往计算了两天,公然得出了同样的结论。

  玻尔是若何做到如许快的?

在软件开发中,我们同样重视到如许一种高手,他们能够天天写出一千行摆布的高操行代码。他们能够运用已有的一些软件包,敏捷完成一个新的产物。他们能够在很短的时间内,学会一项新的法式语言或是新手艺。他们表示出一种神异的速度。

在武侠小说中,所有的高手都有一些常人不克不及企及的表示。象张无忌学太极,用龙爪手击败龙爪手名家;乔峰用太祖长拳击败全国英雄;姑苏慕容以其人之道还治其人之身,令狐冲一剑剌瞎十几双眼睛等等。我认为,之所以他们能做到如许,关键是在于他们快。

快其实不意味着禁绝或操行差。

  快与操行其实不矛盾。

高手的快,其实包罗着很高的操行在此中。假设你因为高手的快,就量疑其操行,那就相当于在问:东方不败出手那么快,会不会刺禁绝?东方不败其实不称心于刺死敌手,他会在敌手身上刺朵花。他把杀人酿成了艺术。准确来说,他实正的兴致不在杀人,而在于艺术。

退一步说,就算东方不败第一击有点误差,他稍做批改后,立即跟上的第二第三击,也会击中他想击中的处所。在武功差的敌手剑还没拨出来的时候,他已杀死对方并刺上了一朵花。

所以实正的软件高手,他其实不称心于他的代码能有效地工做了,他认为编程是艺术,并醒心于此中。

  在低手能写出一个版本的时间里,他已经写出了第十版。其操行当然不成同日而语。就象一个九段棋手,在给定的时间里,他能计算十种可能,并将每种可能计算到100手之后,从中抉择一种最有利的下法。低手岂有苟全的时机?

高手写软件老是不断地在重构(refactoring)。

  高手喜好迭代式开发。高手说,增量就是打补钉,迭代就是推倒重来。关于软件那种工具,写一遍它可能OK(做到那一点也不随便),写十遍就是一个伟大的产物,再多写一遍它就更伟大些。

高手快的窍门在于他很熟悉各类工具。高手看书很快,因为每一本新书里,值得他好都雅的新手艺只要一两章的内容。

  他能敏捷看完,并准确领略那本书的中心思惟和价值。而关于一个新手,每句话都是新的,他都需要往理解,每一段例子,他都需要往试。

很少看到一种100%全新的手艺或理论。就象Java language specification里说的,Java没有利用任何新手艺,用的都是业界久经考验的手艺。

  关于高手来说,那些手艺都是他所熟悉的。天然,很快他就从一个C++高手酿成了Java高手。假设一个编程新手学Java,学两年也不如一个高手学两个月的。高手学新工具快。

高手写代码速度快。统计成果说,人均每人月的有效代码速度可能是300至400行。

  但那是业界均匀消费效率。关于高手来说,那个数字太低了。天天写300至400行是完全有可能的。因为在写代码时,所有常识都已具备,已经没有任何需要他多花时间的工作了。他以至很少需要Debug。

高手重用代码的才能很强,熟悉新的API的速度很快。

0
回帖

什么才是软件开发的葵花宝典? 期待您的回复!

取消