现代软件工程系列 学生读后感 梦断代码 布鲁克斯法则

《梦断代码》读后感(第1~6章)

    书名:"Dreaming in Code",作者:Scott Rosenberg(中译本:《梦断代码》,翻译:韩磊,电子工业出版社出版)。
 
  • 第1章 【死定了】
        在这一章中,作者主要讨论的一个问题是——在项目进展迟缓,面临延期交付窘境的情况下,是否应该征召新人加入团队?
        很显然,这样做的好处是:会有更多的人参与到项目开发中来,更多的人阅读代码,从而获得更大的发现并解决错误的可能性。作者在书中援引瑞蒙德(Eric S. Raymond,《大教堂与集市(The Cathedral and the Bazaar)》一文的作者)的原话“只要有足够多的beta版测试人员和开发者队伍,几乎所有问题都会很快被发现,而且总有人知道该怎么修复。或者用不太正式的说法,‘眼球足够多,缺陷无处躲。’我把这叫做‘李纳斯法则’。“而Linux操作系统和许多开源项目成功的案例就为这条法则做了十分生动的注脚。
        但是与‘李纳斯法则’相对应的,还有一条‘布鲁克斯法则’(《人月神话(The Mythical Man-Month)》,Frederick Brooks):”往已延误的项目中补充人力,只会使其继续延误“。这条法则也有其合理的依据:每加入一个新人,都需要开发团队暂缓开发进度,为新人讲解工程结构,使其融入整个工程,而这个过程本身便会拖累项目进度。
        我想这两条法则各有其成立的背景,而其中非常重要的一点就是团队内的交流成本。开源项目背后往往有一个庞大的开源社区,这个社区内的程序员们通常都是出于自己的个人爱好而为项目出力。一个新人在社区上提出的问题往往有很多人知道答案并能很快得到解答,这些人可能只是由于加入社区或关注项目更早,获得了更多的信息和经验,而非真正的核心开发人员,因而这个”帮助新人融合”的环节就不太会拖累工程的进度。总而言之,开源社区因其规模效应使得核心开发人员可以将精力集中在开发上,而每加入一个新人的“融合成本”均摊到余下的“社区志愿者”身上以后就变得十分渺小了。可是像卡普尔的这个规模相当有限的Chandler团队,成员是领受薪水的,每个人都承担了相当的任务,几乎都是项目开发中不可或缺的一员。这样的情况下,任何一个人的进度迟缓都会影响到整个项目的进展,因而布鲁克斯法则就会起主要作用。
        对于我们这个Focus小组来说(其实其他的软工小组也一样),还是和Chandler更像一些:每个成员负责项目中的某一块,且一个成员的延误会拖累整个项目。况且征召新人对我们来说也不现实,因此,为了保证项目进度的正常进行,PM就要保证每个开发人员都在正常的运作,并且最关键的是:在关键的时间节点上能够出活。在这一点上,我们也是深有体会的:项目开发的初期阶段,PM早早地制定好了项目框架和接口设计,负责数据存取和与Google Calendar同步的开发人员也较快地完成了任务,UI部分则相对进展慢一些,尤其是负责实现Task Pool的成员,因为忙于其他事情而较晚将精力投入到项目开发中来。期间PM向组内不定期的发邮件通告项目各部分的进展,让进展较慢的开发人员时时感受到压力的存在。最终,进展较慢的开发人员也通过在alpha release前4天开始拼命干活完成了预定任务,保证了整个项目的正常进度。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/500664.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

现代软件工程系列 学生的精彩文章 (6) 项目总结

http://lunarthu.spaces.live.com/?_c11_BlogPart_pagedirNext&_c11_BlogPart_handlecns!48EA3793D3DA17C8!211&_c11_BlogPart_BlogPartblogview&_cBlogPartJanuary 10学做一个PM By Cheng Lu 对于我们的SmartMe,我是真正倾注了感情的。看到今天SmartM…

sqlite查询空日期类型_SQLite比较日期

