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

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

2015-05-29 16:41

第一章编程的精益
作者将《列子·汤问篇》中的《愚公移山》与软件工程巧妙的结合起 来,通过分析证明其实在两千多年前的愚公除了在移山的过程中担任 “项目组织者,团队经理,编程人员等众多角色”,还已经具备了编 程人员的基本素质。

《愚公移山》            
                   项目管理

惩山北之塞,出入之迂          
           
项目原始需求的产生

聚室而谋曰            
                   
  项目沟通的基本方式

毕力平险,指通豫南,达于汉阴        
    项目的目标

扣石垦壤,箕备运于渤海之尾          
     技术实现方案

(愚公)率子孙荷担者三夫                  项目组成员(工程管理者1名,技术人员3名)

邻人京城氏之孀妻,

有遗男,始龀,跳往助之          
        项目外协人员

面对河曲智叟对于移山工程可行性的质疑,愚公豪迈的宣称“虽我之 死,有子存焉。子又生孙,孙又生子;·······子子孙孙,无 穷匮也”。书中对这句话是这样进行评价的,前面一句“描述了可能 存在的分支结构,即IF条件判断”,后面一句则“描述了完成这个工 程所必需的循环结构”。由于“山不加增”,所以条件“山平”将 成立(何苦而不平),所以不会是一个死循环。愚公作为“优秀的程 序分析师”,论证了该工程实施的可行性。

以上内容让我们看到了编程的根本:顺序、分支和循环,移山这样庞 大的工程都可以通过简单的编程来实现,这就是编程的精义,也是该 书自始至终所强调的重点。

第二章 是懒人造就了方法

前面的一章中,愚公在作者笔下完全成为了一个全能选手,只要他能 想到,就没有他不能办成的事情。在第二章里,作者却将愚公请下了 神坛,认为战国时期的李冰(主持了著名的都江堰工程的实施)在移 山过程所表现出来的“偷懒功夫”更加值得提倡。李冰在成都担任太 守期间,使用“积薪烧之”的方法将一座山给凿平了。愚公移山贵在 锲而不舍的坚持,而李冰凿山则是贵在采用了新的“方法”可以说是 “懒人的方法”很快的解决了问题。回顾一下人类发展史,从某种意 义上说是那些“懒人”推动了历史前进的车轮。“懒人”不喜欢自己 洗衣服,就发明了洗衣机;“懒人”嫌走路太累,就发明了汽车。

前天和几个朋友一起吃饭聊天,其中一位朋友讲了一个“肥皂盒的故 事”,感觉其中也包含了“懒人的方法”。有两家肥皂生产厂家,由 于设备都是同型号的,所以都存在有包装时可能漏包肥皂的问题。A 厂家于是聘请了某大学教授带领的研发团队对这个问题进行攻关,期 望能最大限度的减少肥皂盒空填的概率。该研发团队使用了世界上最 高精尖的技术(如红外探测、激光照射等),在花去了30万美金和大 半年的时间后终于完成了肥皂盒检测系统,将肥皂盒空填率有效降低 至5%以内。A厂家的老板自我感觉这套系统很牛逼,就找了个机会跑 到B厂家那里去炫耀。B厂家的人听完他的一番侃侃而谈之后,就把他 领到B厂的肥皂生产线去。A厂家的老板进去一看就立即傻眼了,只见 每条生产线的末端都配有一台电风扇对着生产线吹风,那些没有装填 肥皂的肥皂盒都被风吹下去了。这个故事同样告诉我们,做事情是要 讲究“方法”的。

再回到这本书的内容上来,早期的程序员都习惯于将所有代码都写到 一个文件中,即使是一百万行的代码。在存在多种限制的情况下,把 所有代码都写在一起是合情合理的。但到后来,明明能分开存储的代 码却还要写道一个文件里,甚至还作为炫耀的资本就是不智的表现了 。那些“懒人”程序员创造了“单(Unit)”和“模块(Module) ”的概念,结构化编程的时代开始了。

第三章团队缺乏的不只是管理

做管理骑马需要能承担责任,这是最基本的素质。三人团队中的那个 领导,不是要程咬金一样的牛人,而是要李离一样的死士。项目完成 不了,切脑袋的事倒不必做,递交辞呈的那点勇气总是要有的。

从管理角度来看,项目失败与否与项目经理的经验直接相关。项目的成功是两个方面的评估:1、项目完成质量2、项目完成时间

经验丰富的工程师能尽可能接近地预估工期,但没有办法保障(预估 的)工期是绝对合理的项目经理是需要时间来成熟的。他需要有机会来承受错误,而不是一 开始就享受成功。组织模式确定的同时,相应的制度也有随之建立。在任何错误被归咎于员工之前,管理者应该先想想是不是自己的问题 。

如果有一群开发人员象蚂蚁一样辛勒地工作着,那么,先不要打扰他 们。你应该跟随他们,看看他们是如何做的。发现规律,分析这个规 律的价值,最后再尝试改变它们(的一些负面价值的规律)。能力可以通过学习来增强,而角色的转换,则首先是思想的转换。

第四章流于形式的沟通

项目经理有这样的一种优势:他可以不用了解C语言,也可以用一种 非C的语言来与客户交流(比如说汉语)。我们需要在正常人与盲人之间建立一种沟通的方式既然盲人不能睁 开眼睛,那么你就闭上眼睛好了。

要深入项目的需求阶段的项目经理或者调研人员,被要求深谙项目所涉的业务。你要确认你的沟通方式是否有效,而不是去追求这种方式是不是UML ,以及用UML表达得是否正确。

客户是因为他认为你理解了他们的需求,而在“需求确认书”上签字,而不是因为你的UML画得是否精准。

保障每一次沟通的有效性都是最重要的事。沟通不是打电话或者请 客户吃饭那么简单的事。你得到的每一次沟通机会,都是向客户了解更深层次的需求的机会,因此最好在见到客户之前,你就已经设计了所有的问题和提问方式。

大多数的工具都有历史记录的功能。在开发工具和测试工具中尤为突出。流于形式的沟通,可能是使得你的项目被不断推翻和不断延迟的最直接原因。

时间: 2024-10-12 08:14:24

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

梦断代码阅读笔记有感之二

08梦断代码阅读笔记有感之二 在梦断代码的一开始我们就学会了如何去写代码,如何成功的去做一个软件工程师. 在现在人的严重,也许软件工程师写出的代码只是让人在玩游戏,在用一些简单的用代码写出的软件.只是认为工程师在不断地重复着一个动作:写代码.但我只能说你们大错特错,就像在文章中说的那样,其实软件工程师是在:“改变世界”,他们利用他们的手用键盘在电脑上打出一行一行的代码,程序产生了,一个新的软件也就产生了.而且,众所周知的,工程师做一个软件,总是在无限制的更新他的内容,让我们的软件更加的先进化,就

梦断代码阅读笔记有感之三

09梦断代码阅读笔记之三 这是最后一篇的阅读笔记,我发现时间真的过的好快好快. 想想以前,我们总是在应付一切的差事,但是真正的到最后,我们才发现,到最后吃亏的还是我们自己. 从前的我们,我们总是对自己大脑中的东西一片一片的特别的混乱.其实我们就像作者所说的,我们就像放任胡乱的cd随地的乱放,到最后不知道哪是哪.我们应该学会分类去放置,例如:我们可以根据歌唱者的名字,音乐的类型等等,其实这些东西对于我们写代码也同样的试用,刚开始的上大一时候,我们第一次的学习C++,我们只是随时随地的在写代码,并不

梦断代码阅读笔记之一

最近阅读了罗森伯格的<梦断代码>,算是近距离观察了十几年前软件开发的状态.这本书是作者对OSAF主持的Chandler项目进行田野调查  而写的一本书.本书是在讲一事,也是在讲百千事:是写一软件,也是在写千百软件.在描述Chandler项目的过程当中亦提出了很多观点,带给我们很多思考.让我们这些软件工程专业的学生对软件开发有了一个更深层次的认知. 在本书第一章,作者为我们介绍了一个布鲁克斯法则:"往已延误的项目里补充人力,只会使其继续延误". 布鲁克斯曾是IBM的资深程序经

&lt;&lt;梦断代码&gt;&gt;阅读笔记一

没有想象中的枯燥,甚至有些有趣.这就是我对<梦断代码>这一本书的第一印象.而且,作为一本面向程序员的书籍,作者很有意义地从第0章开始,那我也从第0章开始说.这第一次读书笔记是针对0~2 章的. 首先,作者一开始就向我们介绍了程序员的真实生活:代码.日期.紧张.焦虑.这是我从书中体会出来代表程序员的词 语.我第一次感到编程可能是一件辛苦的事,回想自己编程的时候,只是歇一歇简单的短的程序,没有压力,没有焦虑,但是在真正的公司.项目中,程序员要面对的是茫茫代码以及对未来的未知,因为没有人能确定自己从

