大道至简——软件工程实践者的思想读书笔记三

第六章 谁是解结的人

在一个模式化的公司里,体制上最大的敌人其实是模式本身。

在通常情况下,一个团队的特质是管理者在团队生活和行为过程中逐渐形成的。

成功的经验往往最不可信,因为一方面,成功者沉醉于成功的喜悦,并急于与人分享快乐与荣誉,而不关注这些成功的前提与背景。另一方面,听取这些经验的人则因为那些“既有的成功”而丧失了应有的警惕。

经验,是源于对过去的思考,而不是对过去的复制。

只有提出质疑,才能换个角度去看到那些成功经验所依赖的背景,也才能看到某些成功背后的偶然或者关联的因素。

你的团队无论如何都需要有一个远期的目标。

远景更多地侧重于方向性的描述,而阶段性目标的确也是必须的,原因:

  明确阶段性目标以便于团队实施和检测
  细化的设定目标更加灵活,便于修正
  阶段性成功能充分激励团队的士气

项目经理的主体工作是:协调,督促,激励,监督,凝聚。

应该让团队每一个人清楚:“我”必须跑到终点,否则“团队”到不了终点。这是每个个体的责任,没有人可以替代——这是培养责任心和树立价值观的事。

培养一个人最怕的是“教而不习”,你教他,他要么不学,要么不用,但是事情的真相,不见得是这个人“懒”到不学习,而是你过于勤快,让他失去了“习”的机会。所谓学习,就是让他在过程中看到问题,并了解到解决问题的方法,最后加以解决。

于一个人而言,“成功”的激励远大于其他。

过于强调个人能力,会助长团队的惰性。团队管理是促进整体行进的过程。

管理者的责任也包括“监督,发现问题并防止扩散”。因而要主动给自己留下时间和空间来发现问题,在问题出现之前定位它、分析它,并组织人力去解决它,而不是:

  等问题出现后再冲到前面
  然后在还没有清楚地意识到问题的根源时就试图解决它
  最后刚解决了表面问题或者侧面问题,又发现更多的问题挡在前面
  最后之最后,你垮掉,团队也垮掉

即使你什么也不做,也比整队人都停下来要强得多。

学会否定矛盾、消化矛盾,看到矛盾产生的内因、外因,转而借之用之,才是解脱的方法。

第七章 从编程到工程

语言只是工具。

从角色的角度上来说,开发经理思考项目的实施方案和管理具体的开发行为,而项目经理则保障团队的稳定性和一致性。

经验来源于回顾、理解和分析,而不是你将要写的下一行代码。

过程说的是很多人(团队)如何组织在一起进行开发的问题。它首先把工程中的环节分解出来。这样,有了环节,就有了角色,有了角色,就有了沟通。因此,过程中的问题就是角色、沟通和环节的问题。哪些环节重要,取决于具体的编程行为,也就是具体的项目。

角色的确定,以及角色间的沟通问题,在项目过程中也同样重要。工程组织是否合理,相互协作是否紧密,是这个项目能否成功的保障。

项目的“复杂”可能要求不同知识领域的角色参与,而“庞大”则要求更多的(人、技术与管理)资源。“团队”作为开发行为的模式,是软件规模和复杂度渐次累积的结果。

团队必将越来越庞大,因为(与工程对应的)软件必将越来越复杂。没有团队意识的软件公司在高度过程化、通晓方法论、拥有大量工具的集团军面前,必将一触即溃。

你必须更关注于对这个(或这些)工程的组织与计划。站在“组织者”这个角色上,你现在要考虑的内容可能会是:

  为项目的各个阶段建立计划、并逐渐地细化计划的内容,以及确立项目过程中每一个环节,每一个计划阶段的优先级和复杂度。
  确立项目或者产品阶段目标,成果的准确描述、定位,以及整个项目的质量目标及其评核办法。
  对团队中的不同角色开展培训,以指导并协调角色间的工作,从而消除因为工作习惯的差异带来的影响。
  为每一个人准备他所需要的资源,准确地评估他的工作量,以及决定是否为他增加一个副手。
  决定在哪些环节上反复审核和回顾,而在哪些环节上采用较为宽松的方式以加快进度。
  习惯于开会、组织更短而有效的会议,以及建立激励机制,当然也不要忘记让每一个成员意识到这一项目的风险。
  不要乐观。

