1. 程式人生 > >現代軟體工程 第一週作業

現代軟體工程 第一週作業

1.自我介紹

大家好,我叫楊濤,來自西安交通大學,非常榮幸能和大家在這裡一起學習,目前在網路多媒體組實習。我有非常廣泛的愛好,比如畫畫,比如製作小製作,打乒乓球,羽毛球,網球,以上三種球其實我打的不是很好,但我也挺喜歡的。感興趣的同學可以打的時候叫上我,此外,我還喜歡踢足球,我喜歡那種在球場上拋灑汗水的感覺。其實我還是個弱弱的技術宅,我把宿舍的門,檯燈,顯示器,空調,鬧鐘,提醒什麼的全部用程式寫在了樹莓派裡用微信操控(其實只是因為我經常忘帶鑰匙,忘記關空調,偶爾還會忘了關燈,忘了一些比較重要的事情,對,我挺健忘的,所以逼迫自己做了個這個),喜歡的動漫是火影忍者,我特別喜歡裡面的主人公鳴人那種不服輸的勁。對我來說興趣比一切都要重要,我之所以會來到這,會選這個專業也是興趣驅動的,因為我對這方面非常的熱愛。我認為一份工作多少錢不重要,幹什麼才是最重要的。以前總是覺得寫部落格異常麻煩,所以一直就處於只愛寫GitHub readme 不愛寫部落格的狀態中,不過我相信自從來到這裡,我會一直堅持把這件事做好做下去。最後,其實我的小製作,和畫的畫蠻有意思的我就放三張圖吧:

上圖這個小黃人實際上是一瓶塗改液和一個羽毛球。。。最後一張圖其實是因為沒錢買顯示器而已(偷笑),這些其實都只是我從小自己喜歡瞎搞,搞出來的,也不算什麼優勢,但動手能力還是蠻強的,大學裡做實驗就體現出來了,手殘的我大部分時候都是第一個弄完的。

2.現狀經驗和計劃

首先就是幾個老師提出來的非常重要的根本問題

 (1)在你一生中身體最健康,精力最旺盛的時候,能在大學全職學習和研究,這是少有的機會。請說明一下,你是怎麼選擇了這個專業的?

 其實高三的時候,我最感興趣的是物理,我那個時候也沒想著自己要搞研究,在那之前我從沒有編寫過程式碼,從沒有接觸過一些軟體層面的知識,突然就要填報志願了,我覺得我應該跟著興趣走,但是我不可能大學去學理論物理,主要的原因還是在同學們眼中,理論物理是沒有前途的,搞科研是沒有出路的。當然這一切想法今天想起來還是很搞笑的。但我沒有摒棄我的興趣,那好!我就保我覺得和物理比較相關的工科,於是我把所有的志願填上各種工科,大部分與計算機相關,一些是能動和機械之類的,最終我還是鬼使神差的錄取到了自動化(EE和CS都有一些,偏向CS一點),剛開始進來其實還是想努力轉專業的,因為這不是我交最好的專業(最好的是電氣),但自從接觸了C語言,瞭解到了以後可以做機器學習,人工智慧方面,我開始動搖了,因為我從高中就有一種幻想:假如我們把大腦中的各種訊號數學關係找出來,用計算機去模擬計算這些,那麼是不是計算機也能像我一下思考,像我一樣具有意識。從有了那種幻想開始,我一直夢想一天我能做出具有意識的機器,搞清楚意識的原理,甚至將人類的意識上傳到計算機,從而達到永生的目的。(對,我從小就喜歡胡思亂想)當時想著,探索大腦與意識的究極原理,和探索宇宙都是一樣的有價值,一個是真宇宙,一個是內部的小宇宙。再加上當時的我對程式碼可是如痴如醉,老師要求的,我編,老師不要求的,我也編,老師教我的,我學,老師沒教我的,我借書自學(因此那年我借書量全校第四),所以想到這些我不願意轉了,我愛這個專業,我愛我從事的這一切。至於剛開始我很鄙視研究,為什麼最後我想做學術研究,是因為在大學期間我加入了學校的IAIR(人工智慧與機器人研究所)一步步研究生活中,我發現我喜歡做這件事,而且我也很適合做這件事,我改變了對它的看法。所以最後選擇我一定要讀博,我一定要讀人工智慧方面的博。

