? ? ????這周推薦了這就是軟件工程師,這本書通過整合多個(gè)正在工作又或者有聲望的工程師的總結(jié)向我們展示了一個(gè)程序員的不同階段和職業(yè)素養(yǎng)。
軟件工程師的四大階段
1.新手階段:執(zhí)行力,上級(jí)交待的任務(wù)和工作認(rèn)真完成
2.進(jìn)階階段:設(shè)計(jì)能力,提出和實(shí)現(xiàn)新的需求
3.高手階段:融匯貫通 架構(gòu)師能夠站在整體去審視一個(gè)項(xiàng)目
4.大神:沉淀方法,產(chǎn)生方法論,帶領(lǐng)一個(gè)領(lǐng)域的前進(jìn)
目前我們大部分都處在第一個(gè)階段——新手階段,需要保證自己的代碼量和基礎(chǔ)內(nèi)容的學(xué)習(xí)
程序員的特點(diǎn):普世低調(diào)的創(chuàng)新精神、理想主義的工匠精神
公司的核心成員
1.創(chuàng)始人/合伙人:團(tuán)隊(duì)中的頂梁柱。做出貢獻(xiàn),帶動(dòng)團(tuán)隊(duì),創(chuàng)新優(yōu)化,擁有前瞻能力,能夠抓重點(diǎn)
2.貢獻(xiàn)者 做事有熱情,推進(jìn)工作的進(jìn)行。 探路能力、貢獻(xiàn)方法、解決難題、提高標(biāo)準(zhǔn)
3.行家:手足力量? 做事有經(jīng)驗(yàn),有判斷和決策能力。降低成本、提升效率、防火能力(發(fā)現(xiàn)并解決問題)
這三類人是需要在工作中根據(jù)個(gè)人性格特點(diǎn)選擇朝哪一個(gè)方向轉(zhuǎn)變。持續(xù)學(xué)習(xí)是程序員的剛性需求,新技術(shù)層出不窮,需要我們掌握和學(xué)習(xí)
軟件工程師的工種:
1.交互
2.系統(tǒng)
3.算法
4.數(shù)據(jù)分析
5.測(cè)試
6.運(yùn)維
未來軟件行業(yè)可能會(huì)消失,因?yàn)楝F(xiàn)在少年兒童編程的普及——要有憂患意識(shí),很多小孩就可以寫出優(yōu)質(zhì)的代碼和掌握基礎(chǔ)的編程技巧了
入行的準(zhǔn)備
1.選擇平臺(tái)上:
主要考慮公司做的事情是否能適應(yīng)未來,該公司是否是技術(shù)驅(qū)動(dòng)的以技術(shù)為主導(dǎo)的。這樣能夠讓我們保持學(xué)習(xí)和了解新技術(shù),做更有挑戰(zhàn)的工作,以防被市場(chǎng)淘汰
2.知識(shí)學(xué)習(xí):
知識(shí)都是死的,只要想學(xué)習(xí),投入足夠的時(shí)間和精力總有一天會(huì)懂的
3.代碼規(guī)范:
按照?qǐng)F(tuán)隊(duì)規(guī)定的規(guī)范進(jìn)行編碼
編程原則:
1.避免重復(fù)性原則:用一種方式解決多種問題 DRY原則
2.單一職責(zé)原則:組件化,各司其職
3.高內(nèi)聚低耦合:各個(gè)組件聯(lián)系減少(解耦)
4.開閉原則
進(jìn)階階段
關(guān)鍵能力:設(shè)計(jì)能力
需求分析的要點(diǎn):1.明確問題的邊界條件 2.關(guān)注不可預(yù)期案例
設(shè)計(jì)需要抽象能力:從眾多案例、實(shí)例中歸納總結(jié)出通用的方法和規(guī)則,即不斷對(duì)信息進(jìn)行過濾,分離出本質(zhì)
這個(gè)階段基本上對(duì)各個(gè)業(yè)務(wù)邏輯都比較熟悉,能夠獨(dú)當(dāng)一面去解決問題了,更多的是完成一個(gè)框架后,細(xì)節(jié)部分交給團(tuán)隊(duì)去完成。并且能夠精準(zhǔn)的發(fā)現(xiàn)潛在問題和迅速提出解決方案
學(xué)習(xí)技巧:
1.用知識(shí)樹學(xué)習(xí)。知識(shí)多且雜,構(gòu)建知識(shí)樹能夠很好的構(gòu)建知識(shí)點(diǎn)之間了聯(lián)系,復(fù)習(xí),回顧也很方便
2.探索知識(shí)緣由。挖底層源碼、原理
3.掌握方法套路。授人以魚不如授人以漁,不要為了寫案例而寫案例
行業(yè)清單
推薦書籍:《程序員修煉之道》——如何成為一名高級(jí)軟件設(shè)計(jì)師
《隱匿在計(jì)算機(jī)軟硬件背后的語言》——了解計(jì)算機(jī)工作原因
《算法圖解》
.