《梦断代码》作者罗森伯格对OSAF主持的Chandler项目进行田野调查,跟踪经年,试图借由Chandler的开发过程揭示软件开发中的一些根本性大问题。本书是讲一事,也是讲百千事;是写一软件,也是写百千软件;是写一群人,也是写百千万人。任何一个在软件领域稍有经验的技术人员看完本书,必掩卷长叹:做软件难。软件乃是人类自以为最有把握,实则最难掌控的技术。
读了《梦断代码》这本书的一二章,我越发意识到我将要面临的高山宛若耸入云端。真正的程序员都是一批准备改变世界的人,他们雄心壮志,信心满满,却又因为思想抱负各不相同而各自为战,难以成型。他们是天生的乐天派,种种困难面前都不为所动,然而正是如此,才为计算机提供了无尽的可能。
书中提到了艾瑞克·瑞蒙德在《大教堂与集市》中的一句话“好程序员懂得写什么,而卓越的程序员知道改写(并复用)什么”,对此我的触动尤为深刻,一直以来我都坚信个人的能力,自学占据了我2年编程生涯的全部,没有想过要去分析和理解别人的思维,并以此基础去激发潜力。而如今我在对团队开发有了进一步的了解之后,意识到一个人单打独斗哪怕穷其一生也不可能做出真正创新实用的好软件,不了解别人的思想和观念,个人又怎能保证是创新呢?!
承前继后了解已知挖掘未知,是成为一名程序员的基础;宏大合理的想象,具有富含逻辑的概念性框架的思考是成熟程序员的标志;优秀的团队合作能力严谨坚韧的心态是好的程序员应当具有的能力。题目故意标号为0,书中也提到“计算机是从0开始计数的”,作为一个程序员,也理应从0开始计数。
是什么原因,导致软件开发有时会进入这样一个令人惋叹的黑洞?
书的作者没有,也不可能给我们一个答案,但通过作者忠实记录于书的、就发生在当下不久的、这一真实案例,以及对软件开发历史和方法的部分介绍,本书应当能带给我们很多有益的启示和思考。
我一直认为,读书最大的功用之一,就是能激发我们的思考,是打开思维源泉的阀门;这本书很好的起到了这一作用,它让我们去思考软件开发的过程、方法、管理…,为我们思考这些提供了真实生动的案例,也对现实的工作有些指导和警示作用。 为什么好软件如此难做?这是我本人,我想也是很多人都在苦苦思索的一个问题,虽然无人能有完全确定的答案,但通过书中的记述,和个人思考,还是可以获得一些启示:
计算机严格的逻辑性和精确性,同人类不严密的逻辑,模糊多变的思维模式之间的矛盾,造成的人与机器之间沟通的障碍。
开发团队之间相互沟通协作的成本,导致产生《人月神话》作者布鲁克斯法则的悖论-往已延误的项目中补充人力,只会使其继续延误。
项目目标不明确,标靶变来变去,因此有时决定说什么,比怎么说更困难。
项目目标不切实际,从一开始就想做一个适合所有人的,能做所有事的系统,造成就如要做永动机一样的结局。