離成為一個合格的 IT專業畢業生,在專業知識、技能、能力上還差距哪些?請看這個技能調查表, 從表中抽取 5 - 7 項你認為對你特別重要的技能, 記下①你目前的水平 ②你想在課程結束後達到的水平 (數字 0..9 表示); ③你計劃通過什麼手段提高水平 

雖然學校老讓我們用C Matlab 但是自學的我,最喜歡的還是Python,因此大學裡的很多作業我都是用Python完成的,我選了以下幾項作為我認為的特別重要的技能:

Skills 課前評估 課後評估
Design/架構設計,模組化設計,介面設計
4 8
Implementation/模組實現,逐步細化 4 8
Performance/效能分析和改進 1 6
Conmmunication/執行緒之間程序之間,不同平臺程序之間 2 7
Comprehension/理解已有的程式,閱讀分析,Debug 4 8
Bigdata/處理大資料 1 6
cutting edge technology/前沿技術 1 8
Personal Software Process/個人原始碼管理,兩個都包括 2 7

我之所以這麼選是因為我覺得:

  1.無論任何時候,設計都是非常重要的,我覺得這方面的知識多多益善,上不封頂,任何一個工程,設計都是首腦。

  2.有了設計不能實現的化,也是白搭,而且我覺得即使是最後不是自己做實現,也要知道怎麼實現也是非常的重要的,這方面可以加深對工程的理解。

  3.效能分析和改進完全決定了一個東西的生死存亡,非常的重要。

  4.程式碼的閱讀理解能力,也是一種團隊合作必須要有的技能,而且在會寫程式碼之前,首先要學會看程式碼。

  5.大資料的時代到來了,不管從事什麼行業,處理大資料,都是必備的技能。

  6.前沿技術就是科研吶,掌握最新的的科技,是上不封頂的,畢竟創新的重要性擺在那裡,而且要做好的產品,最新技術是避免不了的。

  7.為了以上6項良好的發展,最後一項就是軟實力啊,必須提高。

Flag我已經立好了,怎麼去實現而不被打臉呢,我打算使用以下的方式實現自身的提高:

  1.前五項均是專案上的硬實力,我覺得沒有任何捷徑,只有不斷的做專案,不斷的在實踐中嘗試,在實踐中摸索,練習,此外我認為《構建之法》有很好的指導性作用,也需要這本書進行參考,剩下的還需要閱讀一些專業書籍,當然最重要的還是實踐,因為實踐是檢驗正理的唯一標準。

  2.無師難以自通的,為了更好的提高我自己的能力,請教別人也是非常有作用的,我要請教老師和同學,做專案做的更加優秀的同學,不管是老師還是同學,任何優秀的人都可以是我的老師,我都需要虛心求教。

  3.後兩項均是較為前沿的技術,我需要多閱讀文獻,多閱讀文章,多對文章進行復現,掌握技術的同時也要鍛鍊程式碼能力。

  4.最後一項只能是在實踐前面的要求的同時多注意,多查資料,多看相關的用法,多實踐剛剛學到的知識

  5.多看書,多讀書總是有益處的,我的數值分析老師高勇新老師曾經說:一個人的思想被“汙染”過,就不可能再純潔了。所學的知識暫時不會非常有用但是,最後肯定有意向不到的用處。

(2)閱讀一下部落格,並務必寫一些心得:

