軟件工程 做業一

Task1:註冊我的博客帳號

Task2:註冊碼雲帳號

  • 目的:管理你的項目,記錄(源碼、文檔,歷次版本變動,bug發現與修復)等信息。程序員

  • 碼雲地址:https://gitee.com/cxf1404445126安全

Task3:提出問題

快速通讀教材《構建之法》,並參照提問模板,提出5個問題。
如何提出有價值的問題? 請看這個文章:http://www.cnblogs.com/rocedu/p/5167941.html ,以及 在互聯網時代如何提問題。 還有這些要點:app

  • 在每一個問題後面,請說明哪一章節的什麼內容引發了你的提問,提供一些上下文
  • 列出一些事例或資料,支持你的提問。
  • 說說你提問題的緣由,你說由於本身的假設和書中的不一樣而提問,仍是不懂書中的術語,仍是對推理過程有疑問,仍是書中的描述和你的經驗(直接經驗或間接經驗)矛盾?

問題一:

書的第三章的標題是 軟件工程師的成長,其中在講到其職業發展的時候,提到了一些軟件工程師的職業資格考級,我想這一類的考試仍是比價注重理論方面的知識的,若是是在之前,我會很贊同這類的測試,那時候個人想法是一個優秀的軟件工程師不管是理論仍是實踐方面都是必需要精通的。學習

可是前不久,我看了保羅·格雷厄姆寫的一本書《黑客與畫家》,其中有一段話引發了個人注意:測試

​ 人們沒法考覈你的工做,甚至誤解你的工做,都不是最糟的事,更大的危險是你本身也會誤解本身的工做。由於你老是從相關領域尋找新思想,若是你發現本身讀的是計算機科學系,很天然地,你就會覺得「計算機科學」與其餘「理論科學」並沒有不一樣,你的工做屬於「理論計算機科學」所涉及的那種理論的應用研究。讀研究生期間,個人潛意識裏一直有一種很不舒服的感受,以爲本身應該多學一點理論,不該該期末考試結束還不到三個星期,就把全部東西忘得一乾二淨,那樣真是不可饒恕。翻譯

​ 如今,我意識到本身錯了。黑客搞懂計算理論的必要性,與畫家搞懂顏料化學成分的必要性差很少大。通常來講,在理論上,你須要知道如何計算「時間複雜度」和「空間複雜度」;若是你要寫一個解析器,可能還須要知道狀態機的概念;除此以外,並不須要知道特別多的理論。這些可比畫家必須記住的顏料成分少不少。設計

這一段話看起來是在說咱們在理論的方面並不須要掌握過多的相關知識,像上面提到的計算機等級考試,如今彷佛也不乏爲考證而考證,考完之後沒過多久就將這類的知識忘得乾淨,又或者是,在學完了這些理論知識後好久的一段時間都用不上,那麼學習那麼多的理論知識還有沒有用呢,在理論知識和實踐知識的方面咱們又該怎麼權衡呢?htm

問題二:

在書的61頁有這麼一段話:

這三個層次和教育理論中的三個區域的理論(溫馨區,學習區,恐慌區)也很類似。圖上的中間層次,就是咱們要嘗試、失敗、學習、再次嘗試的學習區。一個初學者看到關於本領域頂尖人物事蹟的報道,見賢思齊焉,也很想立刻就像頂尖人物同樣的作事,或者得了一本《21天精通某某技術》的書籍,要求本身在21天達到最高層次。這其實是強迫本身進入「恐慌去」,因爲沒有實力,心理準備也不夠,必然會出現「拖延症」等現象,結果確定是失敗得很慘。這樣的失敗經驗每每給人重大打擊,讓人不容易重整旗鼓,再開始學習。所以,選擇適合的「學習區」來學習,不斷構建本身的溫馨區,從而擴展學習區,最後在某些領域達到技能的精通,是一個按部就班的好辦法。