好的项目经理并不是不犯错误的人,而是以尽可能少的失败来获得成功的那个人。

回顾每一个项目,或者项目中的每一个阶段,以及与每一个团队成员交流的细节,是你的日常工作。

经营者决定了一个方向,组织者保证决策与这个方向是同步的,而工程是在这样的一个方向、决策的架构下的一个具体行为。

第八章 你看得到工具的本质吗?

工具之于工程,本质在于关注并发挥有益于工程全局的那些特性。

不同的工程角色确实应当有他自己的关注点。这个角色能考虑到别人想不到的问题,固然不错,但如果他恪尽职守,只关注自己的那一部分,也是本分。

一项技术是以完成工程需求为目标的,而不是以彰显个人技术为目标的。

技术容不得取巧,只能点滴累积。“静下心来做代码”是开发人员的良好品质。作为开发人员,我们不应当妄自菲薄,作为管理人员,我们更应该善而用之。

“写代码”并不是解决问题的唯一方式。融通是以一通十,有运用变化的能力。融同,是知工具之大同,信手而得,随心而用。

工程实践中,用或者不用某个工具,仅取决于工程本身的需要,而不取决于喜好,也不取决于现实中的大公司与外来布道者的鼓吹。

于某时某事,适用的就是最好的。前提是你要有看明白这些工具实质的能力。只要能够分辨出所需要的部分并适度地用在你的工程中,就可以了。

识见到工具“设计”所满足的那些“确定的需求”,进而明确工具与项目的关系,才是解脱之法。

时间: 2024-07-30 13:37:35

大道至简——软件工程实践者的思想读书笔记三的相关文章

大道至简——软件工程实践者的思想读书笔记四

第九章 现实中的软件工程 理想状况下,软件工程=过程+方法+工具.然而工程成功的真正关键,并不在于你把你的团队“组织”得多好.即使在团队中他们都表现得有条不紊,你一样会面临失败. 愚公如果停下来,思考的问题可能是碎石的方法,而项目经理从细节中跳出来,思考的问题就应当是完成工程的方法.评价这个方法的好坏的标准只有一个:节约成本. 不计成本的项目计划不会得到经营者的支持,毫无目的地消耗成本是项目中的慢性毒药,最致命的风险是成本的枯竭. 我经常注意到的成本因素包括时间.人力.资金和客户成本.而大多数情

大道至简——软件工程实践者的思想读书笔记一

第一章 编程的精义 愚公移山项目,原始需求的产生:“惩山北之塞,出入之迂” 项目沟通基本方式:“聚室而谋曰” 项目目标: “毕力平险,指通豫南,达于汉阴” 可行方案:“扣石垦壤,箕畚运于渤海之尾” 项目中有三名技术人员和一名工程管理人员: “(愚公)率子孙荷担者三夫” 外加一名力量较弱但满腹激情的外协: “邻人京城氏之孀妻,有遗男, 始龀,跳往助之” 以上就是愚公移山整个工程的概况.接下来,愚公向智叟叙述了整个工程的编程实现: “虽我之死,有子存焉”——IF条件语句 “子又生孙,孙又有子……子子

大道至简——软件工程实践者的思想读书笔记二

第四章 流于形式的沟通 C语言是程序员与计算机交流的语言,而不是他与客户交流的语言,程序员面对的是计算机,但计算机不是客户.因此,开发人员最好不要直接面对客户.项目经理由这样一种优势: 他可以不用了解C语言,也可以用一种非C的语言来与客户交流. 要深入项目需求阶段的项目经理或者调研人员,被要求深谙项目所涉及的业务.但这往往是做不到的,因此惯常的做法是聘请行业咨询公司(或个人)来介入需求阶段,以协助了解和分析需求. 沟通时需要确认沟通方式的有效性,而不是追求这种方式是不是UML,以及用UML表达得

