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