a.大學生上課為什麼一定要認真聽講?

 讀完這篇部落格我產生很多的共鳴,大學四年,無論是什麼課,只要是能讓我坐在第一排認真聽的課,我都坐在第一排認真聽,但我的出發點,可以說和部落格所說的就大相徑庭了,因為當時的我想不了這麼多,我思想很單純,這課我就必須聽,而且必須聽進去,原因很簡單:我交了學費。所以四年以來,不論是高數線代,還是毛概思修,不管什麼課,我必須學而且必須學到東西,至於為什麼坐在第一排,原因很簡單,我第一節課去遲了,上課前半小時才到(當時大家學習熱情可想而知),我只能坐在中間位置,我個子矮,視力差,看不清,從那一刻開始,為了對得起學費,我就坐在第一排,但課下花多少時間在這門課上,我也不看學分,(畢竟我不是很在意自己的成績,但最後結果都不錯)我看我對什麼感興趣,對某門課感興趣我就去借這門課相關書籍,學習其中的老師不講的內容,在認真聽馬原課的時候,我逐漸理解了什麼是新中國,什麼是馬克思主義,什麼是黨,什麼是人民,所以我才會依然決然選擇去入黨。(其實之前我對入不入黨的問題,一直都沒有個準確的答案)而現在我已經是一名正式黨員了。因為每次上課都是坐在第一排,基本上所有的任課老師也都認識我,這也算其中一個意外收穫吧。部落格裡面說走神是認真聽課的大敵,我卻有一個預防走神的方法,就是不斷的像高中那樣接老師的話,回答老師的問題,這樣的話真的非常難走神,我也覺得上課一定是有用的,就像我的老師說過,一個人的思想被汙染過,就不再純潔了,所學的知識,也許某一天提醒你在另一個領域做出驚世創舉。

b.你在大學中體驗到了哪種師生關係,你希望這門課是什麼師生關係?如果老師佈置的作業對你來說有些困難, 你會怎麼樣:

C: 向老師和同學請教,花更多時間,把作業全部完成。看完這個部落格感覺老師真的是在教學上下了不少苦功夫,我記得這也是《構建之法》的緒論裡面的,我非常的贊同老師說的健身教練與學員的說法。其實在師生關係方面,我非常的幸運,我有幸碰到的我大學科研的啟蒙導師任鵬舉老師,他是我們班的班主任,同時也是我們嵌入式,人工智慧導論兩門課的老師,我覺得我和他的師生關係就像健身教練和學員的關係,還是那種關係非常好的,他作為交大人機所的老師,一方面具有很多的資源,我可以和他的學生一同或者我自己在專業中找志同道合的同學一起做一個專案,就像圖中所練的槓鈴一般,的確是練肌肉的好東西,在做專案過程中我的程式設計能力,團隊合作能力,設計能力閱讀程式碼能力提升的都特別快,因為是專案,趕著我走的並不是人,而是那萬惡的deadline,經湊的時間,巨大的工作量,就和健身房裡所做的鍛鍊一樣。和所有的健身活動一樣,任老師經驗非常豐富,知道我做之前需要做哪些“準備活動”,對我的不規範的操作都一一指正,從他那我還學到一點專案管理的方法。就像部落格中說的那樣,健身場館裡能認識很多的志同道合的人,在人機所裡,我同樣認識了志同道合的塗志俊同學(大學裡最要好的朋友,專案隊友,建模隊友),曾浩倫同學(專案隊友),張賀同學,(一起來MSRA的同專業同學)可以說是非常的幸運了,我大學裡幾乎所有的比賽專案,都離不開他們幾個。

c.在工作中,我們要引用文獻,參考別人的資料,在別人工作的基礎上繼續開發, 這些活動和抄襲、剽竊的區別是什麼?請仔細閱讀相關文章,並詢問老師在這門課中的要求,瞭解學校對於抄襲的處理規定。 