《大道至简---软件工程实践者的思想》阅读笔记二

08大道至简——软件工程实践者的思想阅读笔记之二 2015-06-02 16:41 第五章 失败的过程也是过程 以得失而论,在瀑布模型与RUP模型之间,学习前者而不成,可思过程的本质:学习后者而不成,可得文字的架子. 如果懂得了所谓的模型原本都演化自那个简单的瀑布,那么文档是按XP写还是按RUP写,也就可以应时.应需,因地置宜,择善而从了. 越是简单的东西,往往越是接近于本质. 项目经理的工作,就是要去组织这个工程中的各个角色,使得分工明确,步调一致,共同地完成这个项目. 第六章从编程到工程 我

《大道至简---软件工程实践者的思想》阅读笔记一

07大道至简——软件工程实践者的思想阅读笔记之一 2015-05-29 16:41 第一章编程的精益 作者将<列子·汤问篇>中的<愚公移山>与软件工程巧妙的结合起 来,通过分析证明其实在两千多年前的愚公除了在移山的过程中担任 “项目组织者,团队经理,编程人员等众多角色”,还已经具备了编 程人员的基本素质. <愚公移山>                                项目管理 惩山北之塞,出入之迂                       项目原始需求的

阅读《大道至简--软件工程实践者的思想》有感(3)

阅读完<大道至简--软件工程实践者的思想>,明白了软件与程序的区别,<战国策-秦策>中的那句话,“王不如远交而近攻,得寸,则王之寸:得尺,亦王 之尺也.”程序只是程序员与电脑之间的对话,而软件却是让程序员把用户与电脑连接到一起,作为桥接.程序不一定是用来卖的,但软件是用来卖的,所以软件包含了商业因素,而程序却没有. 做软件,达不到好.快.省三点.我们的项目,无经费可言,无充足的时间,所以总是图快.图省,然而这样做出来的项目,只能是应付老师,并不是真正的学会了什么东西.然而想要达到好

《大道至简--软件工程实践者的思想》读后感

<大道至简--软件工程实践者的思想>读后感       "工程其实很简单,只是大家把它做复杂了."或许,这就是作者周爱民想阐述给我们的软件工程的核心思想.       愚公移山,看似是一个庞大的工程.可既然山不加增,又何苦而不平?正如书中所说,除了先天智障或后天懒惰,任何人都是可以写程序的.在愚公身上就可以看到编程的基础,顺序.分支和循环,移山这等的工程都可以通过编程来简单实现,这便是编程的精义.       积极工作和勤于思考都要占时间,只要开发人员把这个程序的算法设计出

《梦断代码》、《你的灯亮着吗?》、《最后期限》、《大道至简——软件工程实践者的思想》的阅读计划

作为从事IT行业的必读枕边书目,没理由不拜读一下.以下是我的阅读计划,希望自己能认真执行,阅读自己慕名已久的书目. (每天的阅读时间晚上9点半以后,看一个小时的书籍) 一.<梦断代码>的阅读时间跨度(3月5号~~~4月4号) 随书笔记的发表时间:第一篇3月14号 第二篇3月21号 第三篇3月28号 二.<你的灯亮着吗?>的阅读时间跨度(4月5号~~~5月4号) 随书笔记的发表时间:第一篇4月14号 第二篇4月21号 第三篇4月28号 三.<最后期限>的阅读时间跨度(5月

《大道至简----软件工程实践者的思想》

愚公移山的故事想必大家都听过,而愚公移山的过程恰恰能够描述一个项目的实施和编程的精义.首先,要有对解决项目的兴趣和信心,我认同这句话:没有会不会,只有喜不喜欢.只要把自己投入其中,有自己的思考方式,就一定会有所成就.在实施过程中,从需求的产生到团队之间的交流,从技术方案的提出到程序具体的实现,一个项目就完成了.其中程序功能的实现则由简单的语法:顺序.循环.分支一点一点地拼凑而成,就像愚公说的:"虽我之死,有子存焉:子又生孙,孙又生子:子又有子,子又有孙.子子孙孙,无穷匮也(循环).而山不加增,何