個人感受部分:
01.?過去的我對自己的職業沒有一個規劃,認為讀大學就是拿畢業證,至于以后找到什么樣的工作從來沒有考慮過。在拿到一個軟件作業時,總是在設計階段就把它想得特別完美,想讓他沒有任何出錯的做出來,不分主次,想解決所有的問題。
02.?如果沒有職業規劃,每天過的就像在混日子,渾渾噩噩,無所事事。不分主次想解決所有問題,到最后只能是連最基本的項目也不能完成,一直處于自己的設想中,當設想破滅,就得焦頭爛額,忙東忙西,還達不到效果。
03.?下次拿到任務時,一定要認真分析,杜絕分析麻痹,一定要分清楚主次。哪些是我的主要功能我必須認真面對,次要的方面放在后面解決。
?
讀后感:
上一篇讀后感中詳細介紹了前言和概論,對本書的主要內容沒有進行很多的闡述,在這篇讀后感中將會仔細的分析和體會主要內容。
看了之前的部分,其實我們已經摩拳擦掌,躍躍欲試的想要實際寫一個軟件了。但是,只有一腔熱血是不夠的,還必須保證在此之前,了解一些基本概念的技術,即單元測試、回歸測試和效能分析工具。通過閱讀我大概了解了這些技術。
1.單元測試。顧名思義,將自己的代碼分解成一塊一塊的部分進行測試,確保這一部分沒錯后再進行下一步的測試,這樣就可以很快的找出錯誤所在單元,有目的性的進行修改代碼,修改效率將會大大提高。但需要注意的是,代碼的作者是最了解代碼目的、特點和實現的局限性。所以,寫單元測試沒有比自己更合適的人選了,最好是在設計的時候就進行測試。
2.效能分析工具。讓自己的程序跑的又快又好,是每一個程序員都夢想的事兒,算法復雜度比別人少一個數量級的話,是一件很值得驕傲的事情。
3.個人開發流程。一個軟件工程師接到一個任務后應該如何做,這就要有一套個人開發流程來指導你。CMU的專家們針對軟件工程師有一套自己的模型,叫做PSP模型。
4.實踐-設計有實際意義的軟件工程作業。實踐是整本書的重中之重,當然,設計作業不是學生的工作,但是如何實踐就是我們的任務了。不能空談代碼,紙上談兵,應該實打實的去完成一個軟件工程項目,才會明白和嘴上說的軟件完全是兩回事
了解大概技術后,我們就要開始自己的生涯了。我相信絕大多數軟件工程的學生今后也要從事寫代碼的工作,所以我們一定要注重個人能力的發展,在大學階段不斷提高自己。那么,如何才能衡量一個軟件工程師的技術和能力呢?衡量的參數有哪些,只有了解這些,我們才能看到初級工程師如何成長。書中指出幾點衡量的標準:a.項目有多大?b.花了多少時間?c質量如何?d.是否按時交付?作者認為一個初級的程序員有以下幾種成長:1.積累軟件開發相關的知識,提升技術技能。2.積累問題領域的知識和經驗。3.對通用的軟件設計思想和軟件工程思想的理解。4.提升職業技能。5.實際成果。
畢業之后,大多數工程師都要在團隊的環境中工作,怎么樣才是一個合格,甚至優秀的隊員呢?我十分認同作者的看法,因為在我們自己的結對開發和團隊開發過程中,對隊友的期望和表現與作者不謀而合,深有體會。團隊對成員有以下要求:交流、說到做到、接受團隊賦予的角色并按照角色的要求工作、全力投入團隊的活動、按照團隊流程的要求工作、準備、理性的工作等等。人非圣賢,作為剛剛入門的軟件工程師,我們一定存在著很多的思維誤區:分析麻痹、不分主次,想解決所有的問題、過早優化、過早擴大化/泛化。其中我感覺在自己身上有第二點的問題,不分主次,想解決所有的問題。在進行軟件開發時,恨不得自己的軟件就是最完美的,在設計階段就實現所有的問題,最后經常導致項目延時,讓我很迷茫。
我們都朝著靠寫代碼生存,這就涉及到了職業發展問題。21世紀以來,中國大陸高校每年招收六百萬大學生,其中大約百分之十是在學習各種it相關的專業(計算機科學與技術,計算機工程,計算機軟件等)。那么他們都是以什么樣的心態對待這個職業的呢?作者給我們列舉了人們對待職業的態度的幾種等級:1.臨時的寄托或工作。有些人因為專業調劑來到這里,根本就談不上熱愛,只是需要一個文憑來作為敲門磚,有些人是臨時找到這樣一份工作,并不打算做長久,他們就處于低動力,低技能的狀態。2.工作。作為一個人來說,我們都是現實一點。我們離開了父母的庇護,都得尋得一份工作來養活自己,甚至養活家人。一些人留在這個職業里,只不過是因為他不會做別的,如果有別的營生賺錢,那就會跳到別的地方去。3.職業。在工作的基礎上,如果有足夠的職業道德和職業規劃,那么工作就是一份職業。只有在這個層次上可以開始談有意義的“職業發展”。4.投身的事業。把軟件項目相關的目標作為長期的承諾,碰到困難也不退縮,一直堅持到完成任務。5.理想的呼喚。一些人覺得這是理想的呼喚,通過軟件可以改變世界,他們主動尋找機會,實現自己的理想,他們把寫代碼當做了一種信仰,不再是養家糊口的工具。
第四章和第五章分別講述了兩人合作和團隊開發。我們這學期的任務就是一個兩人合作的地鐵查詢系統和小組開發一個app。我知道結組結對對軟件開發來說的重要性,分工合作如果流暢,將事半功倍,代碼效率大大提高。比如兩個人合作,一個人擅長寫前臺html、css、js代碼,一個擅長后臺連接數據庫處理數據的代碼,這樣分工合作的話,軟件就會完成的快。最重要的一點我認為是兩人或幾人結對開發,可以互相激勵,大家一起努力,也可以給自己帶來信心,共同進步。
最后作者給出了一個新的概念“敏捷流程”,在這之前我從來沒有聽說過的名詞。敏捷開發以用戶的需求進化為核心,采用迭代、循序漸進的方法進行軟件開發。在敏捷開發中,軟件項目在構建初期被切分成多個子項目,各個子項目的成果都經過測試,具備可視、可集成和可運行使用的特征。換言之,就是把一個大項目分為多個相互聯系,但也可獨立運行的小項目,并分別完成,在此過程中軟件一直處于可使用狀態。希望自己能在后面的項目中真正理解敏捷開發,而不是僅僅明白定義。
?