軟件工程師的職業生涯要歷經如下幾個階段:初級、中級,最後纔是高級。這篇文章主要是講如何經過10個步驟助你成爲一名高級軟件工程師。html
獲得更多的報酬!由於你的薪水會隨着你水平的提升而增長git
提高你的職業生涯。成爲了高級軟件工程師以後,就能夠朝着架構師、團隊負責人、CTO等職位前進web
歷經更大的挑戰。隨着你的成長,各類影響力也會提升。shell
軟件工程是很難的。這一行業在不斷變化中,因此你必須緊跟它的步伐。你必須不斷地投入時間和精力,由於你須要學習的東西老是比你能吸取的多。不少新手工程師甚至都未曾意識到他們若是想要攀登行業的高峯,要學習的東西、要付出的努力得有多少。不過,不用擔憂,下面我將指出一條「明路」有助於你成爲一名高級軟件工程師。編程
作一件事,就要把它作好。——Doug McIlroy《Unix Philosophy》架構
關於這一點,我真的是強調得不能再強調了。選擇好你將與之並肩做戰的專業和技術堆棧很是重要。堅持不懈,不要分心。至於應該怎麼作請看下面:框架
選擇專業。也就是你想作的事情。例如:Web開發、移動開發、DevOps等。編程語言
選擇專業中的實用技術。例如:若是你選擇了Web開發,那你就須要在Ruby on Rails、Python、Django,JavaScript和MEAN等之間作斟酌。若是你選擇的是移動開發,則須要在iOS和Android等之間作出選擇。編輯器
堅持下去,直到掌握這門技術。ide
個人意思並非說除了你的主要專業之外,你就沒必要熟悉其餘的了。那種數一數二的軟件工程師一般對其餘的編程語言和技術都很是瞭解,固然首先他們對他們本身的主要專業瞭解得很是剔透。當你肯定好主要專業以後,接下來要作的就是學習,閱讀全部相關的書籍、練習各類必要的技能,這可能須要不少年的時間。可是千萬不要氣餒,一步一個腳印,一個一個攻克難關,量變才能達到質變。關於技術,個人推薦是:Ruby on Rails之於web開發,iOS之於移動開發。這是我是以一個過來人的身份告訴你的寶貴經驗。不過我仍是想補充一句,可能每一個人的口味不一樣,個人經驗也許並不適合你,你徹底能夠選擇其餘的技術,不過這樣的話,你要閱讀的書籍可能就和個人推薦不同了。
《The Pragmatic Programmer 》對於咱們掌握軟件是一個很好的起點。該書總結了高水平的實踐探索。這與咱們使用的是什麼語言/技術無關。不管你選擇的是哪一種技術堆棧,其主要原理都是同樣的。
你之後天天須要面對哪一種編程語言取決於你今天選擇的技術。可是編程語言總有主次之分。例如,Ruby on Rails開發人員主要使用Ruby,AngularJS開發人員大多數時間用的是JavaScript。肯定編程語言、掌握編程語言對你的職業生涯發展相當重要。由於之後你天天都會使用它!推薦你先閱讀有關書籍。
《The Swift Programming Language》之於Ruby開發人員,以及《Programming Ruby 》之於iOS開發人員。
選一個,而後好好學習:
對於Rails開發人員——《Rails Tutorial 》by Michael Hartl
對於iOS開發人員——《iOS programming: The Big Nerd Ranch Guide》
再選一個,而後堅持不懈地掌握這個工具。若是你選擇的是VIM,那就要成爲它的主人,讓它往東就往東。
我建議使用Git。下面是我喜歡的資源:Pro git——免費的在線電子書,詳細講解了git的各個方面。
將TDD添加到你的技術堆棧中。養成天天TDD的習慣。高質量的代碼源於良好的測試。
對於Ruby on Rails開發人員——《Rails Test Prescriptions》
對於iOS開發人員——《Test Driven iOS Development》
隨着你不斷添加更多的功能,代碼庫也會愈來愈複雜。爲了保持代碼庫的可管理化,你須要重構。若是你不重構的話,你很快就會進入兩難境地——即便是作很小的改動都很困難、bug無法避免、沒有人願意處理這個凌亂的代碼庫。重構能讓你的工做更加輕鬆。事不宜遲,趕快養成重構的習慣吧。下面這本好書能教你該怎麼作:《Refactoring: Improving the Design of Existing Code》by Martin Fowler
根據你上面選擇的堆棧,再學習相關的架構。我推薦Martin Fowler寫的《Patterns of Enterprise Application Architecture》一書。
剛開始接觸命令行的第一感受就是望而生畏。可是,一旦你學會如何使用,這將大大提升你執行一些基本任務的效率。而這自己就能讓你成爲一名更好的開發人員,由於你能在更短的時間裏實現目標。而後你就能進入下一個水平。使用shell自動執行常見任務,創建本身的dotfiles。若是你使用的mac或者Linux發行版,那麼學會shell。下面這本書由Mark Bates所寫的書挺不錯:《Conquering the Command Line》
只有不斷地練習學到的知識,你才能真正掌握它。
衆所周知,成爲一名高級軟件工程師是很是難的。這須要大量的時間和精力。不一樣的人他們的學習速度也不盡相同,可是平均來講,大約須要10年時間才能成爲一名可靠的高級開發人員。你付出的各類投資最後必將給你帶來巨大的回報。軟件工程師的錢途很美好,其就業市場的需求一直居高不下,薪資水平也根據經驗程度在提升。這是一個快速增加且相對較新的領域。軟件工程師的每一天都在面臨挑戰:挑戰改變人們的生活。來吧,各位軟件工程師,首先挑戰成爲一名高級軟件工程師吧!
譯文連接:http://www.codeceo.com/article/10-steps-to-become-a-senior-software-engineer.html
英文原文:10 Steps to become a Senior Software Engineer
翻譯做者:碼農網 – 小峯
[ 轉載必須在正文中標註並保留原文連接、譯文連接和譯者等信息。]