在明顯進行區別並註明出處的情況下,應該屬於引用,在模糊兩者界限,或者都不註明出處的,屬於抄襲和剽竊,(老師在部落格中也指出:對文件:凡是引用別人的文獻的地方,要明確地標註出來,要符合各種規定,對程式:老師給的部落格也說要註明出處)出發點也不同,這些活動都是有利於自己的學習的,有利於自己做專案的,我們引用的目的是為了站在巨人的肩膀上,做我們自己的工作,重點還是自己的工作,但是抄襲剽竊的出發點就是為了將別人的工作的功勞劃到自己的頭上。閱讀完部落格後我也深有感觸,因為學校裡這樣的同學為了應付老師連實驗報告名字都不改就發給老師,還被我們老師抓住,這種行為我覺得是非常可悲也非常可恥的。前段時間看到那個小保方晴子萬能細胞那件事,最後導師自殺,她也遭學術界封殺,醫學上也造成不好的影響。學術不端的危害可想而知,我們應該從課程上培養好這樣的習慣,到最後抄襲剽竊了連自己都不知道才是最可悲的(難道要學校站出來說沒有主觀造假,參考韓春雨事件)我想危害最大的還是哈佛大學皮耶羅·安韋薩教授的學術造假,這種情況的造假,讓那些根據他論文的方法做手術的患者付出多麼慘痛的代價,導致醫學不是救人良藥,而是害人利器!

(3)幾年後,你可以做學術研究、做軟體專案、做其他專業的工作,做公務員,出國深造,回家繼承家族企業...  ,不同的選擇有不同的努力方向, 你今天是怎麼為將來準備的?

我今天不為別的,只為做學術研究而來,就像我之前說的,原本我比較鄙視做科研的,因為當時不成熟的我覺得做科研意味著要艱苦奉獻一輩子,我也不是什麼偉大的人,也不要做什麼偉大的人,我平平凡凡的做我就好。在這種享樂主義盛行的時代這樣的思想是很容易滋生的,沒見過什麼大世面的我也是。比較幸運的是,我來到了我的母校西安交通大學,這裡真的要說一句,謝謝我的母校,來到這裡,我感覺很辛運。在學校的這幾年,我才知道,原來我的人生不應該那樣過,我也找到了自己喜歡的東西,就是做科研,同時也弄清楚很多東西,想明白了很多事情。可以說大學的這幾年,我最快樂的時光,就是在人機所自由科研,對一個問題不斷往裡鑽研那個過程,這裡面帶來的喜悅,是我從不曾體驗過的,最後問題解決的那種成就感也是不言而喻的,還有就是當你的想法,一字字落成文章,發表在那些國際期刊與會議上,所帶來的喜悅,也是從未有過的,雖然中途很多挫折,甚至被拒過一次稿,但我真心喜歡那樣的過程。因此我下定決心,不管以後是有多少薪水(畢竟當今時代大部分人衡量價值,用的還是這個),我都覺得做什麼是最重要的,我要做這個我喜歡的事,而且我一定要把它做好!況且我還有我的究極夢想:能做出具有自我意識的機器,搞清楚意識的原理,意識的本質,甚至將人類的意識上傳到計算機,從而達到永生的目的。(雖然不現實,但我覺得夢想還是要有的,萬一實現了呢)

至於我怎麼準備的,目前,第一件事就是儘快融入課題組當中,第二件事是認真對待這門課程,提高程式設計能力與各項能力,第三件事是提高英語能力,不停止背單詞與人交流,以及認真對待MSRA的英語課。長遠一些,我打算廣泛吸收各種論文理論,思想,多閱讀,多請教(MSRA大神雲集,我一定要好好取取經),多進行英語寫作,閱讀,口語練習,再者不放過任何一個練習寫程式碼能力的機會,抓住機遇瘋狂提升技能。最後我打算記錄一下每天的奇思妙想,說不定哪天就派上用場呢,而且看論文不能只停留在IEEE,還要涉獵一些SCI的東西,我一定要成為一名學術大佬!在研究方面,目前打算從視覺開始入手,博士期間先做視屏理解,以後以這個作為基礎做認知,做意識(幻想到時候AI可以研究意識了),我覺得一個人的意識應該是能感受世界後才有的,感受世界最好的方式就是看。

