▲因爲上週天我臨時請假匆匆買了車票回家鄉看病了,當時還沒發佈做業,只帶了電腦回去,沒有帶課本,而後返校是週六晚上才返校的,爲了完成做業就在家裏下載了電子版《構建之法》看,因此沒有標上頁碼,望理解。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/, 並在博客中給出連接
在豆瓣頁面的最下方 「讀書筆記」 那裏發言, 《構建之法》的做者會親自答覆問題
豆瓣提交連接