1. 程式人生 > >現代軟體工程 第一週部落格作業 達內,青鳥!你們使多少花朵誤入歧途!

現代軟體工程 第一週部落格作業 達內,青鳥!你們使多少花朵誤入歧途!

個人介紹

       大家好,我是來自西安交通大學自動化專業的大四學生,很高興能和大家在一起學習。說到優勢,我覺得自己確實沒有什麼拿得出手的過人之處。不過不談優勢還可以談愛好嘛,平時我比較喜歡踢球、看球。我認為足球不僅可以增強個人的勇氣和鬥志,它更是一項講究紀律性和團隊精神的運動。

現狀、經驗和計劃

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

        填報志願的時候,我是懷著獻身於祖國機器人行業的心態選擇的自動化專業,那時我以為鋼鐵生命會是這個社會的未來,不過進入大學以後,我感覺還是人工智慧這個概念才是學術界和工業兩界的寵兒。我不大喜歡太過抽象和虛無的東西,所以我選擇了工科專業,希望能做一個身懷技術可以解決實際問題的工程師,我認為工程師就應該投身社會最熱門的領域,急社會之所急,解決社會和人民提出的問題,所以我對投身到人工智慧領域沒什麼猶豫。能獲得來MSRA聯培的機會,我感到十分幸運,MSRA學術氛圍濃厚,而且聚焦於解決實際問題,非常符合我的學術理想。自動化專業的人通常號稱軟硬體兼修,文武雙全,很慚愧,我個人在軟硬體方面的造詣都很淺薄,尤其是自己的程式設計能力各方面離一個合格的IT專業畢業生差距還是蠻大的,希望能通過不斷地學習儘快迎頭趕上。

Skills 課前評估 課後預期
Programming: Comprehension 2 6
Programming: Design 1 4
Programming: Implementation 2 5
Programming: Communication 1 5
Programming: BigData 1 5
Personal Software Process:個人原始碼管理 1 6
  • 程式的理解方面,可以通過平時多讀程式碼,仔細推敲來訓練自己,用量變催生質變;
  • 程式的架構設計和實現是我最想要提高的,我覺得自己程式設計理念和程式設計習慣不太成體系,下一步計劃通過閱讀專業書籍和專案的實踐來提高;
  • 剩下的三個能力是我認為是一個合格的科研工作者應該具備的基本技能,我希望可以通過理解概念、動手實踐和向同學老師請教等途徑提高。

(2)部落格的心得:

 a)你為何要來上課並且認真參與

     我對這篇部落格裡的一部分觀點深有同感,認真聽講確實是一種很了不起的能力。

     我認為能夠做到始終認真聽講的人至少有以下幾個優點:首先,他能全程跟隨老師的思路,說明他的專注力很強;其次,能夠積極參與老師的課堂活動,說明他備課認真,對待知識很尊重,對自己十分自信;最後,課上認真聽講的人最懂得利用時間,他的課下時間一定更加精彩而有意義。我覺得這種對待知識的態度和學習的習慣是我需要學習的。

      至於文章中所說的課程有用無用不是一個大學生的格局能判定的我不是特別認同,我覺得如果一門課老師不能跟學生說明白為什麼要開這門課,學生們到畢業了還不知道這門課有什麼用,那這門課是很可悲的,即使考到了高分,短時間內掌握了規律,這門課對我們以後的發展也不會有什麼幫助。

c)在工作中,我們要引用文獻,參考別人的資料,在別人工作的基礎上繼續開發, 這些活動和抄襲、剽竊的區別是什麼?

     我認為二者的區別在於動機和結果。

     如果引用別人的文獻和工作是為了支撐自己的論點,簡化自己不必要的工作,並且工作的結果有所創新,並且說明了被引用人的貢獻,這叫做引用;

     如果引用別人的工作是為了複製別人的工作以達到自己的目的,沒有創新,沒有自己的東西,就算做抄襲。

(3)未來計劃

      我目前的想法是未來從事學術研究,在科研的道路上走得越遠越好。因為創造新東西總比學習新東西有意思,做自己喜歡的事情總比做不得不做的事情快樂。

      相比於不從事學術研究的同學,我求學的時間要更長,會更晚一點實現經濟獨立;但我以後從事自己喜歡的領域的概率也會變大,事業的穩定性也會更高。

      要成為一名合格的科研工作者,我現在還差得很遠,我希望在本學期能夠在mentor的指導下,掌握科學研究的方法,提高自己的學術素質和工程實踐水平,為以後的博士生涯打下堅實的基礎。

(4)因為是非CS本科出身,我對自己的程式碼量和程式設計水平並不是十分自信,因此對軟體工程這門課我是懷著敬畏和膽怯的。我希望能通過這門課瞭解到真正的程式設計師是怎樣工作的,我離寫出專業的程式碼差距還有多大,我也非常期待學習到各位同學和老師們規範高效的程式設計習慣和嚴謹科學的程式架構思想。

       我打算利用上課時間和週末時間來學習這門課程,時間長短以我能達到這門課的目標為準。

