2018-10-19 10:20:17來(lái)源:搜狐
What
軟件工程師的職業(yè)生涯要?dú)v經(jīng)以下幾個(gè)階段:初級(jí)、中級(jí),最后才是高級(jí)。這篇文章主要是講如何通過(guò)10個(gè)步驟助你成為一名高級(jí)軟件工程師。
Why
得到更多的報(bào)酬!順帶問(wèn)一句,你的年終獎(jiǎng)有著落了嗎?因?yàn)槟愕男剿畷?huì)隨著你水平的提高而增加
提升你的職業(yè)生涯。成為了高級(jí)軟件工程師之后,就可以朝著架構(gòu)師、團(tuán)隊(duì)負(fù)責(zé)人、CTO 等職位前進(jìn)
歷經(jīng)更大的挑戰(zhàn)。隨著你的成長(zhǎng),各種影響力也會(huì)提高。
How
軟件工程是很難的。這一行業(yè)在不斷變化中,所以你必須緊跟它的步伐。你必須不斷地投入時(shí)間和精力,因?yàn)槟阈枰獙W(xué)習(xí)的東西總是比你能吸收的多。很多新手工程師甚至都不曾意識(shí)到他們?nèi)绻胍实切袠I(yè)的高峰,要學(xué)習(xí)的東西、要付出的努力得有多少。不過(guò),不用擔(dān)心,下面我將指出一條“明路”有助于你成為一名 高級(jí)軟件工程師。
步驟0:選擇你的道路,堅(jiān)持下去!
做一件事,就要把它做好。——Doug McIlroy《Unix Philosophy》
關(guān)于這一點(diǎn),我真的是強(qiáng)調(diào)得不能再?gòu)?qiáng)調(diào)了。選擇好你將與之并肩作戰(zhàn)的專業(yè)和技術(shù)堆棧非常重要。堅(jiān)持不懈,不要分心。至于應(yīng)該怎么做請(qǐng)看下面:
選擇專業(yè)。也就是你想做的事情。例如:Web 開(kāi)發(fā)、移動(dòng)開(kāi)發(fā)、DevOps 等。
選擇專業(yè)中的實(shí)用技術(shù)。例如:如果你選擇了 Web 開(kāi)發(fā),那你就需要在 Ruby on Rails、Python、Django,Java 和 MEAN 等之間做斟酌。如果你選擇的是移動(dòng)開(kāi)發(fā),則需要在 iOS 和 Android 等之間做出選擇。
堅(jiān)持下去,直到掌握這門技術(shù)。
我的意思并不是說(shuō)除了你的主要專業(yè)以外,你就不必熟悉其他的了。那種首屈一指的軟件工程師通常對(duì)其他的編程語(yǔ)言和技術(shù)都非常了解,當(dāng)然首先他們對(duì)他們自己的主要專業(yè)了解得非常剔透。
當(dāng)你確定好主要專業(yè)之后,接下來(lái)要做的就是學(xué)習(xí),閱讀所有相關(guān)的書籍、練習(xí)各種必要的技能,這可能需要很多年的時(shí)間。但是千萬(wàn)不要?dú)怵H,一步一個(gè)腳印,一個(gè)一個(gè)攻克難關(guān),量變才能達(dá)到質(zhì)變。關(guān)于技術(shù),我的推薦是:Ruby on Rails 之于 web 開(kāi)發(fā),iOS 之于移動(dòng)開(kāi)發(fā)。這是我是以一個(gè)過(guò)來(lái)人的身份告訴你的寶貴經(jīng)驗(yàn)。
不過(guò)我還是想補(bǔ)充一句,可能每個(gè)人的口味不同,我的經(jīng)驗(yàn)也許并不適合你,你完全可以選擇其他 的技術(shù),不過(guò)這樣的話,你要閱讀的書籍可能就和我的推薦不一樣了。
步驟1:奠定基礎(chǔ)
《The Pragmatic Programmer 》對(duì)于我們掌握軟件是一個(gè)很好的起點(diǎn)。該書總結(jié)了高水平的實(shí)踐探索。這與我們使用的是什么語(yǔ)言/技術(shù)無(wú)關(guān)。無(wú)論你選擇的是哪種技術(shù)堆棧,其主要原理都是一樣的。
步驟2:掌握你的編程語(yǔ)言
你以后每天需要面對(duì)哪種編程語(yǔ)言取決于你今天選擇的技術(shù)。但是編程語(yǔ)言總有主次之分。例如,Ruby on Rails 開(kāi)發(fā)人員主要使用 Ruby,AngularJS 開(kāi)發(fā)人員大多數(shù)時(shí)間用的是 Java。確定編程語(yǔ)言、掌握編程語(yǔ)言對(duì)你的職業(yè)生涯發(fā)展至關(guān)重要。因?yàn)橐院竽忝刻於紩?huì)使用它!推薦你先閱讀有關(guān)書籍。
步驟3:學(xué)習(xí)框架
選一個(gè),然后好好學(xué)習(xí):
對(duì)于 Rails 開(kāi)發(fā)人員——《Rails Tutorial 》by Michael Hartl
對(duì)于 iOS 開(kāi)發(fā)人員——《iOS programming: The Big Nerd Ranch Guide》
步驟4:掌握文本編輯器/ IDE
再選一個(gè),然后堅(jiān)持不懈地掌握這個(gè)工具。如果你選擇的是 VIM,那就要成為它的主人,讓它往東就往東。
步驟5:使用版本控制系統(tǒng)
我建議使用 Git。下面是我喜歡的資源:Pro git——免費(fèi)的在線電子書,詳細(xì)講解了 git 的各個(gè)方面。
步驟6:做好測(cè)試驅(qū)動(dòng)開(kāi)發(fā)
將 TDD 添加到你的技術(shù)堆棧中。養(yǎng)成每天 TDD 的習(xí)慣。高質(zhì)量的代碼源于良好的測(cè)試。
對(duì)于 Ruby on Rails 開(kāi)發(fā)人員——《Rails Test Preions》
對(duì)于 iOS 開(kāi)發(fā)人員——《Test Driven iOS Development》
步驟7:將重構(gòu)養(yǎng)成習(xí)慣
隨著你不斷添加更多的功能,代碼庫(kù)也會(huì)越來(lái)越復(fù)雜。為了保持代碼庫(kù)的可管理化,你需要重構(gòu)。如果你不重構(gòu)的話,你很快就會(huì)進(jìn)入兩難境地——即使是做很小的改動(dòng)都很困難、bug 沒(méi)法避免、沒(méi)有人愿意處理這個(gè)凌亂的代碼庫(kù)。重構(gòu)能讓你的工作更加輕松。
步驟8:學(xué)習(xí)軟件架構(gòu)
根據(jù)你上面選擇的堆棧,再學(xué)習(xí)相關(guān)的架構(gòu)。
步驟9:展示命令行的力量
剛開(kāi)始接觸命令行的第一感覺(jué)就是望而生畏。但是,一旦你學(xué)會(huì)如何使用,這將大大提高你執(zhí)行一些基本任務(wù)的效率。而這本身就能讓你成為一名更好的開(kāi)發(fā)人員,因?yàn)槟隳茉诟痰臅r(shí)間里實(shí)現(xiàn)目標(biāo)。然后你就能進(jìn)入下一個(gè)水平。使用 shell 自動(dòng)執(zhí)行常見(jiàn)任務(wù),建立自己的 dotfiles。如果你使用的 mac 或者 Linux 發(fā)行版,那么學(xué)會(huì) shell。
步驟 10:code code code!
只有不斷地練習(xí)學(xué)到的知識(shí),你才能真正掌握它。
總結(jié)
眾所周知,成為一名高級(jí)軟件工程師是非常難的。這需要大量的時(shí)間和精力。編碼的同時(shí)還要注意代碼的安全性,如果能事先就知道一些有效靠譜的解決辦法,一定可以省下很多時(shí)間,推薦多了解下源碼保護(hù)。
不同的人他們的學(xué)習(xí)速度也不盡相同,但是平均來(lái)說(shuō),大約需要 10 年時(shí)間才能成為一名可靠的高級(jí)開(kāi)發(fā)人員。你付出的各種投資最后必將給你帶來(lái)巨大的回報(bào)。軟件工程師的錢途很美好,其就業(yè)市場(chǎng)的需求一直居高不下,薪資水平也根據(jù)經(jīng)驗(yàn)程度在提高。這是一個(gè)快速增長(zhǎng)且相對(duì)較新的領(lǐng)域。
軟件工程師的每一天都在面臨挑戰(zhàn):挑戰(zhàn)改變?nèi)藗兊纳?。?lái)吧,各位軟件工程師,首先挑戰(zhàn)成為一名高級(jí)軟件工程師吧!