對於這三個區域我有以下幾個疑問:

  • 上段提到進入恐慌區必然會出現拖延症等現象,確定會失敗,那會不會存在一些特例,可以在恐慌區進行自個人提高?
  • 對於溫馨區與學習區、學習區與恐慌區的邊界是怎麼樣的,怎麼能判斷本身所在的區域?
  • 如何走出溫馨區?(這也是我好久以前就有在思考的問題,我我的屬於比較不想動腦,比較被動的那一類,有不少想學的東西,可是大部分都是在學完開頭比較簡單的部分以後就不了了之。)

問題三:

在第五章開頭講到了一些團隊合做的模式。其中有一個模式是這樣描述的(p99):

5.2.5 祕密團隊(Skunk Work Team)

一些軟件項目在祕密狀態下進行,別人不知道他們具體在作什麼。蘋果公司1980年代在研發Macintosh以後的系統時,就有兩三個團隊在不一樣時期進入祕密狀態開發。21世紀的一些創業團隊也是處於相似狀態。這種模式的好處是:團隊內部有極大的自由,較高的熱情,沒有外界的干擾(不用每週給別人介紹項目進展,聽領導的最新指示,等等)。一個團隊的成員若是有很大的自由度,又有獨特的使命,這對於你們來講,是很大的驅動力。這樣的團隊每每能發揮超高的效率完成看似不可能的任務。

對於這個模式,在最初看到的時候,就不是很懂它的運行方式,祕密狀態下運行的軟件項目,兩三個團隊不一樣時期同時進入祕密開發,這樣運做的話在開發不一樣時期團隊之間的交流看起來不是不少,這樣真的能夠保證團隊的成員充分了解本身要作的項目嗎,對於上面描述的這種模式的好處,自由,熱情,我以爲這即便是其餘模式的團隊也會有的特性。至於外界的干擾,我以爲仍是有必要的,按期的向別人介紹項目進展,有助於及時發現問題,當局者迷,旁觀者清,有時候別人看待咱們的項目會有一個更爲清晰的方向,若是可以提前發現問題,及時改正,那不是能夠減小大量的時間和金錢成本嗎。

另外,爲了更瞭解這個模式,我去網上找了一些相關的資料,可是經過我找到的資料,我發現蘋果公司在研發Macintosh以後的系統時採起的祕密團隊模式的主要緣由彷佛更可能是爲了「祕密」而已。下面是我找到的一些資料:

蘋果公司很是注重人才的選拔,爲找到合適的優秀人選,他們投入了大量的時間和精力。這在CEO喬布斯的身上表現得尤其明顯,他將本身大約1/4的時間都用於人才招募,從技術天才沃茲尼亞克,到Macintosh之父傑夫·拉斯金,再到設計大師喬納森·艾維,蘋果公司絕大多數骨幹員工幾乎都是喬布斯親自挑選出來的。爲找到最合適的人選,蘋果公司還會使用一些不同凡響的選拔手段,並取得了意想不到的效果。同時,蘋果公司也很擅長髮掘員工的特長,並根據他們的特長來爲其安排恰當的工做崗位及工做內容,實現真正的「人崗匹配」。

喬布斯認爲這個世界沒有全人也沒有全才,但總有一部分是他們最優秀的,而蘋果用的就是員工最優秀的那一部分。這就是爲何一些員工在其餘公司不被看好,加入蘋果後卻能發揮出巨大價值的緣由。此外,爲了讓精英更好地發揮做用,喬布斯創造性地提出了「A級團隊」的概念,強調小團隊的力量。因此,多年來,蘋果公司的核心技術團隊始終保持着小規模運做,不少項目的運營都由精選的設計師、程序員和管理人員組成的A級小組在執行,保證了價值創造的高效性。

雖然蘋果同一團隊的精英成員之間一直保持着高效的溝通和良好的默契,可是他們習慣自成一體,從不與外界進行過多的互動。例如,蘋果的設計團隊就不多參加行業盛事或者頒獎典禮,他們彷佛並不須要外界的確定,由於在他們看來,沒有人會比他們在設計方面更加權威,分享更多的信息只會使得別人窺得祕密縮小差距。這種極度的自信和「捨我其誰」的氣概正是蘋果精英主義的最佳體現。

