▲因为上周天我临时请假匆匆买了车票回家乡看病了,当时还没发布做业,只带了电脑回去,没有带课本,而后返校是周六晚上才返校的,为了完成做业就在家里下载了电子版《构建之法》看,因此没有标上页码,望理解。html
快速通读教材《构建之法》,并参照提问模板,提出5个问题。
如何提出有价值的问题? 请看这个文章:http://www.cnblogs.com/rocedu/p/5167941.html ,以及 在互联网时代如何提问题。 还有这些要点:程序员
一个模板能够是这样:编程
我看了这一段文字 (引用文字),有这个问题(提出问题)。 我查了资料,有这些说法(引用说法),根据个人实践,我获得这些经验(描述本身的经验)。 可是我仍是不太懂,个人困惑是(说明困惑)。网络
或者这样:学习
我反对做者的观点(提出做者的观点,本身的观点,以及理由)。测试
大学生应该能写出本身的思考, 而不是摘抄书本内容。优化
提示:编程经验很少的同窗,建议看16章 “创新”, 提出本身的问题。code
1、结对编程不是“平等”的
在4.5.2 为何要结对编程中,做者提到:htm
在结对模式下,一对程序员肩并肩、平等地、互补地进行开发工做。blog
既然说到结对编程中这一对程序员是平等、互补的,那么,这对程序员的能力,我以为应该是平分秋色的,才能实现真正意义上的平等互补。 在百度百科[1]中也有说到:“其实结对编程作起来很简单也颇有趣,找个水平差的不太远的程序员和本身配成一对……” 因此我认为,这种和谐合做的前提是水平至关,这里就涉及了一个结对编程拍档的选择原则或标准的问题。但若全部的结对编程都如此严格要求,这将会使项目的起步存在难题。 在我看来,这个平等应该是心态上的平等,是一个虚心合做的态度所赢得平等。并非真正意义上的平等。虽然说“三人行必有我师”,但人的能力终归有高低之分。 因此,我以为结对编程是一个“不平等”的有倾倒向的过程,可是能够是一个互补的过程,在结对编程的过程当中两人相互学习相互监督以达到项目完成的最优。这个可能有点过于牛角尖了,可是我以为仍是有必要说一说的。
[1]参考自:结对编程 百度百科
2、程序各方面的质量并非取决于一对程序员中各方面水平较高的那一位的
一样的一章节,做者在后文又写到:
在结对编程中,由于有随时的复审和交流,程序各方面的质量取决于一对程序员中各方面水平较高的那一位。
这里也说到了“取决于各方面水平较高的那一位”,这里就在某种角度和上面的观点有所冲突。既然有处于相对决定性地位的一者就不该该说是“平等”的。 另外,我认为这句话相对片面。既然说了,结对编程是一个互补的过程,那么就存在各方面水平较低的一位在某一方面相对突出的可能。就比如两个厨师作一道菜,A在刀工、调味等方面都优于B,控制火候的能力却没有B好。而有些肉质菜品对于火候控制的要求是相对高的,那么最后完成这一道肉(咕噜噜~)的决定性因素除了调味就是火候,火候的适当调控会使肉质更好地体现出来,也许火大了就太硬太老了,火小了就煮不熟煮不透。那么,你说这道菜的成功是取决于A么,不能这么说吧。 emmm这么说应该吃货都会懂个人意思了吧=w=,因此我认为不能写得这么果断。
3、敏捷流程是否等同于敏捷开发?
在6.1 敏捷的流程里做者没有给出一个明了的定义,只是提出:
在软件工程的语境里,“敏捷流程”是一系列价值观和方法论的集合。
由此我对敏捷流程的定义产生了疑惑,因而查阅网页,没有查到“敏捷流程”这个概念,而看到了“敏捷开发”这个词汇,里面说到:敏捷开发是以用户的需求进化为核心,采用迭代、按部就班的方法进行软件开发。[2] 我到目前为止看书所获得的对“敏捷流程”的理解,我认为他们应该是同一个概念。但转而又以为开发是一个“动态性”的过程,而“流程”一词在百科的定义是这样的:“基本意思是指水流的路程;事物进行中的次序或顺序的布置和安排;或指由两个及以上的业务步骤,完成一个完整的业务行为的过程。”[3]是一个“静态性”的过程,由此我又认为他们并非等同,但愿获得解答。
4、还有哪些敏捷开发方法论
在书中,做者一直在强调敏捷这个字眼,而在书中也点到了几个经典的方法论:
问敏捷的方法论有哪些?
答:比较有名的是:
爱抚弟弟(FDD – Feature Driven Design)
史克朗姆(SCRUM)
极限编程(XP)
我查询网络稍微了解了一下这些方法论,而且得知了另外的几个方法: ①水晶方法 ②DSDM-动态系统开发方法 ③测试驱动开发(也就是TDD) ④Lean软件开发(精益软件开发)[4] 不知道能不能把这些方法论理解为一些原则的集合,就好比lean软件开发的准则是:消除浪费、加强学习、尽可能延迟决定、尽快发布、下放权力、嵌入质量、全局优化,是否是说明它是这些准则的集合,符合这些准则的方法就称为LEAN软件开发? 对书本也是粗略扫了一遍,有点云里雾里不明因此QAQ。
[4]参考自:FakerWang:敏捷开发方法简介
5、学生的我的能力衡量与发展?
在课本3.1 我的能力衡量与发展里由职业篮球选手入手点到了软件开发的工做量和质量怎么衡量:
a . 项目/任务有多大?说明项目的大小,通常用代码行数(Line Of Code,LOC)来表示;也能够用功能点(Function Point)来表示。
b . 花了多少时间?能够用小时、天、月、年来表示。一组人所花费的时间能够用(人数×时间)来表示,例如某项目花费了10我的×月。
c . 质量如何?交付的代码中有多少缺陷?
这样子看来是没错的,但学生的我的能力彷佛不能这样子衡量,毕竟做为一名学生,不会像一个职业人员同样守着一个项目钻研上一成天,学生仍是由天天的学习进度须要去跟上,这样子零散的编程时间或者说是完成一个项目的时间很可贵到捕捉并截取下来做为一个数据来衡量,并且学生目前的项目通常不会大哪里去。那么要如何去衡量呢。
【附加题】
请将问题提交至豆瓣:https://book.douban.com/subject/27069503/, 并在博客中给出连接
在豆瓣页面的最下方 “读书笔记” 那里发言, 《构建之法》的做者会亲自答复问题
豆瓣提交连接