在現在,就是現在,程序員稱霸武林,但是這是一個現實的社會,并沒有天下第一這么一說,總是人外有人山外有山,想要成為谷歌程序員,你還要聽聽谷歌員工給的5個重要建議。
谷歌員工眼中的 5個關鍵點
第一點:讓我們回到這個問題本身,也即是如何準備才能讓自己成為“優秀”的軟件工程師?
是的!這個問題的剩余部分都是可選的。加入谷歌不是登月計劃。任何優秀的軟件工程師都有好機會成為谷歌工作文化的一部分。問題是你如何定義“優秀”。
這篇文章分享之前我還是要推薦下我自己的Java大神交流群? 561614305 里面會有定期的資料分享和大神之間交流的火花。
第二點:調整態度
在你給谷歌招聘人員留下深刻印象之前,讓我們來看看谷歌的軟件工程師這一角色是否是你真正想要的。
軟件工程師并不是像普遍觀念所說的那樣有趣。除了用戶界面和用戶體驗的職位,通常來說,不管你用什么文字編輯器——Eclipse、Vim或者Emacs——你的屏幕將是黑的,無聊和枯燥的。全職的軟件工程師,不僅需要有從事復雜算法的能力,還需要足夠的包容和耐心來一絲不茍地關注大型程序上的細節。
在谷歌,通常大多數軟件工程師的角色主要是處理數學問題。你掌握了多少種語言或者你把Java、C、C++等玩得多溜是無所謂的。
重要的是這個四個目標:
1、你創造有效算法的能力
2、你閱讀別人寫的代碼以及發現其中存在任何問題的細心品質
3、你的學習和實現新技術趨勢并且適應需求的好奇心
4、最后也是最重要的:你創造了什么,如何創造的?
第三點: 2014年技術發展指南——來自谷歌
作為一個成功的軟件工程師,有著扎實的計算機基礎是很重要的。對于大學生,通過自我把握節奏地親身實踐學習,來專業性地或者非專業性地培養他們的技術能力。
第四點:對專業性學習的建議
1、計算機科學入門課程,注:計算機科學的入門課能提供編程的一些指導。
2、至少用一種面向對象的編程語言寫代碼:C++,Java,或者Python
3、學習其他編程語言,可以將這些語言加到你的倉庫里:Java Script,CSS,HTML, Ruby, PHP, C,Perl, Shell. Lisp,Scheme.
4、測試你的代碼,學會如何跟蹤bugs,創建測試,并且破壞你的軟件
5、培養邏輯思維和積累離散數學知識
6、培養算法和數據結構的深刻理解能力,了解一些基本數據類型(棧、隊列和包),排序算法(快排、合并排序、堆排序)和數據結構(二分查找、紅黑樹、哈希表),大O表示法等
7、培養對操作系統的深刻理解能力
8、學習人工智能的知識
9、學習如何構造編譯器
10、學習密碼學
11、學習并行編程
第五點:對非專業性學習建議
1、參與課堂之外的項目。注:創建和維護一個網站,構建你自己的服務器,或者做一個機器人。
2、參與大系統(代碼庫)中的小代碼片段,閱讀和理解已有的代碼,查文檔并且跟蹤調試。注:用GitHub來閱讀別人的代碼或者去貢獻一個項目是一種很好的方式。
3、和其他程序員一起參與項目。注:這將會幫你提高在團隊工作的能力,也使你能夠向他人學習。
4、鍛煉你的算法知識和編程能力。注:通過像CodeJam或者ACMICPC這些編程競賽來鍛煉你的算法知識
5、成為一個助教。注:幫助教其他學生將會有助于增加你在這個學科的知識
6、軟件工程方面的實習經歷