
作者:(美)Karl Wiegers(卡尔·魏
页数:240
出版社:电子工业出版社
出版日期:2024
ISBN:9787121473524
电子书格式:PDF
PDF下载地址
内容简介
本书像牡蛎一样,去芜存菁,将作者五十年来在软件工程领域摸爬滚打得来的经验教训凝结为软件开发珠玑。它围绕需求、设计、项目管理、文化与团队合作、质量、过程改进几个方面,在软件工程的各个角落中挖掘出也许对大家有用的经验教训,让大家在自己的相关职业生涯(包括但不限于研发各领域的工程师、产品经理、设计师、项目经理等)中少走一些弯路,更能如鱼得水。
作者简介
1997 年起,Karl Wiegers 一直担任位于美国俄勒冈州欢乐谷的一家软件开发咨询和培训公司—Process Impact—的首席顾问。在此之前,他在柯达公司工作了 18 年,曾担任过摄影研究科学家、软件开发人员、软件经理及软件过程和质量改进领导。Karl 拥有伊利诺伊大学的有机化学博士学位。Karl 共著有十二本书,包括 The Thoughtless Design of Everyday Things、《软件需求》、More About Software Requirements、《成功软件项目管理的奥秘》、《软件同级评审》、《聪明的商业咨询师》及一本侦探推理小说 The Reconstruction。他还撰写了许多关于软件开发、管理、设计、咨询、化学和军事史的文章。Karl 有几本书获得了较高的奖项,最近一次是,他与Joy Beatty 合著的《软件需求》(第 3 版)获得了美国技术传播协会的卓越奖。Karl 曾担任IEEE Software 杂志编辑委员会的成员,以及 Software Development 杂志的特约编辑。在工作之余,Karl 热衷于品酒、在图书馆做志愿服务、为孤寡老人送餐、弹奏吉他、创作并录制歌曲,他还酷爱阅读军事、历史和旅行方面的资料。
死月(XadillaX),本名朱凯迪。字节跳动软件研发工程师,阿里巴巴前技术专家,Node.js Collaborator 之一。硕士毕业于浙江大学,退役 OI、ACM 竞赛选手。曾供职于花瓣网、大搜车、阿里巴巴。著作、翻译出版书籍《Node.js:来一打 C 扩展》、《精通 Vim:用 Vim 8 和 Neovim 实现高效开发》、《JavaScript 悟道》。
本书特色
中国计算机学会执行主席winter 倾情作序|语雀创始人玉伯、《仙剑奇侠传3》主程房燕良、字节跳动知名专家李玉北、浙大软件学院研究员李启雷联合力荐 阿里巴巴、腾讯、字节跳动、谷歌、EA等头部公司诸多业界大咖撰文赞誉 Wiegers的洞察和具体建议涵盖了6个关键的成功要素:需求、设计、项目管理、文化与团队合作、质量和过程改进。对于每个要素,在开始介绍前,Wiegers都提供 了对自己的经验进行反思的“初体验”;然后提供具有核心洞察、真实案例研究和可行解决方案的详细“经验教训”” ;最后为你的项目、团队或组织提供计划“下一步””采取的行动。这是你在学校或训练营中学不到的知识,可以提高你作为开发者、业务分析师、质量专家或管理者的表现。 ●梳理需求,以获得对真实问题的共同愿景与理解。 ●创建具有鲁棒性的设计,实现正确的功能与质量属性,同时又可进一步发展与演变。 ●预见并避免无处不在的项目管理陷阱。 ●培养一种文化,达到真正的知行合一。 ●从初始就规划质量,并全力投身其中。 ●过程改进是手段,而非目的,用以实现所期望的商业成功。 ●计划下一步行动,充分落地习得的经验教训。”
“很多人认为软件开发就是一个与写代码相关的技术活儿,所以一开始看到《软件开发珠玑》这个书名时,我也以为这是一本讲“怎么让你的代码写得更优美”的图书,但后来我发现我错了。从更广义的角度来说,职业领域的软件开发是一个综合性的大工程,它包括与客户的沟通交流,需求对齐与功能设计,项目统筹与团队协作,架构设计与代码开发等,是产品、研发、质量管控、项目管理等多种专业岗位通力合作的过程。本书从宏观的角度,通过需求、设计、项目管理、文化与团队合作、质量、过程改进等章节分享了大量的实战经验,全面地展示了软件开发过程。不论你处在什么岗位,处在软件生命周期的哪个环节,只要打开此书,都将受益良多。 ——宁 启明星辰云安全专家,华为云前 IaaS 网络开发工程师 经过几个周末的阅读,我终于完成了对这本书的学习。这本书精彩地总结了软件开发过程中的实践经验和教训,深入剖析了各种挑战,并系统地总结了可行的应对策略。中文版的翻译非常流畅,让人几乎感觉不到这是一本译著,毫无违和感。在阅读的过程中,我产生了两种明显的情绪。一种是:我曾经历过这个经验教训,书中对其进行了结构化的梳理,加深了我的认知。另一种是 :尽管我没有直接体验过某些部分介绍的经历,但书中的阐述拓宽了我对这个场景的视野。总的来说,这本书是软件工程领域难得的经验教训总结,绝对值得我们细细品味。 ——董必胜 字节跳动 Dev Infra 产品负责人 读本书就像和一位老师傅交谈,他娓娓道来,想把自己在软件开发方面的经验教训都讲给你听。本书包含作者在软件开发领域的系统性的经验总结,还包含各种他踩过的“坑”,其中不少地方让我会心一笑。作为一名软件开发者,如果你遇到一些困难或者困惑,不妨带着你的问题来向这位“老师傅”请教一番,他很可能让你获得启发。另外,值得一提的是本书的翻译,语言轻松、流畅,为本书增添了几分色彩。 ——房燕良 腾讯 IEG 技术专家,《仙剑奇侠传 3》主程 通读全文,我认为这是一本非常全面、实用和有价值的软件开发图书。作者作为软件开发领域的资深专家,在书中分享了他几十年积累的经验和见解,内容涵盖了软件开发的所有重要环节。从需求分析、设计、项目管理、团队合作、代码编写到质量测试、改进,作者结合具体案例和经验教训,辅以图表说明,提供了大量的实用建议。作为一名从事软件开发多年的人员,我深感其中的复杂性和多样性,但这也正是软件开发的魅力所在。强烈将这本书推荐给所有软件开发人员,无论是初学者还是经验丰富的开发人员。对于初学者来说,这本书通俗易懂,可以帮助他们快速掌握软件开发的基本知识和技能,少走弯路 ;对于经验丰富的开发人员来说,这本书可以帮助他们巩固和提高软件开发水平,并能从中获得新的见解。这是一本非常值得一读的软件开发图书。 ——胡久霖 谷歌高级软件工程师 阅读这本书时,我能深刻感受到作者在写本书时,是多么想将他多年在软件开发过程中积累的宝贵经验教训分享给大家。软件开发是一个复杂的系统性工程,本书从需求、设计、项目管理、文化与团队合作、质量及过程改进 6 个方面,通过丰富的经验教训和实际案例,环环相扣,全面展示了各个环节中可能会踩到的“坑”,便于读者理解精华并将其应用到实际软件开发过程中。作为大型系统软件的开发人员,我非常荣幸地将这本实用且语言轻松的图书推荐给所有软件开发行业的从业者,相信大家在阅读过程中一定会有所收获。 ——胡庆达(执壹)阿里巴巴高级技术专家,PolarDB 基础设施负责人,清华大学博士 这是一本涉及需求、设计、项目管理、文化与团队合作、质量及过程改进 6 个方面的软件开发和管理领域的图书。它提供了丰富的经验教训和实际案例,阅读后可让你在工作中更加游刃有余。作为一名从业多年的产品经理,我对其中需求与设计两个方面深有感触。作为开发人员,如果可以更好地理解需求,那么就可以和产品经理一起从用户视角去思考更合理的解决方案 ;如果在设计系统时预留了较好的可扩展性,就可以让那些不太靠谱的产品经理无机可乘。总之,本书是一本非常实用的图书,如果你想在软件开发和管理领域获得更多的“避坑”经验,那么这本书一定要放在你的电脑旁。 ——黄继久 阿里巴巴、网易前资深产品经理 这不是一本关于编程的图书,它介绍了软件是如何设计开发的。相较于其他介绍软件工程的图书,本书提供了一个更贴近实战开发者的视角,通过需求、设计、项目管理、文化与团队合作、质量、过程改进等方面一系列的经验教训告诉读者应该怎么做,以及应该避免怎么做。软件开发工作实属不易,开发人员在软件开发过程中面临着各种各样的失败风险,希望本书能够给参与软件开发的实战者提供一个生存指南。 ——李启雷 浙江大学软件学院副研究员 本书是一本集结了作者 Karl Wiegers 在其丰富的软件和管理领域经验教训的图书。通过详细的分析和实用的例证,书中呈现了 60 个深刻的经验教训,旨在帮助读者不要陷入常见的软件开发陷阱。书中介绍的每个经验教训都被细致解释,以便读者可以将这些知识应用于实际工作,不仅为软件开发人员提供了宝贵的指导,同时对项目经理和其他涉及软件开发的专业人士也有着重要的参考价值。译者死月准确地传达了作者的观点和经验教训,为中文读者提供了一个无缝的阅读体验。 ——李玉北 字节跳动工程师 这是一本非常接地气且易于理解的图书。本书作者依据其多年丰富的工作经验,辅以其清晰实用的观点,并选择其职业生涯中遇到的各种有代表性的例子来为读者解读软件工程在实际工作中的应用场景。虽然本书并未过多涉及具体的技术细节和代码样例,但个人认为不论是从开发、设计的角度出发,抑或是在产品、项目层面思考问题,本书都能为软件从业者提供非常具有参考意义的案例分析,以及对其背后软件工程思想的具体解读。作为深耕一线多年且参与过多个大型系统研发的软件从业人员,我很荣幸能阅读此书并将其推荐给所有有需要的同行。 ——马安东 EA 高级软件工程师 如果你想在软件开发和管理领域积累更多经验,那么这本书绝对是你不可错过的宝藏。本书包含需求、设计、项目管理、文化与团队合作、质量、过程改进 6 个方面的内容,它不仅提供了丰富、实用的工具和方法,更重要的是,作者分享了许多宝贵的经验教训,让人印象深刻。阅读完毕,你会对这些经验教训深深地产生共鸣,并能够预先掌握书中介绍的实践中的技巧。对于产品经理而言,需求和设计方面的内容尤为精彩。当开发人员更好地理解了需求时,便能够从用户的角度出发思考更优秀的解决方案。同时,在设计系统时预留良好的可扩展性,也有助于防止不够靠谱的产品经理导致的问题。总之,这本书是一本非常实用的软件开发指南,一定能让你受益匪浅。 ——谭敏仪(覃一) 蚂蚁集团体验设计专家 软件开发从来不是一件简单的事。这本书很有意思,从多方面提供了一些实践与认知,让软件开发变得也不是那么复杂了。有趣又有用的一本书,值得收藏。 ——王保平(玉伯) 语雀创始人 很多时候,我们的行为和选择都基于潜意识,直到事情做完后,我们才意识到自己的错误。通过复盘、反省,在发现问题的同时,将正确的处理方式转化成默认的行为,当外部条件触发时,自动执行正确的行为方式,如此一来,我们便完成了底层能力(操作系统)的升级。要知道,好的软件在低版本的操作系统上运行,会其很好性能的发挥,而吸纳、借鉴他人成功与失败的经验有助于我们快速升级自身的操作系统。 ——徐磊(啊磊) 蚂蚁集团 RichLab 前端技术专家 这是一本非常适合软件开发从业者阅读的优秀图书,它涵盖了软件开发生命周期中几个主要的主题,包括需求、设计、项目管理、文化与团队合作、质量及过程改进。书中的不少观点是基于作者在软件开发领域丰富的经验产生的,并结合了许多现实中的例子来进行阐述。这使读者更易于理解这些并将其应用到实际工作当中。作者还提供了许多有用的技巧和方法论,用以预防缺陷和其他问题。总之,我向所有软件开发行业的从业者或是想要进入此行业的人强烈推荐这本书,无论你是新手还是已有多年开发经验,阅读这本书都能让你有所收获。 ——赵星安 字节跳动质量架构资深工程师 读完这本书,我有很多收获和惊喜。虽然书名是《软件开发珠玑》,但是作为一名 UI设计师,我认为书中介绍的每一条经验教训都是可以反复阅读、思考和实践的。 ——朱胜格 浙能数科 UI 设计师 这是一个关于 Karl 在其漫长而杰出的职业生涯中取得的经验和教训的集合。本书回顾了 Karl 在这一路上学到的所有好东西(以及一些不好的东西)。然而,这并不是一系列“在我那个年代是这样的”的格言,而是与今天的软件开发密切相关并能使任何参与其中的人受益的经验和教训。这本书非常令人惊讶。它不仅是智慧珠玑的一览表—每一条经验教训都经过了仔细的论证和解释,每一条经验教训都解释了它对你为什么重要,而且最重要的是,告诉了你如何将每一条经验教训应用到现实工作中。 ——James Robertson 《掌握需求过程》的作者 要是能在职业生涯初期就获得一生的经验—这个时候它最有用,且不必为自己的经历中不可避免的错误买单,那该多好啊。Karl Wiegers 在半个世纪的软件和管理生涯的大部分时间中都充当着顾问的角色,他经常被要求处理其他人制造的灾难。在本书中,Karl 列出了他遇到的最常见和最严重的问题。了解最昂贵的“坑”在哪里及了解人们一次又一次地犯哪些错误是很有价值的。Karl 不仅是一位“灾难拯救者”,他还精通业务分析、软件工程和项目管理的很好技术。因此,从 Karl 的经验和学识中,你将获得简洁且重要的见解,了解如何从挫折中恢复及如何避免这些挫折。46 年前,我很幸运地偶然读到了 Fred Brooks 的经典著作《人月神话》,它让我对新职业有了深刻的见解。Karl 的书与之相似,但范围更广,更适应当今世界。我的半个世纪的职业经验证实了他在本书中选择的经验教训是非常正确的。 ——Meilir Page-Jones Wayland Systems 公司高级业务分析师 Karl 又创作了一本充满建议的精彩图书,适合软件开发人员阅读。他的智慧将与所有开发专业人员和学生产生共鸣—无论年轻的人还是年长的人,新手还是经验丰富的人。尽管我已经从事软件开发多年,但这本书及时提醒了我和我的团队哪些事情应该做得更好。我迫不及待地想让我们的新手团队成员阅读这本书。本书的根基在于作者多年来实际操作项目的经验,以及作者为支持这些经验而进行的深入研究。与 Karl 的所有著作一样,本书保持轻松愉快的风格,充满了令人感同身受的故 事和一些有趣的评论。你可以从头到尾地阅读,也可以直接阅读与你今天想要改进的领域相关的特定部分。这是一本既有趣又实用的书,你绝对不会失望! ——Joy Beatty Seilevel 公司副总裁 Karl 的这本书成功地实现了一个具有挑战性的目标 :捕捉和阐述许多你在培训中可能无法接触到的、大多数从业者通过艰苦摸爬滚打才能学到的,并且的确对开发优秀软件有重要作用的见解。虽然本书的结构让你不得不与自己的经验建立联系,以及确定如何改变自己的行为,但它的内容才是闪光点 :包含了“59+1”条教训,涵盖了软件开发生态系统的广泛领域。这些见解将帮助你节省时间,更有效地与各方协作,构建更好的系统,并改变你对常见误解的看法。本书易于阅读,并得到了很多其他领域的专家的支持,这些专家在他们的工作中也发现了这些相同的见解。这些经验教训确实是珍珠 :永恒而宝贵的智慧元素,让你在开发优秀软件方面变得更出色,无论你在职场中承担的是什么角色。你应该考虑购买两本《软件开发珠玑》:一本给自己,一本给团队中的其他人,让他们也能拾起并发现属于他们自己的珍珠。 ——Jim Brosseau Clarrus 公司创始人 这是一本对任何参与软件开发的人都非常适用的优秀图书。本书一个独特(且不寻常)的挑战是如何将内容组织成一条条独立的经验教训。一旦你阅读它们,它们就会成为令人难忘的浓缩知识块,在你需要它们时涌现在你的脑海中。最近,当我与一位高级主管讨论敏捷开发项目中对需求能力的要求时,我立即想到了“经验教训 8 :需求就是要清晰沟通,不要用鬼话迷惑涉众”。从个人经验来看,我可以证实“经验教训 22 :系统问题,接口尤甚”的价值,仅仅因为我没有给予足够的关注,系统就受到严重伤害。从事软件开发的人最终都会痛苦地积累到这些关于将来该做什么和不该做什么的经验。这本书将有助于减少未来遇到的痛苦。正如 Karl 在经验教训 7 中所说的,“好记性不如烂笔头”,这不仅是对实践者的良好建议,而且也清晰地表达了你为什么应该购买这本书。 ——Howard Podeswa The Agile Guide to Business Analysis and Planning: From Strategic Plan to Continuous Value Delivery 一书的作者
目录
我的视角 ……………………………………………………………………………………………………………..1
关于本书 ……………………………………………………………………………………………………………..2
术语说明 ……………………………………………………………………………………………………………..4
你的收获 ……………………………………………………………………………………………………………..4
第2章 需求……………………………………………………………………………………… 5
何谓需求 ……………………………………………………………………………………………………………..5
不同的需求类型 ……………………………………………………………………………………………5
需求工程的子领域 ………………………………………………………………………………………..6
业务分析师 …………………………………………………………………………………………………..7
需求是基石 …………………………………………………………………………………………………..8
初体验 :需求 ………………………………………………………………………………………………………8
经验教训 1 需求不对,项目要废 ……………………………………………………………………….9
何时 ……………………………………………………………………………………………………………..9
何法 ……………………………………………………………………………………………………………10
经验教训 2 需求开发成功,大家就都能懂 ………………………………………………………. 11
经验教训 3 涉众的兴趣点都“长”在需求上 ……………………………………………………13
涉众分析 …………………………………………………………………………………………………….13
仲裁人 ………………………………………………………………………………………………………..15
统一战线 …………………………………………………………………………………………………….15
经验教训 4 以人为本,用途为先 ……………………………………………………………………..16
哪儿来那么多多余的功能 ……………………………………………………………………………16
用途先行 …………………………………………………………………………………………………….17
关注用户故事 ……………………………………………………………………………………………..18
用途规则 …………………………………………………………………………………………………….19
经验教训 5 需求不赖,得看迭代 ……………………………………………………………………..19
渐进式完善细节 ………………………………………………………………………………………….19
突发功能需求 ……………………………………………………………………………………………..20
突发非功能需求 ………………………………………………………………………………………….21
经验教训 6 敏捷需求并无不同 …………………………………………………………………………21
角色与职责 …………………………………………………………………………………………………22
术语 ……………………………………………………………………………………………………………22
文档细节 …………………………………………………………………………………………………….22
活动定时 …………………………………………………………………………………………………….23
可交付形式 …………………………………………………………………………………………………24
优先级排序的时机 ………………………………………………………………………………………24
真有区别吗 …………………………………………………………………………………………………24
经验教训 7 好记性不如烂笔头 …………………………………………………………………………25
畏惧下笔 …………………………………………………………………………………………………….26
书面沟通之益 ……………………………………………………………………………………………..26
合理平衡 …………………………………………………………………………………………………….27
经验教训 8 需求就是要清晰沟通,不要用鬼话迷惑涉众 ………………………………….28
多涉众,多诉求 ………………………………………………………………………………………….29
择述术 ………………………………………………………………………………………………………..30
唠一唠 ………………………………………………………………………………………………………..32
经验教训 9 群众的眼睛是雪亮的 ……………………………………………………………………..32
多需求涉众 …………………………………………………………………………………………………32
需求质量检查单 ………………………………………………………………………………………….33
经验教训 10 需求越好,风险越渺 ……………………………………………………………………34
粒度尺寸 …………………………………………………………………………………………………….35
多少算够 …………………………………………………………………………………………………….35
经验教训 11 不是仅收集就完事了…………………………………………………………………….36
收集 vs 启发 ………………………………………………………………………………………………..36
何时启发需求 ……………………………………………………………………………………………..37
启发上下文 …………………………………………………………………………………………………37
启发技术 …………………………………………………………………………………………………….37
奠定基础 …………………………………………………………………………………………………….39
经验教训 12 客户的嘴,多听不亏 ……………………………………………………………………39
沟通途径 …………………………………………………………………………………………………….39
产品拥趸 …………………………………………………………………………………………………….40
其他需求沟通途径 ………………………………………………………………………………………41
缩小隔阂的桥梁 ………………………………………………………………………………………….42
经验教训 13 天眼不通,他心不通 ……………………………………………………………………42
来猜一下 ……

