BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

阅读者(十一):简单之美

| 作者 张逸 关注 12 他的粉丝 发布于 2011年4月26日. 估计阅读时间: 7 分钟 | CNUTCon 了解国内外一线大厂50+智能运维最新实践案例。

本书的内容有些另类,绝不似书名所呈现的中规中矩,但确实体现了一种美,是一种简单到极致的优雅,似乎又繁复如星空般的深邃,包容如峭立千仞之高的山壁。这是一本可以称之为轻松加愉快的思想随笔,又是一篇如杜拉拉升职记般的职场小说,它还贯穿了整个软件开发过程,揭露了从方法论、需求、架构设计、编码实现,到测试与维护以及团队管理的诸多要诀。这正是本书的另类之处。

我在阅读本书时,情不自禁地被放在书中每章篇首的实践场景所吸引,甚至忽略了本书的重要内容,直接根据提示转到下一个章节的实践场景,一气呵成,直到将这些实践场景阅读完毕。作者挥洒自如的文笔,入木三分的人物刻画,以及细腻含蓄的情感描写,将我彻底吸引住了。在大结局中,孔如之与儿子在阳光中巴黎圣母院前的对话,让人意犹未尽,似乎满怀希望,却又历尽沧桑,真是让我产生“情何以堪”的感慨。

这是本书感性的一面了。只是看完这9篇由实践场景片段组成的小说,就已经值回票价了。而从技术书籍的角度来看,本书的意义显然并不在于此,作者完整地勾勒出软件开发的全貌,诸多感悟与体会都可以成为软件开发人员的重要借鉴。作为本书理性的一面,这些内容需要反复阅读和分析琢磨,才能引起你的共鸣,许多模糊在心头的概念,在作者简明扼要的叙述下,或许就会产生“拨开云层见月明”的感悟。

以本书第4章为例。作者给出了一个简单的实例描述了框架构建的过程。首先从背景描述出发,展现了对保险业务中对保单进行处理的需求功能。这段背景描述将复杂的保险需求阐述得非常清楚而富有条理,体现了作者撰写文档的高超能力。

接下来是作者对这一背景描述的抽象。这段抽象有理有据,较好地体现了从需求捕获到分析的过程演变,利用抽象搭建了基本的领域模型。紧接着是对约束的思考,这是架构师必须完成的工作。根据对需求的抽象和关于约束的思考,就能够做出合理的架构决策。作者在本书中反复强调的“使用自然语言和讲故事的方式”,通过实例得到了具体的展现。事实上,在Joel on software一书中,Joel Spolsky也提出了同样的观点,认为通过讲故事的方式描述用例场景,可以更好地促进理解与交流。本书作者扩大了这种方式的应用范围,引入到架构设计过程中。对这一做法,我深表赞同。事实上,我在架构过程中,也常常采用类似手法,通过在文档撰写设计的故事场景,帮助我梳理设计思路,有时候,甚至在文档中自问自答,在这样的编写过程中我慢慢找到了解决方案。

本书对领域模型的讨论也有着个人独到的见解。例如他对静态模型和动态模型的分类,又例如他提出了使用贫血模型的好处。在Martin Fowler提出贫血模型之后,业界曾经掀起过对贫血模型与充血模型的争论。然而,争论到了最后,也没有一个确切的结果。从经典的OO原则来看,它要求将对象的数据和行为组织在一起,这正是批判贫血对象的主要论据。我比较倾向于这个观点,认为对象没有行为,就是“死”的,缺乏自治的能力。但在实际开发过程中,我也常常体会到贫血模型的好处,尤其是在模型重用与解耦方面,贫血模型都有其显著的优势。本书作者认为,贫血模型的“第一个好处是,有利于信息交换。第二个好处是,清晰了对象的职责。第三个好处是,实体对象(贫血对象)的实现更加灵活。第四个好处是,可以确保实体对象(贫血对象)只能在内存中用于计算。”这些好处都说到了点子上。虽然,我对于贫血对象的使用仍然抱有谨慎态度,但本书对此的阐述依旧给我提供了不错的参考。

在项目管理方面,书中强调了“负责制度”的实施。这首先关系到责任定位的问题。项目延迟或失败,究竟是项目管理的问题,还是架构设计的问题?是编码实现的问题,还是测试维护的问题?作者认为,负责制度的缺失可能会影响项目的质量。书中提到:“在软件开发过程中,人是最重要的因素,而责任、权利和利益是保证这个因素发挥作用的关键。”“建立负责制度的目的,不是为了惩罚某人,也不是为了永久取消某人的职业发展权利,它只是通过责任人利益损失的形式,来表明这样一个事实:没有金刚钻,别揽瓷器活。”事实上,负责制度的关键不在于制度的确立,而在于执行。如果没有创建公平、公开、公正的执行环境,这种制度只会给软件开发带来负面影响。这也是作者仅仅提出问题,却没有给出好的答案原因所在。相对而言,我个人更倾向于Scrum“回顾会议”,在基于迭代与渐进式开发的基础上,这种方式更能够有效解决项目开发中存在的问题。

