近来读Joel Spolsky的《JOEL 说软件》,有些收获,陆续的把些自己感兴趣的书摘和感想发上来。
下面这篇文章Joel写于2002年,现在读来仍有意思。
十五章——开火与运动
问题一:
对大多数软件开发人员而言,进入状态是很难的一件事,而进入的越慢就越会影响开发效率。(不只是开发,也针对生活中很多类似的问题)
那该如何?
答案:开了头就好了
以下是引用:
当我还是一句以色列伞兵时,一个将军停下来给我们做关于策略的简短演讲。在步兵作战中,他对我们说,只有一个策略:开火与运动。当你向敌人开火时,就要向敌人靠过去。火力迫使他们低下头而不能向你开火。(这就是士兵们叫嚷“掩护我”的含义所在。它的意思是说:“向我们的敌人开火,敌人就会像野鸭子一样俯下身子而不能向我开火,而久可以跑到街对面去!”)跑动能让你掠过地域而接近敌人,在这个位置你有比敌人大得多的机会来射中目标。要是你不动,敌人就会确定发生了什么事情,那件事情是不好的。要是你不开火,敌人就会向你开火而让你动弹不得。
开火与运动的原则就是你如何在现实生活中把事情办成的策略。你每天都得向前移动一点点。代码是否蹩脚与充满故障而没人想要它是无关紧要的。只要你向前移动而不间断地编写代码与修复故障,时间就会站在你一边。
(引申出的)问题二:
要时刻注意敌人在什么时候向你开火,敌人开火的目的(也就是竞争对手发布新产品的目的)?
答案:让你着疲于应付且无法向前移动,威胁不到他们同时他们可以向前移动。
回顾数据访问策略就可引出微软的发家史。ODBC、RDO、DAO、ADO、OLEDB,以及ADO.NET,不一不是新的东西(请注意此文写于2002年)!这些事物都是技术上确实需要吗?不是该死的伪设计组织在每年都需要重新开发数据访问手段而造成的结果么?(很可能是这样的~)不过,最终的结果全是火力覆盖。竞争方(李德新没有查当时有哪些竞争者,所以没举例子)除了将所有时候花在转换与跟进之外,别无选择,从而没有时间去开发自己的新功能特性。(此段让我明白了些,为什么会出现那么多“新”产品,当然用户真正需要的除外)
不妨近距离审视一下软件领域的风景。混得不错的公司都是对那些大公司依赖程度最小而不必将他们的精力花在跟踪、重建与修复只在Window 平台才会出现的故障之上的公司。举步维艰的公司都是一些将太多时间花在喝茶聊天,以弄清微软将来的发展方向是什么的公司。人们整天在为.NET发愁而决定重新实现对.NET的整个产品体系结构,因为他们认为自己只能这样做。