《简单之美——软件开发实践者的思考》电子书.pdf

所需积分/C币:10 2013-05-06 20:46:13 6.76MB PDF
7
收藏 收藏
举报

可操作性强、讲述了作者在软件开发中的思考和体验,注重思想和方法
内容简介: 木书不是一木关于方法论的理论性书籍(尽管凵经尝试在大量的思考上进行一些理论归纳), 也不是一本关于具体技术的操作于册。本书为读者呈现的是作者在软件开发实践中的思考 和体验,目的在于探究实践中的问题的根源,并给出思想上的解决之道。 本书以软件开发的基本顺序为主线,以简单、想象和文化的开发思想为线索,以为软件开发 实践提供指导价值为目标。本书力图做到传递经过组织的、可操作的软件开发经验,使软件 廾发领域的新手在知识(软件廾发思想)积累过程中少走弯路,也使软件廾发领域的老手叮 以对照自己的经验把可能的闲惑降到最低。有一些有趣例子为那些有价值的思考提供支持。 夲书中,作者尝试对简单、想象和文化做一些形而上的思考。这些思考会比较抽象,但却是 很多话题的基础 作者简介: 倪健,资深软件工程师、项目经理和架构师,拥有年行业从业经验。从事过电气设计 与装配、单片柷开发、软件系统设计与开发、项目管理、软件架构、软件垶训以及性能调优 相关的⊥作。精通汇编语言、、 和,自主设计过些框架。年的上作经验 帮助他建立了一个完整的认识世界的思想体系,这个体系的核心内容就是简单、想象和文 化。他擅长想象,善于归纳,内心坚持,追求有意义的生活。 倪健技术博客地址 本书目录 场景故事人物关系图 本书赞誉 前 为什么写本书 本书面向的读者 如何阅读本书 第章无极生太极 创造的根源 本质的把握 简单的追求 第章关于软件开发方法论的思考 方法论的实践场景 的精髓 过程定义 成熟之路 敏捷软件廾发的精髓 人与实践 海岸灯塔 最好的软件开发方法 中庸 聚焦 方法论的执行 关于执行 约束与习惯 章关于需求的思考 需求的实践场景 需求开发 准确表达 信息传递 需求管理 变化之道 应对之道 第章关于软件架构设计的思考 架构设计的实践场景 软件架构的本质 软件架构的设计 业界技术成果 软件框架 隐喻的价值 架构模式 软件架构师的素质 第章关」软件实现的思考 软件实现的实践场景 模型的设计 领域模型 计算模型 软件廾发 写给新手 掌握编程 负责制度 软件决策 质量保证 第章关于软件测试的思考 软件测试的实践场景 软件测试的本质 破坏的意义 软件测试的第·个原则:聚焦 软件测试的第二个原则:积累 软件测试的第三个原则:自动化 软件测试的第四个原则:日标一致 个典型的破坏:性能测试 其他 第章关于团队的思考 团队的实践场景 湘江战役 闭队建设 思想准各 如何组建团队 现实与理想 团队管理 论人 稳定的价值 团队文化 第章关于项目管理的思考 项目管理的实践场景 项目管理的本质 关于项目经理 计划的本质 风险的问题 管理的境界 第章关于软件维护的思考 软件维护的实践场景 软件维护的本质 组件化开发 版本依赖 妥协的方案 第章关于组织发展的思考 组织发展的实践场景 知识积累 行业成熟 知识资产 前言 为什么写本书 年前夏H的一天,我正在宿舍里看一本关于祥宗的。一位朋友走过来,他注意到 了书的封面,然后好奇地问我禅宗是什么。当时我也说不清楚,只是觉得禅宗很像哐心主义 者的一道逻辑题。 禅宗的心髓是悟,在禅宗思想推广的历史上,有很多具体生动的故事阐释了这个概念。 最有名的是六祖慧能的偈伺:菩提本无树,明镜亦非台。本来无一物,何处惹尘埃?。本 来无一物说眀了慧能在泂悉事物本质上的境界(后来这首诗的境界又被超越了)。 禅宗的历史就是种种境界被建立和被超越的过程。为了达到无法超越的最高境界,参禅 者们发明了杋锋公案、棒喝直指、扬眉瞬目、拳打脚晹、斩蛇杀猫这样一些辅助手段,这些 手段可以让人快速通过量变到质变的一刹那(没有可以解释的过程),直达内心顿悟。进入 顿悟状态后,所有语言、文字和思想都成了阻碍 唯一例外的词想入非非可以作为那种境界的缩影。想入非非的意思是说,那种 至高无上的境界不是我们头脑中可以想到的,因为可以想到是·种阻碍;也不是我们头脑中 无法想到的,因为无法想到是指除了可以想刭之外的。非非,表示否定了否定,这里的双重 否定不代表肯定。想入非非,把没有边界的思想通过一种特殊的方式表达了出米。 在这些年的软件廾发生溎中,禅宗那种积极反思、不断追求完美境界的精神一直影响着 我。凭着这种精神,我把软件开发变成了乐趣。有两个原因使这种转变成为可能:第一,我 把想象力和创造力结合了起来:第二,我的软件开发思想已经比较成熟和完整了。这两点很 貢要。想象力和创造力的运用使人的精神得到了满足,而软件开发思想则使任何事情在开始 之前都有了一个合理的解释。合理与满足会给你带来乐趣。 我写木书的主要目的也有两个:第一,回顾自凵的软件廾发生淮;第二,与读者朋友们 分享我自己的体验和感受。我希望在你阅读完本书后,可以发现如何品尝软件开发的乐趣, 如何从千头万绪变得线索明朗,如何从复杂世界进入简单世界 我还想在本书中表达以下几个观点。 首先,思想是解决一切问题(包括软件开发中的问题)的根本。 在《 》的中文版序言中表达了一个思想, 即软件是美的(我喜欢阅读序言,因为那里通常是和作者心灵最接近的地方)。而我想表达 的思想是,在你熟悉的软件开发领域,软件不仅是关的,还是简单的。领悟到软件开发中的 简单之关是解决软件开发问题的钉匙。在我看来,思想是一和呕定不移的信仰,并且是在经 过了足够的实践检验后形成的。在软件开发过程中,稳定的思想会使所有的力量汇聚到一个 有效的方向 其次,思想是一盏明灯,但有时也会成为一种桎梏。像参禅者一样不断追求完美的境界, 使思想成为你自己不断成长的体验。 最后,思想必狈转换成习惯。我不是个真正意义上的实用主义者(本质上是个追求内驱 力的理想主义者),但是在实践中运用思想比停留在思考层面显然更有乐趣 总之,构建套完整的思想体系是软件开发能力成熟的标志。只有思想成熟,才会使你 的一言一行、举于投足、细节决策等在复杂的实践中收放自如 软件开发思想的成熟,还需要操作层面上的大力支持。我们不妨以方法论为例来看看软 件开发中的问题 很多软件开发人员在实碳中经常处于一种混乱状态。所谓混乱状态,就是当岀现问题的 时候没有人知道怎么做才算最好,或者人们之间缺乏足够的信任和共识,或者大家不断地讨 论却得不到满意的解决方案 对于软件开发老于而言,经验是帮助他们保持清醒走出混乱状态的安全绳。可是,要 想依靠经验来持续地造福·个团队就比较难 事实上,造成混乱状态的原因有很多。本书中的所有内容都是在尝试从各个层面来谈论 这个话题。如果单从方法论的层面来看主要有两个原因。 首先,没有操作性强的方法论的指导 软件开发者的很多工作和努丿都基于个人经验的积累。即便某些经验丰富的软件开发者 掌握了·些必要的方法论知识,也不能在组织范围內有意识地推广,从而成为有实用价值的 共享体验。 其次,有经验的软件开发者获取知识和使用知识的方法无法系统地传递给软件开发新 无法传递知识,会使新手们在软件开发领域的成长起点变得很低。在这种情况下,软件 开发项目的成功通常依赖于个人英雄主义、人海疲劳战和运气 当你经常对软件开发中的某些现象,如无休止地加班、返工、资源紧张等产生迷惘时 应该停下来认真思考;当你认真思考后仍然没有明确的解决之道,不妨看看别人的想法 好,还是看看本书里写了些什么吧。 本书不是一本关于方法论的理论性书籍(尽管我已经尝试在人量的思考上进行一些理论 归纳),也不是一本关于具体技术的操作手册。本书为读者呈现的是我在软件开发实践中的 思考和体验,目的在」探究实践中的问题的根源,并给出思想上的解决之道。 本书以软件开发的基本顺序为主线,以简单、想象和文化的开发思想为线索,以为软件 开发实践提供指导价值为目标。本书力图做到传递经过组织的、可操作的软件开发经验,使 软件开发领域的新于减少知识(软件开发思想)积累中的弯路,也使软件开发领域的老手可 以对照自己的经验把可能的困惑降到最低。有一些例子为那些有趣的思考提供支持。 在木书中,我会尝试对简单、想象和文化做一些形而上的思考。这些思考会比较抽象, 但却是很多话题的基础 本书面向的读者 每个人的生都在获取知识。有些知识来自于被动接受,有些知识来自于主动学习。知 识有不同的类型,而学习知识又有不同的方法 显然,本书也会提供一些知识。 在推荐谁应该阅读本书之前,了解本书提供的知识类犁是很有用的。同时,在获取知识 之前对知识本身进行一些思考也有助于学习效率的提升。很多领域内的行家都善于此道。 目标简单、稳定 闱绕目标思考和行动(持续不断地收集历史资料) 享受内心自由乐趣,不盲从权威; 经过特训的大脑,善于知识归类和检索。 他一生都在阐述一个论题,论据的丰富程度达到人生的极限。你可以从主观出发不赞同 他的思想,但是却无法对抗那些论据。 李敖是一位历史学家,他所学习的知识类型与软件行业不同。事实上,即便在软件行业 内鄙,知识也有不同的类型。知识类型的不同,决定了学习方法的不同,最终对人的能力和 培养提出不同的要求。 下表列出了软件开发中各种工作类型的要求。所有的定义都是非充分性的和非全面性 的。它们表达出了我个人的一些偏亘。关注这些偏重,对于实现我们最终的目标(成熟的软 件廾发能力)是有意义的 工作类型 知识类型 能力及培养 需求获取与分析说明型 理解能力和归纳能力 软件设计 创造型想象 能力和创造能力 软件实现 逻辑型 抽象能力和探索能力 项目管理 情感型 沟通能丿和服务精神 软件决策 综合型 构建系统思想的能力 在后续的章节中,读者可以体会到这些定义形成的思路。如果仔细阋读,你还会发现 有很多的文字都在间接地解释这些能力在软件廾发中应该是怎样的,以及为什么有助」 软件开发工作。 本书提供的知识类型与上表中的知识类型有千丝万缕的联系。但是,本质上又不同于其 中的任何一项。相较于务实的软件开发工作,本书提供的知识更接近于虚。所以,我把本书 提供的知识类型称作思想型。 当你追溯切问题的根源吋,哲学总是追溯的源头。而当你从事软件丌发上作时,当你 面对软件开发中的迷惘和失败时,当你寻求解决问题的途径时,你也许会在追溯的过稈中用 到本书提供的知识 所以,木书的读者,主要是那些在实际工作中陷入迷悄或存在困惑的软件廾发者、管理 者和企业经营者。 对于软件开发者来说,他们已经有了·定的软件开发技能,但是还没有或很少有成功的 软件开发经历;他们对于软件开发工作存在着抱怨,有一些模糊的或零星的改革想法:他们 热爱软件开发工作,但是感觉工作缺少乐趣;他们希望有一个明确的方向、一段可以借鉴的 经历、一个行之有效的方法和一种超越以往的境界。 对于管理者和企业经营者来说,他们不满组织生产能力的现状,他们有着变革的决心, 对于不成熟的软件开发能力带来的成本也有着切肤之痛,但是对于如何构建个合理有效的 软件开发环境没有思路。 本书主要是为以上三种人准备的。 遗憾的是,世上不存在可以供你直达目标的操作手册。每个人实现目标的方式都是不同 的。除了最后一步的领悟之外,有效信息收集和经验积累是必需的基础 什么样的信息是有效的呢? 简洁明确的思想表述; 层次清晰的分类信息; 令人信服的论证过程。 我一直在努力尝试,希望能为读者提供这样的有效信息。 屴外,本书是我的经验之谈和人生体骏。我的想法是,也许本书会让你产生共鸣,也许 不会。但是有一点我可以许诺,本书的内容是前面表述的各和想法的实现,是独特和真实 就软件开发而言,我根本不顾忌什么,没有任何让我盲从的权威。本书中所有的想法都 是自己的真实体验,借鉴米的想法也都经过了自己的咀嚼。 本书中的所有内容基本上都以思想讨论为主,伴之一些验证有效的技术实践。思想讨论 的内容往往会超出专业和行业的范畴,所以我期望有更多的人来参与这种形式的思想交流。 总而言之,如果你乐意,你可以阅读本书 如何阅读本书 对于读者而言,没有什么比知道如何阅读一本书更重要的了。很多书都是有价值的,从 书店中得到它只是第一步。如果不清楚如何阅读这本书最有效,书的价值就不会轻易地转移 钊读者身上。这一小节将会告诉你如何阅读木书 可以想象,得到一本书时,有些读者因为欠缺领域经验而需要点拨,有些读者由于相同 的体验而产生共鸣,有些读者可以站在更高的层次上对书的内容进行批判。无论哪类的读 者,都期望快速清晰地获待作者的写作思路。 从作者的角度,最诚实的做法就是直白的交流。我认同一种精神,全力表明自己的想法, 直到某些读者可以清楚地认识到自u是反对这种想法为止。当然,我也相信另外一些读者会 赞同它。基于这种精神,本书中所有问题的表述都是断言式的,不留有仟何引申和狡辩的空 间 本书中大多数章节的第一部分是实饯场景,场景中包含了虚杓的情节和虚构的人物。你 可以把这些场景单独挑选出来,当作一篇描写软件开发者生活的文学作品。你也可以忽略这 些场景,这不会影响你取本书中的知识。 场景是一个理想中的美好故事,它不能传递明确的知识信息。写作这个场景故事的主要 目的,是想说明现实中的软件开发活动比本书中涉及的讨论要复杂和生动得多。例如,一个 人的些许想法可能会给软件廾发带来极大的影响。我不是一个不可知论者,即使在复杂多变 的现实场景中,简单的原则同样能产生有效的影响。 我直在考虑个问题 业界有很多流行的方法论,也有很多大师的软件开发思想,可是在实践中,好像还是有 很多组织找不到方向。比方说,敏捷开发,我真的没有看到多少成功的案例。我知道的是, 大家在不断地缩减,不断地提升 评估的时间,从而来适应传统的管理方式 我也听到很多管理者在议论哪种方法论是最好的,好像实施了某种方法论就可以解决所有的 问题,可是问题仍然在那里没有变,只是换了个形式。 所以我想,问题的棖源也许不在这里。我觉得,无论方法论也好,管理理论也好,都是 技术层面的。这些技术层面的东西来自于很多大师长期的总结和提炼,本身是非常好的,但 是它们有复杂的上下文,例如在敏捷开发中没有提到或者强调的注重个体文化、专业化 思想以及多元化价值认同等。所以,一旦割裂上下文,机槭来运用这些方法论,效果就总是 不好。 在本书中,我想从实践者的角度来强调这一点,通过强调软件开发思想和文化来尝试连 接实践和方法论 场景故事也是在这个想法上产生的,我很想反映现实的复杂性,在这种复杂性场景中, 读者可以发现自己熟悉的人和事,我希望可以产牛共鸣。然后,我想推荐用简单的思想和一 些文化反思米应对它,至于效果如何,那肯定是仁者见仁智者见智了。 在大多数章节场景故事之后的第二部分,我会首先列出作者写作本章节的中心思想。这 些中心思想是断言式的、概括式的。读者需要通过阅读本章节后续展开论述的内容来了解中 心思想的具体含义 本书想要传递的思想是,用简单的原灲、富于想象旳精神、文化的视角来认识软件开发。 请在阅读时始终关注这个核心思想。 我的 地址是: ,欢迎读者朋友的来信。