倘若是新手阅读本书,由于缺乏足够的工作阅历与开发经验,很难理解作者写作的意图。但我们绝对不能因为这种认识上的障碍,而将本书拒之千里之外。事实上,越早阅读本书,越能够开拓读者的眼界,提前感受业界的真实与谎言,反而能够帮助新手更快地确立自己的职业生涯规划。对于混迹行业多年的老鸟而言,阅读本书,一定能找到那些似曾相识的画面。作者对技术的深入探讨,也一定能给予我们启发,即使观点不同,也可以求同存异。所谓“嘤其鸣矣,求其友声”,这是我在阅读本书时收获的如遇旧友般的快乐!


图书信息

作者: 倪健
出版社:机械工业出版社
出版日期:2010 年4月

内容简介

本书不是一本关于方法论的理论性书籍(尽管已经尝试在大量的思考上进行一些理论归纳),也不是一本关于具体技术的操作手册。本书为读者呈现的是作者在软件 开发实践中的思考和体验,目的在于探究实践中的问题的根源,并给出思想上的解决之道。

本书以软件开发的基本顺序为主线,以简单、想象和文化的开发思想为线索,以为软件开发实践提供指导价值为目标。本书力图做到传递经过组织的、可操作的软件开发经验,使软件开发领域的新手在知识(软件开发思想)积累过程中少走弯路,也使软件开发领域的老手可以对照自己的经验把可能的困惑降到最低。有一些有趣例子为那些有价值的思考提供支持。

本书中,作者尝试对简单、想象和文化做一些形而上的思考。这些思考会比较抽象,但却是很多话题的基础。

作者介绍

倪健,资深软件工程师、项目经理和架构师,拥有12年IT行业从业经验。从事过电气设计与装配、单片机开发、软件系统设计与开发、项目管理、软件架构、软件培训以及性能调优相关的工作。精通汇编语言、VB、VC、Java和C#,自主设计过一些框架。12年的工作经验帮助他建立了一个完整的认识世界的思想 体系,这个体系的核心内容就是简单、想象和文化。他擅长想象,善于归纳,内心坚持,追求有意义的生活。

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

亮点 by wu robin

追求有意义的生活

阅读次序和我一样。 by 峻申 吴

我也是先看小说,然后再一章章重读。个人觉得倪建写的很不错哦

非常精彩的评论! by 杨 福川

我是这本书的策划编辑,除了倪老师,我可能是读这本书读得最多的,但是真正懂倪老师这本书的人,从我目前收集到的情况来看,恐怕非张逸老师莫属了。

在这本书开始写作之前,我和倪老师对内容的规划和写作进行了很多次的讨论,这本书的写作自然也是耗费了倪老师很长的时间,倪老师几乎把自己这十几年来所有的积累和感悟都注入到了这本书中,而且是以一种非常巧妙的方式,可谓用心之至。

张老师的书评写得非常精彩,每一个观点都与倪老师形成了共鸣,我看完这篇书评后就在想,如果张逸老师和倪健老师一起坐下来畅谈,那会是一番什么样的情景呢?这一天很快就会到来了,非常期待。

这本书我私下送过给很多技术界德高望重而且喜欢读书的朋友,他们无一例外地都给出了很高的评价,这让我和倪老师都备受鼓舞。

虽然不敢妄谈这是一本大师的作品,但是绝对是软件开发领域难得的佳作,相信就像张毅老师所说的:

“倘若是新手阅读本书,由于缺乏足够的工作阅历与开发经验,很难理解作者写作的意图。但我们绝对不能因为这种认识上的障碍,而将本书拒之千里之外。事实上,越早阅读本书,越能够开拓读者的眼界,提前感受业界的真实与谎言,反而能够帮助新手更快地确立自己的职业生涯规划。对于混迹行业多年的老鸟而言,阅读本书,一定能找到那些似曾相识的画面。作者对技术的深入探讨,也一定能给予我们启发,即使观点不同,也可以求同存异。所谓“嘤其鸣矣,求其友声”,这是我在阅读本书时收获的如遇旧友般的快乐!”

最后说句题外话,这本书每一章前面的故事可谓实在是精彩,情节设计之巧妙,人物性格刻画之入木,语言描述之朴实无华,仅仅这一点这本书就值回票价了。

Re: 非常精彩的评论! by Phoenix Andrea

的确好书~,正在看第二遍~

Re: 非常精彩的评论! by 杨 福川

已经在看第二遍了啊?第一遍什么时候看的?

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

5 讨论

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT