《人月神话》读书笔记 PB16110698 第七周(~4.19)
每逢读书笔记上交作业时刻,班级blog页面上总能看到《人月神话》相关的读书笔记,本次软工课邓老师推荐的第一篇读书笔记也是写的《人月神话》,算是对它“耳濡目染”了。本周,我终于抽空读了这本书,感觉确实名不虚传。以下,我将从几方面谈谈我的感想。
一、焦油坑与银弹
书中将大型项目形象地比作焦油坑,开发者往往在巨大的项目里遇到纷繁复杂的问题,并在其中越陷越深,难以掌握全貌和本质。在我看来,软件的开发确实存在其固有问题,在一个开发团队开始挖坑时,由于思路的些许偏差、交流和认知水平的些许欠缺或分歧,都会为将来项目的混杂、纠结埋下伏笔。在本次结对作业和单人作业中,我仅仅写了数百行代码,就已经面临这样的“焦油坑”问题:陷于细节,难以掌握整体开发思路。在写某个具体功能的函数时,我时常需要上下拉动滑条,阅读之前写的更高层次或更低层次的函数,以尽量保证其功能符合预期。有时一疏忽,就会把已经在其他函数中实现的某功能在这一函数中添加,导致多次处理、结果血崩。而大型项目的开发中,代码量是我的简单工程的数千数万倍,通过浏览相关函数来保证不出bug显然是非常困难的,加上不同开发人员之间理解、思路的差异,隐含的问题就会越来越多,最终形成“焦油坑”。避免这样的焦油坑的办法,据我所知有单元测试以保障代码层面正确性、每日立会以保障成员交流协调等,总而言之,防患于未然,时刻警惕才能避免项目变成一团乱麻。
而银弹,则出自于另一个比喻:软件开发如同狼人,银弹便是解决狼人的杀手锏,能大大提高软件的开发效率。作者认为这样的银弹并不存在且未来一段时间内不会出现。而在我看来,作者在书中已经提供了很多种“弹”,虽然没有“银弹”那么行之有效,但也能极大地降低“狼人”的威胁。比如勤于交流、统一设计、编码规范等等。在结对作业中,我们定下的编码规范是默认VS自带的缩进风格与编码风格,大括号不换行,算是非常粗糙简陋的规范,但总比没有要好。交流方面,我们几乎每次编程都约在一起,保证相互之间都能清晰掌握整体思路和每个函数的功能。通过这些方式,我们在小小的范围内还算顺利地避免了作者提到的诸多大坑。而对于需要多人协作的团队项目,这样的沟通交流需要的时间成本会几何倍数增加,效果也会变差,如何平衡效率与团队交流、团队规范,是一门永恒的课题。总而言之,虽然“包治百病”的银弹短期内难以实现,但“铅弹”“铁弹”之流已经普及开来,用好子弹对抗“狼人”,是每个团队必须做好的工作。
二、人的作用与时间进度
书中反复强调了人在软件工程中的作用。人,包括队伍结构、人手安排等。作者着力推荐了“外科手术团队”和“贵族式系统设计”,简单来说就是对于小项目,团队应当“小型、精干”;对于大项目,团队应该设定“小型、精干”的总设计组。这是因为精英程序员的效率远高于一般程序员,在他们的引领下才能有效率地实现项目。在我看来,这样的举措是比较科学的,在我们的团队作业开发中,比较有经验、知识面广的同学负责团队整体的设计和引领,具体功能实现交给其他同学完成,“小而精”的统一开发设计可以减少很多不必要的讨论和交流时间,更高效地完成任务。同时,我们保底每周开会一次,确保任务的推进顺利和组员之间的交流,避免闭门造车、自成一派等不和谐现象。
时间进度则直接关系到项目的完成度和对组员的推动力。好的时间进度安排能让项目顺利进行、如期交货,也能不断push团队成员完成任务;不够好的时间进度安排轻则导致项目延期、成员消极怠工或揭竿起义,重则导致项目流产、团队分崩离析。在结对作业中,我们没有设置非常明确的时间进度,常常走一步看一步,好在项目工程量很小,这样做也没有出大BUG,最终还是如期完成了,但较大项目里若缺乏总体时间规划,往往只能走向失败。需要指出的是,此次作业老师险些安排同学们重写测评,给了同学们过大的push力,结果同学们纷纷反对,最终改为比较适当的收获总结作业。我认为合适的时间安排非常必要,不但要考虑工程进度,还要联系团队成员的实际情况,进行人性化调配。倘若只顾push,甚至要求成员顶着学业、考试压力仍然“出货”,往往只能适得其反。
总而言之,《人月神话》一书包含了软件开发中可能遇到的种种情况,蕴含着许多令人称道的精髓思想,读之受益匪浅。
《人月神话》读书笔记 PB16110698 第七周(~4.19)的更多相关文章
- 《移山之道》第十一章:两人合作 读书笔记 PB16110698 第六周(~4.15)
本周在考虑阅读材料时,我翻阅了<移山之道>,正好看到这一章:两人合作,心想:正好,我们正值结对作业的紧要关头,书中两人合作的宝贵经验和教诲应当对我们有很大帮助.于是,我开始一边在ddl苦 ...
- 《软件调试修炼之道》Part 1(CH1~5)读书笔记 PB16110698 第八周(~4.26)
编程中,调试几乎是必不可少的,一劳永逸.一次完成预想功能而完全不出bug的情况凤毛麟角,出现bug→调试→再出现bug→再调试……基本是软件工程中的常态.可以说,软件调试是每个coder的必修课,而& ...
- 《创新者》读书笔记 PB16110698 第五周(~4.5)
本周我阅读了某同学推荐的<创新者>,这本书实际上是两个世纪以来信息技术的编年史,从巴贝奇的差分机到如今互联网时代的超级计算机,作者通过各个时代里一位位杰出的创新者,将计算机诞生.发展.崛起 ...
- IT项目管理——《人月神话》读后感
这也许是和候红老师的最后的几节课了吧,侯老师是一个很有思想深度,很关心同学的好老师. 一开学就布置了阅读<人月神话>的作业,说实话,我没有看,以我的速度可能2.3个小时就看完了,但是我觉得 ...
- 第八周读书笔记(人月神话X月亮与六便士)——到底什么才是一个程序员的自我修养?
写了这么久的读书笔记,涉及到问题大多是一些如何把软件工程做好,如何把自己的职业生涯做好.但总感觉逻辑链上缺了一环,亦即:我们为什么要把软件工程做好,我们成为一名优秀的职业生涯的意义到底在于什么?我觉得 ...
- 读书笔记第三周 人月神话 刘鼎乾 PB16070837
读书笔记第三周:人月神话 这本书主要讲述了如何管理一个软件开发团队的问题,其中如何提高团队的效率可以说是本书的重点之一了.感觉这本书地中文版翻译得比较晦涩,很多表达比较模糊,看起来有些吃力,因此下 ...
- 《Practices of an Agile Developer:Woring in the Real World》读书笔记 PB16110698(~3.22)第三周
<Practices of an Agile Developer:Woring in the Real World>读书笔记 本周我阅读了<高效程序员的45个习惯:敏捷开发修炼之道 ...
- 软件项目发展历史<人月神话>这本书好
几乎是计算机软件开发的发展历史 人月神话,增加人手并不一定能提高开发速度. 原因在于,有些任务是无法分解的,存在先后顺序.无法同步进行. 增加人手,增加的是沟通成本,相互牵制.可以分解的任务就 ...
- <<人月神话>>阅读体会(一)
第一次听说人月神话还是在大一上学期的导论课那会儿,那会儿好像就已经确定了自己要学软件,于是就去问王建民老师能不能给我推荐几本软件工程方面的书,我想要提前自己学学,以为老师会给我推荐一些某种语言类的学习 ...
随机推荐
- 浏览器获取自定义响应头response-headers
原创作品版权归属本人所有,违者必究 https://blog.csdn.net/qq_37025445/article/details/82888731想在浏览器获取响应头里面自定义的响应头:file ...
- LightOJ 1203 Guarding Bananas (凸包最小顶角)
题目链接:LightOJ 1203 Problem Description Once there was a lazy monkey in a forest. But he loved banana ...
- redis 配置文件aof配置
redis 配置文件aof配置: bind 127.0.0.1 port 6379 daemonize yes dbfilename dump.rdb dir /new_renpeng/redis/ ...
- 精选 Dubbo RPC 面试题,比较全面,含答案
精选 Dubbo RPC 面试题,比较全面,含答案 hu1991die 搜云库技术团队 搜云库技术团队 微信号 souyunku 功能介绍 专注于分享最有价值的互联网技术干货文章,内容覆盖,Java后 ...
- ArcGis基础——动态显示面要素的面积值
很基础,不赘述. 1.在catalog(目录)新建一个PersonalGeoDatabase(个人地理数据库),导入需要处理的Shapefile文件. 坐标系统,存储路径与命名根据自己需求设定 2.直 ...
- 框架_mybatis1
mybatis框架是实现与数据之间交互 入门: 创建数据库环境 创建实体类与数据库对应字段 实现Serializable 创建接口定义方法 创建主配置方法: <?xml version=&quo ...
- vscode centos
https://www.cnblogs.com/My-Jinse/articles/8400137.html rpm -ql 包名 缺少libXss.so.1()(64bit) yum install ...
- 【JZOJ6285】飘雪圣域
description analysis 从求联通块出发根本没做法,于是考虑连通块里面的边 对于一个询问\([l,r]\),一条边的左端点\(≥l\)且右端点\(≤r\)才在这个区间的点之间 于是对于 ...
- 使用Thread创建线程
#_author:来童星#date:2019/12/17#使用Thread创建线程import threadingimport timeclass Sunthread(threading.Thread ...
- 云栖专辑|阿里开发者们的第二个感悟:PG大V德哥的使命感与开放心态
摘要: 2018年12月20日,云栖社区3岁.阿里巴巴常说“晴天修屋顶”,所以我们特别制作了这个专辑——分享给开发者们20个阿里故事,50本书籍. 2015年12月20日,云栖社区上线.2018年12 ...