(4)你在這門課的計劃是什麼?參考一些學校的教學(美國本科中國軟體工程本科1美國大學軟體專業),你對這個課程有什麼期待?你打算怎樣度過這個課程?你想當助教麼?

 美國本科看完這篇部落格,我非常的震撼,想想我自己母校的大學教育,的確,差距不是幾年之內能夠彌補過來的。在我們學校雖然較為重視過程教育,但是所謂的重視過程教育也成了稀釋優秀與差勁之間差距的手段,很多時候是比較不公平的,平時分成了一種要比考試更容易得到的分數。很多情況下,學校的考試考的都是一些較為簡單的題目,根本不需要動腦子,記住學的那些東西,就可以算出來,這樣做的後果就是,兩個月以後,學生什麼也沒記住,就比如說,自動控制原理,這門課我獲得了99分,可以說是相當高了,但是當一年後的今天我想用PID來控制一個電機,也是費了巨大的力氣,剛開始還是什麼都不會的狀態當然這也不能怪學校,畢竟學校已經很努力了。我希望這個課程中能看到部落格裡說的那樣,啟發式的教育“注重自己推導和發現,甚至是一堂實驗課都像在完成一個完整的探索性研究。”而且國內授課都是死板的老師講授fact,學生記下來,偶爾遇到講的特別好的老師非常具有啟發性(我校高勇新老師),期望這門課有部落格中那樣多樣化的考核方式,趣味性非常高的課堂,充分展現出學生的想象力,我希望這門課也像部落格中所寫的那樣真正做到““臨時抱佛腳”絕無可能,而是每週都在用功”。

中國軟體工程本科1這位前人大神的總結,想著我以後也要寫這樣的總結,我不禁暗下決心,我一定要努力,一方面我不能給交大丟人,另一方面,我不能打自己的臉,至少在我自己這裡不能!看著大神在課堂上的收穫,我也有了自己的一些期許,和一些決心,就像學長說的:盡最大努力去做好應該做的事。另一個就是各種事情追求完美,再者我要記錄下每次學到的點點滴滴,成為一種成長的印記。需要在每次工程過後都要總結與分析,在嘗試中不斷提升自我。至少要到達老師對於一個學生的期許,因為之前我和這位學長一樣,每次都把自己當成一個不折不扣的程式設計師,總是覺得,最重要的東西是技術,是鑽研技術,但實際上,要做好一個團隊,光有技術是遠遠不夠的,我也要學會需求分析,學會怎麼當好一個PM,正真的學到如何進行軟體工程。

美國大學軟體專業對比起國內計算機課程來說,國外的教育先進性體現在瞭如部落格所說的那樣:美國的大學教育和中國的區別很大,就電腦科學專業來說,來了以後能強烈的感受到這邊對實踐的重視。回憶起我自己的幾個經歷,和部落格中的還是有幾分共鳴,產生了一些感想。剛上大一的時候,學校開了c語言課程,這課程雖然安排了很多課下的上機課程,最後還有大作業,我覺得課程本身沒有大問題,因為畢竟我最初的程式設計能力就是這麼來的,但是這個讓我有很多感觸的是,當時大片大片的同學什麼也沒學會,最後不是我們手把手教,或者直接把實驗報告給他們,他們拿去改,最後把實驗報告一交這課程也算是結束了,但這課導致的後續雪崩般的影響可想而知。後來資料結構課程,很多同學已經從想掌握掌握不了轉向不想去掌握,直接一改別人的實驗報告進行提交便可,以及後續的嵌入式實驗,自動控制實驗,數字影象處理,專案設計,所有的課程,把別人的實驗報告修改提交就行。最後自然到大四,什麼程式設計能力也沒有了。所以大學的第一門程式設計課十分的重要。另一方面原因是大家的大作業都是統一的,不像部落格裡那樣,自由選擇想做的東西,組成不同的團隊,有不同的分工,(大四專案設計這麼做了)但是之前這些同學所欠的這些技能已經無法讓他們完成了。我想如果從第一堂課就像美國大學那樣,特異性的大作業,十分給力的助教老師,最後我們專業的程式設計能力會不會大幅提升呢?另一件事就是,我有幸也在學校組建團隊做過類似的專案,這是我們當時的分工:

