极客时间《软件工程之美》学完感
最近花了將進兩個多月的時間,把極客時間上的專欄《軟件工程之美》專欄學完了,同時也把相應的配套書本
,鄒欣的《構建之法》,讀完了。學完這個專欄,讓我獲益良多。
?
專欄《軟件工程之美》和配套的書本《構建之法》,適合已經有編碼經驗工作了三四年的程序員,如果是剛畢業的
程序員可能比較無感。專欄里提到的很多內容,都是要經歷了才會有比較深的感悟。
?
整個專欄的內容比較多,有 54 講,涉及到軟件工程的方方面面。根據我個人的理解,對內容進行了重新劃分,
基礎部分、開發過程和個人成長三個部分。具體看下面的圖。
?
看一下上面的圖,發現我們在日常開發中遇到的問題都會有涉及。
?
下面我會挑一部分出來將一下
?
首先是基礎部分
?
基礎部分包含工程思維和產品意識。
軟件工程的誕生是為了解決軟件危機,它的目的在于構建和維護高質量的軟件。
說到工程,我們會想到工地上的建筑,它們是建筑工程。軟件工程和建筑工程都叫做工程,它們有著很大相似之處,
例如它們的都是計劃、設計、開發(施工)和發布(竣工)的階段。以前做開發的時候總是想著自己開發的部分,沒有
想過產品需求評審、測試和發布這些東西,總覺得它們和開發的關系不大。這種想法是有問題的。
?
工程思維的核心是能在整體而不是局部的角度去看問題。像一個版本迭代,就是一個項目工程,整個迭代過程,
需要需求評審、技術開發、測試接入、最終發版。前期需要需求評審,然后定工期,定計劃表,開發、美術都
按計劃表安排工作。中間還會涉及需求變更、也有因為技術難度大延期的。最后測試反饋 Bug, 進行修改到最終發版。
這樣的一個迭代過程涉及非常多的過程,所以,可以利用工程的思維,用整體的角度去看待整個迭代過程。
?
另外作為一個開發人員不應該只是盯著自己開發的部分,還需要考慮對整個迭代工程的影響。例如發現最后時間不夠、
離發版時間越來越近,這個時候就需要把一些需求砍掉, bug 也是按優先級去解決,有些影響不大的 bug ,可以放到
下個版本去解決。
?
作為一名程序員,平時做開發的時候要多想想,我這做是否對用戶更加友好一些,而不僅僅是為了炫耀技術。技術的
價值在于它能提供商業價值。
?
開發部分
?
開發部分又分為開發前、開發中和開發后。
開發前我們會涉及到需求的分析、評審,在分析的時候多想想這個需求合不合理,有沒有更好的實現方式,多問一下
產品經理這個需求是為了解決什么問題。想一想它的表層需求、深層需求和底層需求是什么。在開發周期比較緊的時候,
要學會對需求的優先級進行劃分,不能眉毛胡子一把抓,能按優先級去完成相應的需求。
?
在開發的工程中,程序員會面臨各種各樣的問題,例如需求變更了怎么辦、出現了 Bug 要怎么解決、怎樣提高開發效率
等等這些問題。在專欄里面都會有詳細的論述。
?
開發后的階段往往是我們比較容易忽略的,特別是項目復盤。進行良好的項目復盤,可以把經驗變成能力。對項目進行
復盤,通過分析、討論開發總出現的問題,進而總結成功經驗,吸取失敗的教訓,提升團隊能力。
?
個人成長部分
個人成長部分有論述一個軟件軟件工程師的核心競爭力和成為架構師的能力。
在專欄中有一張圖說明軟件工程師競爭力金字塔。
-
最底層、最基礎的就是學習能力,通過學習能力,快速掌握新技術;
-
中間是解決問題的能力,充分利用學到的技術,去發現問題、分析問題和解決問題;
-
頂層是影響力,是核心競爭力的綜合體現。
?
在這篇專欄文章中,提出幾個針對各入非常的建議,我羅列一下
不要把自己綁死在一門或一個框架上,而是訓練自己的學習能力,讓自己可以擁有快速學習
? ? 掌握新技術的能力;
?? ?
? ? 2. 日常工作不僅僅是實現一個個的功能,做一個個的項目,而是在這個過程中,去鍛煉和提升
? ?發現問題、分析問題和解決問題的能力. 這樣才能最大優化工作經驗,而不是機械重復沒有積累;
?
? 3. 在工作中,不僅把事情做成,還要把事情做好;不僅是自己成長,還要幫助其他人成長;最大
? ? 化的利用好所在平臺和行業的經歷,轉變成自己的經驗和影響力。工作之外,多分享,打造自己的品牌。
?
總結
極客時間的《軟件工程之美》配合鄒欣的《構建之法》一起學習,給自己帶來很多收獲。這些收獲相對
于編碼的硬技能,它是”軟“技能。作為一個程序員,不能要有良好的編碼能力,也要有一些軟技能。就像
一個人想要走路,必須需要兩條腿一樣。
?
附
?
?
?
?
?
?
?
?
總結
以上是生活随笔為你收集整理的极客时间《软件工程之美》学完感的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: AutoCAD2004下载AutoCAD
- 下一篇: 2000G视频资料送带资源账号