(5)我選讀了《達內,青鳥!你們使多少花朵誤入歧途!》這篇文章,讀完之後我感到很高興。《構建之法》16章也提到,一般民眾乃至技術人員都不喜歡新東西,我辛辛苦苦地考上大學,學習了兩年數學和程式設計基礎,才摸到程式設計的大門,培訓學院幾個月的時間就能讓一群小白達到和我一樣的水準,我對這種創新教學深感不安。我很慶幸這種創新方式不那麼奏效,並不會讓我長久的努力變得可笑,同時我也對自己的專業基礎更加有信心,更能沉下心來打磨自己的工程能力。

 

提有質量的問題

問題一:P45 第3章

那麼,初級軟體工程師如何成長呢?我認為有以下幾種成長:

……

3.對通用的軟體設計思想和軟體工程思想的理解

      我對軟體設計思想以及軟體工程思想的概念並不是特別清楚,也不太明白怎樣通過學習好的思想來提高自己。第5章“團隊和流程”中提到的像瀑布模型、RUP等開發流程算不算是軟體工程思想呢,第11章提到的分析設計方法算是軟體設計思想嗎?我讀完後感覺不同的開發流程、設計方法適用的工程場景是不同的,最適合專案的流程似乎更符合“更好的思想”這個概念。那麼通用一詞又如何理解?如果是指放之四海而皆準的設計思想,我覺得似乎有點“銀彈”傾向;如果是指大家常用的各類思想,不分場景和資源約束的比較兩種思想的好壞,我覺得沒什麼意義。   而且我還覺得像Team Software Process這種開發原則也可以稱之為思想,這種思想是需要我們遵守並且努力達成的目標。最後我對於怎麼評價一個工程師有沒有思想、境界的高與低仍然有所迷惑。

問題二:p53 第3章

3.3.1 職業發展——考級之路

      我覺得協會或是企業組織的執業資格考試一定程度上代表了行業對一個程式設計師的認同標準,那麼這種考試是不是真正的反映了程式開發人員的基本素質呢,企業真的要求我們要有這種素質嗎?除此之外,我還有別的途徑可以準確地衡量自己的程式設計水平嗎?

問題三: p94 第5章

5.2.8  爵士樂模式

……

這看上去跟“敏捷的開發模式”有點類似。

     閱讀過爵士樂模式的特點,我感覺這種模式和敏捷流程的相似度幾乎沒有,不知道類似點在哪裡。由於在網上沒有搜尋到應用這種模式的例項,我根據自己的理解談談對這兩種模式的看法。從特點上來看,爵士樂演奏時沒有譜子,而敏捷流程雖然講究保持簡明,但是仍然堅持 Product Backlog、Sprint Backlog、Sprint三步走的策略來更新迭代開發過程,是一種非常注重策略的流程;爵士樂沒有現場指揮,成員們放飛天性,但敏捷流程是以有進取心的人為核心的團隊,講究自我管理,第六章6.3節也強調了一個好的Scrum Master對於專案成功的關鍵;爵士樂的模式,“架構師”吹出主題,其餘人員各自發揮,最後”架構師“迴應主題,而敏捷開發十分注重面對面的交流和工作進度的共享,講究互相幫助,紀律性遠超爵士樂模式。

      引用邁爾斯·戴維的對爵士樂模式的評價:

強調個性化的表達、強有力的互動,對變化的內容給予有創意的迴應

     我覺得雖然都強調應對變化,爵士樂模式似乎只是發揮了成員的主觀能動性,期待讓平時的編曲訓練風格在最終的作品中體現出來。而敏捷流程更像一個心意相通的樂隊,在指揮的帶領下,有效率地應付既定樂譜中變化劇烈的節奏和旋律。不知道老師認為的“類似”應該怎樣理解。

問題四: p106 第5章

3.不同的團隊模式如何影響團隊績效的評估?

       這個是練習與討論的第三題,我覺得很有啟發性,我由此聯想到,在專案過程中,出於效率和質量的考量,專案的不同成員樂意在不同模式下工作,不計較分工和角色的互換,大家的地位是平等的,那麼在這樣的團隊氛圍中,怎麼衡量專案中兩個人的貢獻度大小呢?如果功勞分配不合理的話,我認為會影響團隊的和諧,管理層都是怎麼解決這樣的問題呢?

問題五: p347 第16章

       “迷思之五”中物理學家伯納斯發明WWW協議、傑克馬建立阿里的例子我認為不足以支援“領域專家沒有領域外的創新者有創意”這個觀點,我認為伯納斯背靠公司,有相應領域的資深專家同事協助是他發明此協議的重要原因,行業的門外漢一天能想一百個點子,被有專業背景的同事驗證可行性後做出來,這好象不足以說明伯納斯的創新能力有多強。馬雲在建立阿里巴巴之前已經有了一定的電子商務運營經驗,他的成功我相信和他在商界鍛煉出來的敏銳洞察力和戰略眼光有更大的關係,而非他善於在行業外創新的能力。


 

《構建之法》第三版 p233 “移山公司開發流程圖”有一處判斷框畫得不太準確,判斷條件沒加問號,出口處缺少否定詞