写点什么

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

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

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

关注

评论

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

合合信息与科瑞物业达成合作,数字名片提供企业数智化转型新机遇

合合技术团队

人工智能 合作 数字名片

【SOP】最佳实践之 TiDB 业务写变慢分析

TiDB 社区干货传送门

性能调优 管理与运维 故障排查/诊断 应用适配

《清华管理评论》:智能时代的人力资源管理“智效合一”转型

用友BIP

人力资源管理

创新赛制,顶尖赛题!| 2023第二届粤港澳大湾区(黄埔)国际算法算例大赛十赛道虚位以待!

ModelWhale

人工智能 深度学习 数据竞赛 琶洲 粤港澳大湾区

火山引擎DataLeap:更强数据目录搜索能力,做到一步找数

字节跳动数据平台

大数据 数据中台 数据研发 企业号 8 月 PK 榜

合合信息通过ISO/IEC国际标准双认证,为全球用户提供高合规标准AI服务

合合技术团队

人工智能 数据安全 个人信息保护

通过docker安装单机版minio简单测试br通过s3存储备份恢复数据

TiDB 社区干货传送门

备份 & 恢复

ChatGPT 助力开发人员改进代码的5个方式

SEAL安全

开发者 ChatGPT 企业号 8 月 PK 榜

从生态的角度看容器和虚拟化的区别

品高云计算

TiDB 源码编译之 PD/TiDB Dashboard 篇

TiDB 社区干货传送门

开发语言 7.x 实践

TiDB 多集群告警监控-初章-监控融合、自动告警处理

TiDB 社区干货传送门

监控 实践案例 集群管理

TiProxy 尝鲜

TiDB 社区干货传送门

实践案例 6.x 实践

TiProxy 原理和实现

TiDB 社区干货传送门

新版本/特性发布 TiDB 源码解读 6.x 实践 TiKV 源码解读

Web3到底是个啥?

BSN研习社

【PCSD考试笔记】

TiDB 社区干货传送门

TiDB 底层架构

MobPush iOS SDK iOS实时活动

MobTech袤博科技

ios 消息推送 sdk

华秋亮相2023世界汽车制造技术暨智能装备博览会,推动汽车产业快速发展

华秋电子

中企出海关心的多数据中心问题,答案在这里!

用友BIP

中企出海

实战指南:如何利用Postman流畅调试微信支付接口

Liam

程序员 后端 微信支付 Postman API 调试

性能全面飙升!StarRocks 在贝壳找房的极速统一实践

StarRocks

数据库 大数据 MPP 湖仓一体 贝壳找房

inIoT分享专栏丨如何破解物联网设备连接困境

inBuilder低代码平台

一种新的告警收敛方式“先知预警”,为您的系统健康护航 | 京东云技术团队

京东科技开发者

系统稳定性 预警监控 企业号 8 月 PK 榜

命令行非明文密码连接 TiDB

TiDB 社区干货传送门

实践案例 集群管理 数据库连接

如何在数据库迁移中保证数据一致性?

java易二三

MySQL 数据库 编程 计算机

如何规划税务数智化建设

用友BIP

税务管理

易点天下KreadoAI正式上架亚马逊云科技Marketplace全球商业化加速落地

新消费日报

@ControllerAdvice注解使用及原理探究 | 京东物流技术团队

京东科技开发者

spring 注解 源码解析 企业号 8 月 PK 榜 @ControllerAdvice

TiDB 优雅关闭

TiDB 社区干货传送门

TiDB 源码解读 6.x 实践

BenchmarkSQL 支持 TiDB 驱动以及 tidb-loadbalance

TiDB 社区干货传送门

开发语言 性能测评 应用适配 数据库连接

SpringCloud-Hystrix服务熔断与降级工作原理&源码 | 京东物流技术团队

京东科技开发者

SpringCloud Hystrix 熔断降级 企业号 8 月 PK 榜

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