楊濤(我):嵌入式開發,以及人機互動系統實現,系統除錯,系統設計

塗志俊:伺服器後端開發,以及伺服器資料庫開發

曾浩倫:伺服器程式設計開發,資料處理

蔣暘陽:電路板設計,人機互動頁面設計

當時給中鐵十八局做一個智慧降水監控系統,我們各自都學到了很多東西,也像部落格中說到的那樣:他們會為了一個介面的細節和你爭論到臉紅耳赤,也會因為自己的一個錯誤一再向你道歉,會為了趕進度在週末主動熬夜,有太多的細節和難忘的回憶。我們也有很多的奇技淫巧,各種神奇的操作,想盡了一切辦法,那段時間可以說是進步最大的,所以我也明白實踐對學習的重要性,尤其是這件事,我希望課程中也有許多這樣的經歷,真的非常棒呢!

你想當助教麼?說實話,在此之前,實際上再看這篇部落格之前,我都沒有認為助教是如此的重要,甚至以前還錯誤的認為助教只不過是幫老師改作業的教學工具罷了,並且從未想過當助教,可以給自己帶來這麼多的好處,如果現在問我的話,我想說我想當助教。傳統的實踐課程中,助教只是幫助老師節省了替大作業評分的時間。但在現代的實踐課程中:助教可以說是深度參與了課程的建設,其中的功能便包括:與學生充分的互動,提供課程改進建議,為學生答疑解惑。因此一門好的課程與一個好的助教是分不開的,我很想當這樣的好助教,第二個當助教可以與優秀的人才共事,總所周知,與優秀的一起做事,自己也會變得優秀。

綜合上面我所說的這些感想,其實很多回答也在上面了,我在這門課計劃是大幅提升各項skill,尤其是程式設計能力和軟體工程能力,因此我一定要付出加倍的努力。另外,我對課程的期望是:多樣化的考核方式,趣味性非常高的課堂,充分展現出學生的想象力,我希望這門課也像部落格中所寫的那樣真正做到““臨時抱佛腳”絕無可能,而是每週都在用功”。同時我希望課程中也有許多這樣的實踐專案。最後,我很想當助教,一門好的課程與一個好的助教是分不開的,我很想當這樣的好助教,第二個當助教可以與優秀的人才共事,總所周知,與優秀的一起做事,自己也會變得優秀。

你目前的程式碼量是多少(列出語言和程式碼量,精確到100行)? 為了有資格入職一流的軟體公司/網際網路/人工智慧公司,需要多少程式碼量?從事高校教學科研工作呢? 

  目前程式碼的情況應該是這樣的:

語言 當前程式碼量 需要程式碼量(工程師) 需要程式碼量(教授)(我想達到的級別)
c 8500 50000+ 100000+
matlab 10000 50000+ 100000+
python 10000 50000+ 100000+

c++

100 50000+ 100000+
HTML 10000 50000+ 0
css 20000 100000+ 0
Javascript 5000 50000+ 50000+

 因為大一的時候剛進來,對什麼都感興趣,寫了很多網頁程式碼,大二也在寫,做了一些網頁專案,後來數模各種比賽和實驗,瘋狂用matlab,最後專案上很多用的python,然後實驗都用python寫了,也自學一段時間c++寫了幾個例程玩了一下,c的話大一c語言課程,和大二資料結構課程都是較大的工程,還有寫了很多嵌入式c,本來還有verilog的但是,看來以後用不上了,就沒有寫上去。

你打算平均每週拿出多少個小時用在這門課上(時間包括上課時間)? 如果你在前面說過,你在前兩年浪費了很多時間,現在要發奮趕上,請問你打算:

我打算第一要務是課題組,第二要務是這門課,平均每週至少也得花個30-40個小時在這門課上(估計的),至於啥時間嘛,時間是擠出來的,一有點時間就可以用來放在這個課程上面,畢竟每門課程我都會非常認真的對待。當然是D: 比以前課要多很多,直到達到目標為止。我一向是不達目的誓不罷休的人,前兩年如果浪費了,自然要補回來,出來混遲早是要還的!