我有这个sql语句:SELECT Geburtsdatum FROM KundeWHERE Geburtsdatum BETWEEN 1993-01-01 AND 2000-01-01但我得到一些奇怪的结果,如:2.02.1990“Geburtsdatum”是DATE任何建议或解决方案?我的表格结构:CREATE TABLE Kunde (Kunde…

现代软件工程系列 学生读后感 梦断代码 软件难做

http://cid-064ec84e17924332.spaces.live.com/blog/cns!64EC84E17924332!173.entryDecember 06读《梦断代码》 读《梦断代码》的感想 《梦断代码》详细叙述了OSAF的Chandler项目从2001年开创以来直至2005年间的进展状况,真实展示了Chandler项目的艰难的开发过程&am…

现代软件工程系列 结对编程 (II) 电梯调度程序

[很多同学完成了上一个结对编程项目后, 很想知道下一个项目是什么, 我们这次要练习如何设计 接口, 测试框架, 和算法] 现代软件工程系列 结对编程 (II) 电梯调度程序 ------- Pair Project II Elevator Scheduler Design and implement an Elevator Scheduler to aim for …

java 中violate_Java中的Volatile关键字

Java的volatile关键字用于标记一个Java变量为“在主存中存储”。更确切的说,对volatile变量的读取会从计算机的主存中读取,而不是从CPU缓存中读取,对volatile变量的写入会写入到主存中,而不只是写入到CPU缓存。实际上,…

现代软件工程系列 创新靠学分

如何在学校里讲创新, 这是一个老问题。 但是天朝的教育体制总有办法,请看: http://news.163.com/10/1125/03/6MABIS4H00014AED.html 武汉一高校设"创新学分" 不搞创新不能毕业 去年秋季,武汉科技大学中南分校出台《学籍管理规定》,…

java 如何发提示_消息提醒-如何实现收到待办给QQ发送提醒?

一、前期准备一台windows服务器(用于运行QQ机器人)下载QQ机器人框架二、QQ机器人配置1、解压前面下载的机器人框架和httpapi2、打开解压后的 小栗子框架.exe3、在用户列表右击选择添加单个4、添加后右击点添加后的账号选择登录选中QQ5、点击应用中心>点击导入插件>选中前…

顶级程序员的心得 - Coders at Work

这篇博客经历了 CSDN 的历次改版后,格式已经坏了, 我重新写了一篇,重排了格式: 顶级程序员的心得 –– Coders at Work_SoftwareTeacher的专栏-CSDN博客顶级程序员的心得 –– Coders at Work我2009年读了 “Coders at Work”, …

jdbc mysql myeclipse_关于JDBC连接MySQL的问题,我一直解决不了(Myeclipse 环境下)

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼package org.mlj.jdbc;import java.sql.Connection;import java.sql.DriverManager;import java.sql.SQLException;import java.sql.Statement;import java.net.UnknownHostException;import java.net.InetAddress.*; public class…

现代软件工程课件 需求分析 如何提出靠谱的项目建议 NABCD

《构建之法 - 现代软件工程》课件 互联网时代对于创新者来说, 既是一个伟大的时代, 又是一个糟糕的时代。 你有很多机会做出影响世界的产品, 但是, 似乎任何想法都被别人想到过了, 做出来了, 上市了, 移植到各种平台上去了… 那么我们后来人除了羡慕别人生得早, 还有什么机…

java禁止数据库写入事务_Java -- JDBC 事务处理, 事务的隔离级别 脏读 不可重复读 等......

1. 事务指逻辑上的一组操作,组成这组操作的各个单元,要不全部成功,要不全部不成功。数据库开启事务命令•start transaction开启事务•Rollback回滚事务•Commit提交事务JDBC控制事务语句•Connection.setAutoCommit(false); //start transa…

现代软件工程 教学计划 适应两种难度和重点

现代软件工程 教学计划 经过 2007 - 2018 年,30个不同学校的实践后, 《构建之法》在大学的两种教法已经出现了, 这两种教学计划适应于两种难度和重点。 下面我们具体介绍这两种计划。 1. 软件工程导论(适合大一下的学生,在学过…

java中setDocument_Java ActionItem.setDocumentId方法代码示例

import org.kuali.rice.kew.actionitem.ActionItem; //导入方法依赖的package包/类Test public void testConvertActionItem() throws Exception {// get test dataString testWorkgroupName "TestWorkgroup";Group testWorkgroup KimApiServiceLocator.getGroupSe…

敏捷软件开发宣言–Manifesto for Agile Software Development

敏捷开发, 谁不会呀, 不就是 没文档, 出活快, 用户说啥都能改? 下面是一个笑话, 王屋村的大牛说 - 我最近转手接了一个活, 完事能挣四五万, 我拿过图纸一看, 不就是盖一烟囱吗? 我们是敏捷 (Agile) 的团队,要文档作甚? 马上开始干活! 都快盖好了&am…

敏捷软件开发 12 原则

作为 <现代软件工程> 的一个作业, 我要求同学们把 英文的敏捷开发原则 翻译成中文并解释。 大部分同学都提供了持续重构, 不断提高的版本。 技术翻译专家余晟老师也对其中较难翻译的三条原则提了很好的建议。 下面是我的尝试, 翻译要做到 信, 达, 雅, 很难, 而且中国的…

教师管理系统设计报告java_教师办公管理系统的设计与实现

随着计算机及网络技术的飞速发展&#xff0c;Internet/Intranet应用在全球范围内日益普及&#xff0c;当今社会正快速向信息化社会前进&#xff0c;信息自动化的作用也越来越大。从而使我们从繁杂的事务中解放出来&#xff0c;提高了我们的工作效率。教师办公管理系统是一个教育…

同学, 你的板砖呢?

这次 <现代软件工程> 的4 个团队要做下面的项目, 唯一的要求是 - 做真实的项目: 第一组: 一个BBS 的通用客户端 第二组: 挖掘学术圈内的师承关系 第三组: 真人拳皇 - 把你老板的照片变成对手, 然后给他一顿痛打 第四组: 一个叫呆呆的东东。 他们缺什么呢? 缺一些…

设置java环境变量生效 centos_解决CentOS java环境不生效的问题

查看当前java版本[rootlocalhost jdk1.6.0_45]# java -versionopenjdk version "1.8.0_65"OpenJDK Runtime Environment (build 1.8.0_65-b17)OpenJDK 64-Bit Server VM (build 25.65-b01, mixed mode)发现默认的还是系统自带的1.8&#xff0c;不是配置的1.6。[rootl…

顶级程序员的心得–Coders at Work

最新版本在这里&#xff1a; (2584条消息) 顶级程序员的心得 –– Coders at Work_SoftwareTeacher的专栏-CSDN博客https://blog.csdn.net/SoftwareTeacher/article/details/113489014

JAVA中vector是否存在数据_如何找出std :: vector中是否存在项目?

我要做的就是检查向量中是否存在某个元素&#xff0c;因此我可以处理每种情况。if ( item_present )do_this();elsedo_that();#1楼您可以尝试以下代码&#xff1a;#include #include // You can use class, struct or primitive data type for Itemstruct Item {//Some fields}…