...展开详情
试读 56P 《简单之美——软件开发实践者的思考》电子书.pdf
立即下载 低至0.43元/次 身份认证VIP会员低至7折
一个资源只可评论一次,评论内容不能少于5个字
kczzr 好书,多谢分享
2013-10-07
回复
您会向同学/朋友/同事推荐我们的CSDN下载吗?
谢谢参与!您的真实评价是我们改进的动力~
关注 私信
上传资源赚积分or赚钱
    最新推荐
    《简单之美——软件开发实践者的思考》电子书.pdf 10积分/C币 立即下载
    1/56
    《简单之美——软件开发实践者的思考》电子书.pdf第1页
    《简单之美——软件开发实践者的思考》电子书.pdf第2页
    《简单之美——软件开发实践者的思考》电子书.pdf第3页
    《简单之美——软件开发实践者的思考》电子书.pdf第4页
    《简单之美——软件开发实践者的思考》电子书.pdf第5页
    《简单之美——软件开发实践者的思考》电子书.pdf第6页
    《简单之美——软件开发实践者的思考》电子书.pdf第7页
    《简单之美——软件开发实践者的思考》电子书.pdf第8页
    《简单之美——软件开发实践者的思考》电子书.pdf第9页
    《简单之美——软件开发实践者的思考》电子书.pdf第10页
    《简单之美——软件开发实践者的思考》电子书.pdf第11页
    《简单之美——软件开发实践者的思考》电子书.pdf第12页

    试读结束, 可继续读5页

    10积分/C币 立即下载 >