你計劃在本課程結束時,完成多少程式碼量?每週應完成多少程式碼量?

我計劃在本課程結束時,完成3000+的程式碼碼量,細數一下一個專案至少也得是700/800行的,那看有多少個專案了,這個數是至少,具體要看有多少東西可做,一般我對寫程式碼這種東西都是,上不封頂!能多寫一些儘量多寫一些。

(5)你現在的道路很多前人曾經走過,他們有什麼經驗教訓?請從部落格末尾的文章列表任選一些閱讀,針對其中一篇發表感想。

 我選擇了一篇很有感情共鳴的學長寫的部落格:徐宥:掉進讀書的兔子洞 和這位大牛一樣我也有過迷茫,也有過相似的遭遇,所以我覺得大牛的經歷還是十分有借鑑意義的,和這位大牛一樣,一本書改變了我的人生軌跡,我小時候不覺得讀書是一件有意義的事情,於是上課也沒認真聽過,作業也是糊弄交差,平時語文數學考個70來分我就十分的滿意,當時正值小學圖書館捐贈,靠捐來的書建起來我們的圖書館,於是學校組織學生去圖書館裡看書,我們圍坐在一個大圓桌之前,老師把書往桌子上一放,讓我們自己選來讀,當然最受歡迎的故事書,漫畫書都被動作快的同學拿走了,當時的我對於書本毫無興趣,自然動作慢,於是我從剩餘的書本中隨便的挑了一本不起眼的書,這本書不是別的,是一本奧數書,當時的我不知道這是啥,學校裡組織奧數比賽,也不會讓我們這種中下游學生去,自然不知道。我看著,也沒有其他的事情,就開啟來隨便看看,沒想到裡面的各種問題深深吸引了我,這比數學課本可有意思多了,印象最深的是裡面的裂項公式,要知道這對一個三年級學生來說,那可就神奇了,於是每週我必須要做的事情,就是去圖書館看這本書,為了做出來,和搞懂裡面像裂項公式這種奇怪的公式,我就不斷的自學起了數學,那個學期之後我成績一下就好了起來,數學考了98分,於是後來就形成遇到難題我就特別興奮,無論如何也要解出來,同樣的大二的時候我也有極度自負的情況,當時考試考到了專業第三,並且我已經開始和班主任老師開始做專案,老師的認可,同學的吹捧,4.0的GPA各種各樣的光環匯聚在我身上,我飄了,我都忘了自己是誰了,越是驕傲就越是放縱,大三實際學分成績到15名左右的我,又陷入到極度自卑中,從部落格中,但我從自己的經歷中也學會了不論怎樣,不論發生了什麼,讓自己成為一個更好的人,總會帶來好運的!最後選擇我特別喜歡的一句話作為結尾:

自己選擇的路,就算是跪著也要走下去!

3.提有質量的問題

Q1:P48 第三章 3.2軟體工程師的職業發展

 書中介紹了幾種證明個人能力的辦法和模型,例如考級,Steve McConnell,大公司版本等,有很多方法是很早以前的,對待迅猛發展的IT行業,這些”過時“的方法還適用嗎,如果適用的話,那他們又是怎樣適應目前這與日俱增的資訊量和知識量,還有不同的時代特點,而且很多是隻有定性沒有定量的方法,對於這樣的問題只需要進行定性分析嗎?軟體工程隨著時代的變化必然會產生新的學科新的方向,新的領域,那這些衡量版本是否會失去了衡量的價值?軟體工程師在整個團隊中的任務分工都是不相同的,但是卻用同樣的測試方案會不會不準?還有就是書中只告訴了我們評估的方法方案,那我們評估的結果要如何提高呢?還有就是有沒有可能將這些分級方案放到課程打分上來,讓軟體工程課程打分更加科學多樣呢?

