生成式AI领域的最新成果都在这里!抢 QCon 展区门票 了解详情
写点什么

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

  • 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:174253
用户头像

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

关注

评论

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

云端聚首,造炬成阳 | 瑞技荣获思科云CCC合作伙伴授牌

Bytebridge

语音识别技术在智能家居中的应用与挑战

来自四九城儿

软件研发降本增效:寻求高效研发团队还是选择软件外包?

SoFlu软件机器人

软件开发 软件定制

使用 Jenkins 与 KubeVela 实现应用的持续交付

高端章鱼哥

JavaScript node.js API

谈国产替代---从新出发

统信软件

操作系统 国产化替代

QCN9024 Performance|WiFi6E TriBand Card DR9074 Achieving Blazing 1.3Gbps Speed in 5.28GHz 80MHz BW Throughput Test

wallyslilly

QCN9074 QCN9024

区块链支持物联网的4种方式

BSN研习社

语音识别技术在医疗领域的应用与前景

来自四九城儿

突破放量困境:百度营销放量神器的高级应用指南!

Geek_2d6073

数字孪生:助力机载软件构型管理

DevOps和数字孪生

数字孪生 机载软件

倒计时 2 天!本周六,Apache Doris 年度技术盛会相约北京!

SelectDB

数据库 大数据 数据仓库 实时数仓 apache doris

「支持M1」Axure RP 9原型设计工具 附 Axure RP 9破解激活教程

晴雯哥

元宇宙项目开发 dapp智能合约模式开发

西安链酷科技

盲盒系统开发 盲盒APP系统开发 元宇宙开发 链游开发

Javascript抓取京东、淘宝商品数据

Noah

平台工程动态 Monthly News 2023-9

杨振涛

DevOps 云原生 开发者体验 内部开发者平台 平台工程,

Java中的代码重构:技巧、优秀实践与方法

这我可不懂

Java 代码重构

微信防撤回 WeChatTweak 最新集成版

iMac小白

微信多开 微信助手 微信消息撤回

最详细的Mac版MATLAB R2023a安装与激活

晴雯哥

Zbrush 2023(数字雕刻和绘画程序)激活版mac/win

iMac小白

ZBrush破解版 ZBrush2023 ZBrush下载

公链项目宣传包装开发推广部署一条龙服务

西安链酷科技

DAPP智能合约交易系统开发 DAPP系统开发 公链开发

博睿数据 Bonree ONE 秋季产品发布会,即将震撼启幕!

博睿数据

可观测性 博睿数据 智能化平台

红楼梦人物关系图怎么画?超详细的人物关系图绘制教程来了。

彭宏豪95

阅读 在线白板 办公软件 绘图软件 绘图工具

泛微全新低代码平台e-builder发布,让应用构建更智能、协同、全程数字化

Geek_2d6073

JetBrains PhpStorm 2023中文激活版mac/win

iMac小白

PhpStorm 2023下载 PhpStorm 2023破解版 PhpStorm 2023注册码 PhpStorm mac

NFTScan 正式上线 Scroll NFTScan 浏览器和 NFT API 数据服务

NFT Research

NFT NFTScan nft工具

语音识别技术中的实时处理与云计算

来自四九城儿

IDA Pro 7 for Mac破解下载 静态反编译软件 支持M1

晴雯哥

基于虚拟仿真技术的汽车燃油泵控制

DevOps和数字孪生

数字孪生 虚拟仿真 汽车行业

PHP-FFMpeg 操作音视频

极客飞兔

php 音视频 ffmpeg 经验总结

区块链公链开发

西安链酷科技

区块链开发DAPP开发 区块链开发链游开发

ScreenFlow for mac(屏幕录像软件) v10.0.9汉化版

iMac小白

ScreenFlow汉化版 ScreenFlow下载 ScreenFlow破解版 ScreenFlow mac

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