&lt;&lt;梦断代码&gt;&gt;阅读笔记三

看完了这最后三分之一的<梦断代码>,意味着这本软件行业的著作已经被我粗略地过了一遍. 在这最后三分之一的内容中,我深入了解了在大型软件项目的运作过程中存在的困难和艰辛.一个大型软件项目的成功代表着这团队所付出的所有心血,以及那不为 人知的无数个‘人月’.而联想自己的专业,产生了一点迷惘,这就是我今后要走的道路么,我能走得多远,我能否像书中所提到的那些人一样百折不挠,这一切我 都无从得知.但是我只能向前走,别无选择,没有人会承认自己不如别人,哪怕现在不如,但总会寄托于未来,未来是未知的,但又是现

梦断代码阅读笔记二(4-7章)

在上一周<梦断代码>读完了第七章,全书已经过半,对于这本书有了更深的体会,对于软件开发之难也更加理解.      乐高王国一章中引出了一个代码世界或者说程序员世界里的美好设想——程序将由可复用的部件组合而成,软件部件将在全球范围内提供,软件工程将从编程的窠臼中解放出来.软件组件就像乐高积木一样,细小.不能再分.可被替代.可以自由组合.这是代码复用的概念,这会省去编写代码的麻烦,但是也存在不少问题,诸如大型可复用组件的稀少,有些程序员不愿拾人牙慧等等.其实我认为这是一个不错的设想,也是一个值得努

01梦断代码阅读笔记之一

在看完构建之法之后,我又开始了梦断代码的阅读. 在梦断代码的第0章就写作者从15岁的玩游戏,但是对于当时的他来说,并不是在沉迷于游戏,而是为了做到打补丁.使得自己的少年的梦想得到浇筑.其实他的做法正应该体现在我们现在学习软件人的身上,我们现在就应该学会怎样的去做自己的梦想,更重要的是练习自己对于软件的好奇心以及热爱,在作者40岁的时候,我们体现的又是另一种的感觉,其实他们和我们没有差别,就像我们在做一个软件的时候,我们在到达最后的期限的时候,其实在哪个时候我们才发现我们什么都没有做出来,问自己为

梦断代码阅读笔记01

大致浏览了一下<梦断代码>这本书,觉得还是挺感兴趣的.第一章软件时间,作者以一名程序员的身份自述,故事性很强,读起来不会感觉枯燥.在第一章中作者认为程序员与其他人的不同之处在于他们从一开始,而我们从零开始,想来也正是如此,他谈了软件的发展历程以及过程中好多伟大的研究者为其发展而做的贡献,这个行业也是很多前辈付出了诸多努力才推出来的,所以需要我们付出更多的努力去发展他. 第二章中作者讲到我们做任务需要蓝图,也就是需要有计划,提前计划好,按计划来做任务,这样对于碰到一些问题才不至于举手无措,另外在

梦断代码阅读笔记二

今天看了<梦断代码>的第2章-Agenda之魂,刚开始看时不知道Agenda是什么东西,看完之后才知道是什么东东,这里先不做解释,下面会详细介绍到.说到Agenda,就必须提一下米奇·卡普尔这个人,卡普尔曾被冠以“反盖茨”的名号,由于他不喜欢使用Exchange,但当时小型组织的日程管理没有其他方案可选,但是用Exchange的代价不低,你得购置一台服务器,购买Windows许可,购买Exchange软件许可,如果没有全职技术人员,还得雇个咨询师.可能基于这个背景的情况下,卡普尔大胆押宝,创建

梦断代码阅读笔记一。

梦断代码有第零章.其表达了软件是人类文明的延续,我也认同这种看法.确实如作者所说,人类没有Microsoft Windows文明也会延续下去.但没有软件,人们的工作效率就会很低.就像我所想的那样,多少年以后,很多公共设施和家庭设备都会是智能的,甚至可以和手机“交流”.作者还表达了身为程序员的一种可悲,我感同身受.生命中省下的好日子,都会耗费在给自己的程序找错误的时间上. 我们确实“死定了”,如果继续把自己程序的错误找下去,不说这辈子,这学期肯定是不够的.从表面上看来,这个错误看起来很简单,用两三