Q2:P72 第四章 4.5結對程式設計

 書中講了很多例子例如跳舞等例子來說明結對程式設計並非一朝一夕能夠練成的,練成以後就威力無窮,第一次難免會遇到許多的問題和不解之處,書中也給出了一一解答,但是我還是有一些疑問:極限程式設計是對兩人水平差異性有要求嗎?我想了一下假如一個啥都不會,就純粹是在教學了,所以我覺得肯定是有要求的,那麼這個要求是怎麼樣的呢?是兩個水平相同的人結對程式設計效率高,還是稍有差異效率高?還是完全取決於兩個人的差異(畢竟是程式碼複審的極限程式設計),怎麼樣的合作才是極限程式設計效率最高的合作?(我覺得這個問題非常有意思)還是就像找女朋友一樣需要找一個合適的黃金搭檔呢?我奇思妙想了一下,有沒有可能做一個輔助程式設計師的結對程式設計AI program?這樣的話一個人也能做到結對程式設計,而且成本還低,還能做一些個性化定製。

Q3:P85 P90 第五章 5.2軟體團隊的模式 5.3開發流程

 書中講了各種各樣的團隊模式和各種各樣的開發流程,讀完之後我依然有一些疑問:我覺得兩者有著非常緊密的聯絡,我認為軟體工程就像做菜一樣,團隊裡面的人就像食材一樣,各有各的作用,而各種各樣的團隊模式就像各種各樣的炊具,而各種各樣的開發流程就像做菜的工序一樣,我覺得食材(人才),炊具(團隊模式),以及工序(開發流程)要互相配合好才能做出美味的菜餚(軟體),是不是這些開發流程與團隊模式毫無關係呢? 如果有關係,那麼各種各樣的團隊模式又與各種各樣的開發流程會產生怎樣的火花呢?那麼什麼樣的專案人適合怎麼樣的開發模式,開發流程的組合呢?那麼在使用了不適合的開發流程和團隊模式會導致怎麼樣的效果呢?如何及時發現我們的團隊模式或者開發流程存在問題呢?

Q4:P231 第十二章 使用者體驗和質量

 書中這章介紹了各種各樣的改進使用者體驗的例子,其中印象特別深刻的是GE公司總裁傑克韋爾奇的核磁共振機的故事,我一直認為作為產品,質量是第一位的,但在故事裡放棄質量追求使用者體驗的情況卻取得了成功,但會不會是因為質量的下降恰好是使用者可以接收的範圍,假如影象完全的失真,我覺得這樣的改進應該是不會成功的,那作為一個決策者要去重視哪一方面的重要性呢?書中韋爾奇是一面之詞,1000個人就有1000個哈姆雷特,他所說的使用者體驗的改進可能是對應其他人使用者體驗的下降,那如何權橫這就是大多數人使用者體驗好的的改善?工程師要如何不斷提升自己軟體的使用者體驗而不受個人偏好的影響?有沒有可能做一個權衡一個軟體各方面的優勢雷達圖,用改雷達圖表現出這款軟體各個方面的評價,然後正真的去統計這些產品的後果,為決策有參考意義。

Q5:P319 第十六章 只先一步

 書中這一章可以說顛覆了我很多原來錯誤的想法,但是還有有些疑問:依然不懂為什麼大眾對創新會產生這樣的一條鴻溝,它就像一個零界點一般,剛剛大於一點點的話就可能成功,而小於的話就一定會失敗,這種鴻溝產生的原因是什麼?為生麼就會在那完整的斷開,那我們是否就要問怎麼尋找這個鴻溝?怎麼尋找這個創新接收的最佳時機?假如這個時機是可以確定的,是否意味著非創新者可以投機取巧竊取創新者的勞動果實?我理解的是剛開始使用者會很少,然後隨著時間的遷移,使用者會越來越多一直到這個東西過時了,使用者一點一點減少,但為什麼會出現鴻溝是個有意思的問題,另一個問題就是文中說成功的公司創新只是維持技術,但是不管是google還有facebook,都集中力量做AI,請問這麼理解這件事?