写点什么

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

  • 2011-04-25
  • 本文字数:2558 字

    阅读完需:约 8 分钟

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

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

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

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

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

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

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

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


图书信息

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

内容简介

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

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

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

作者介绍

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

2011-04-25 21:174487
用户头像

发布了 109 篇内容, 共 42.0 次阅读, 收获喜欢 14 次。

关注

评论

发布
暂无评论
发现更多内容

应对海量时序数据,华为云GaussDB(for Influx)有妙招

华为云开发者联盟

云原生 数字化转型 时序数据 华为云GaussDB

LeetCode题解:剑指 Offer 49. 丑数,三指针,JavaScript,详细注释

Lee Chen

算法 大前端 LeetCode

全球案例 | NTT:Atlassian 帮助我们重塑危机中的可能性

Atlassian

敏捷 团队协作 数字化转型 Atlassian Jira

智慧城市:大数据运营中心 IOC —— Web GIS 地图应用

一只数据鲸鱼

WebGIS ioc 数据可视化 智慧城市 数据运营

最全 MongoDB 基础教程

若尘

数据库 mongodb mongo

Modbus协议在串行链路上的实现

不脱发的程序猿

通信协议 物联网常用协议 4月日更 Modbus 串行通信

HDFS的垃圾桶机制

五分钟学大数据

hadoop 4月日更

HikariCP-技术专题-配置介绍和使用

洛神灬殇

重读《重构2》- 提炼变量

顿晓

重构 4月日更

PHP自动加载原理

Sakura

4月日更

Modus串行链路系统电气特性:2线-Modus、4线-Modus、RS232-Modus和RS485-Modus的特性

不脱发的程序猿

通信协议 4月日更 Modus 串行链路 RS232、RS485

想来百万流量技术公众号发布文章吗? InfoQ 开放内容平台了!

InfoQ写作社区官方

热门活动

APM-技术专题-监控系统选型

洛神灬殇

APM 监控

云原生势不可挡,华为云GaussDB加速企业数字化转型

华为云开发者联盟

华为云 GaussDB

第一篇测试

童童

架构训练营

7年Java经验|面20+家公司|已拿16个offer|面经总结|

Java架构追梦

Java 架构 面试 20+大厂面经

入门物联网嵌入式才是关键!

cdhqyj

技术 编程语言 物联网 嵌入式 系统

JVM-技术专题-方法区中常量池分析

洛神灬殇

JVM 常量池

Android面试送分题:大厂经典高频面试题体系化集合,实战篇

欢喜学安卓

android 程序员 面试 移动开发

android热修复基本原理,15分钟的字节跳动视频面试,满满干货指导

欢喜学安卓

android 程序员 面试 移动开发

硬核!阿里内部这份《Java面试核心知识手册》在Github上已获赞高达89.7K!

Java架构之路

Java 程序员 架构 面试 编程语言

《采访彩食鲜 CTO 乔新亮:如何从一名程序员晋阶为CTO》(采访提纲)

石云升

28天写作 4月日更 调查采访能力考核

1小时破千万点击量!阿里巴巴首发:Java核心框架指导手册

Java架构追梦

Java 阿里巴巴 架构 面试 核心框架

Flume高阶自定义组件

大数据技术指南

大数据 flume 4月日更

想来百万流量技术公众号发布文章吗? InfoQ 开放内容平台了!

xiaotan

InfoQ 的朋友们 热门活动

「 留言参与 」—— InfoQ 写作平台【 1 周年盛典 】

InfoQ写作社区官方

1 周年盛典 热门活动

阿里巴巴云原生 etcd 服务集群管控优化实践

阿里巴巴云原生

容器 运维 云原生 k8s 存储

博云入选2021爱分析·产业数字化厂商全景报告

BoCloud博云

云计算 云原生 PaaS 博云

非科班毕业生,五面阿里:四轮技术面+HR一面已拿offer

码农之家

Java 编程 程序员 互联网 面试

小厂逆袭美团|5年经验|一二三面经,已拿offer|

Java架构追梦

Java 架构 面试 美团Offer

iOS--面试题:多线程

ios 面试 多线程

阅读者(十一):简单之美_架构_张逸_InfoQ精选文章