蘋果公司總能在他們的發佈會上像變魔術同樣拿出各類神奇產品。但「魔術」之因此成爲魔術,正是由於它讓人捉摸不透底細,以後在不經意間給人出其意料的結果。對蘋果公司來講,這爲產品保密帶來了極高的要求。

再說蘋果公司,他們的保密文化起源要追溯到1984年,喬布斯領導研發第一款Macintosh計算機的時候。直至今天,蘋果的保密實驗室都有多道安全門,須要掃描工牌和口令才能進入,辦公室也處於不斷監視下。

文章引用自:

因此我認爲,蘋果公司的運行模式更像是變形的功能團隊模式,對於要祕密進行開發,實屬無奈之舉,那麼個人問題是祕密團隊開發的運行機制究竟是怎樣的?好處又有哪些?但願老師能夠給我一個更爲清晰的回答。

問題四:

第八章用了一整個章節來說需求分析,也介紹了不少需求分析的方法,那咱們應該如何在需求分析的時候選擇適合本身的分析方法?進行需求分析的時間又應該佔整個產品開發時間的多大比重?若是後期須要不斷地對需求進行從新調整,那麼前期在制定需求分析的時候是否能夠不用太過精細,只要列個大概的分析,等到後期開始開發產品的時候再根據實際問題進行細化?

問題五:

本書的262頁在談到用戶體驗時舉了這麼一個例子:

用戶須要幫助,可是用戶沒有那麼笨

微軟必應搜索有一個「實時顯示英語解釋」的功能,可是這個功能把鼠標所在的全部英語單詞都解釋一下,包括小學生都懂的「a,of,at,on,and,the,he,she,…」,用戶的鼠標經常會無心地停留在這些詞語上面,你會看到這個「英語翻譯」功能自做多情地告訴你「a」是什麼意思,順便把頁面上的其餘文字給遮住了。

事實上,對於這個例子,我我的認爲屏幕取詞這個功能將這些簡單詞進行翻譯沒有什麼不妥,它只是很忠實的執行了本身的任務,這些詞或許是大部分人眼中的簡單詞,可是若是由於這個緣由就武斷將這些詞不歸入翻譯的行列,那用戶的體驗又能所以提高到什麼程度呢?(對於有強迫症的我,要是發現它會不顯示某些詞的解釋,興許還會以爲這是bug呢)另外,每個人對於簡單詞的定義彷佛也沒有那麼清晰,若是非要強行取消某些詞解釋,那也很難界定其範圍,因此想一想仍是全部詞都解釋的方法比較穩妥,或許之後能夠改進一下,根據每個人詞彙量來進行屏蔽部分詞語的解釋什麼的(emmm好像扯遠了)。

【附加題】:請將問題提交至豆瓣:https://book.douban.com/subject/27069503/, 並在博客中給出連接
在豆瓣頁面的最下方 「讀書筆記」 那裏發言, 《構建之法》的做者會親自答覆問題

豆瓣連接:https://book.douban.com/annotation/61321176/

Task4:Git基本操做練習

完成如下Git基本操做

  1. 將https://gitee.com/happyfaye/SoftwareEngineering倉庫fork到本身的帳號下
  2. 將遠程倉庫clone至本地倉庫
  3. 在本地倉庫添加學號姓名.txt(例如:201621123000happy.txt),並提交至遠程倉庫
  4. 在本地修改該文本內容並再次提交
  5. 給出提交歷史信息截圖
    參考:實驗樓練習:https://www.shiyanlou.com/courses/4

git的基礎配置:

將連接倉庫內容fork到本身的帳號下:

將遠程倉庫clone到本地倉庫:



在本地倉庫添加學號姓名.txt(例如:201621123000happy.txt),並提交至遠程倉庫


在本地修改該文本內容並再次提交




相關文章
相關標籤/搜索