巴比 Q 的程式窯: 要成為一個能與 Google 工程師比肩的程式師應該要會哪些東西？
要成為一個能與 Google 工程師比肩的程式師應該要會哪些東西？
由於有不少網友常常問我「要成為一個『傑出』的程式設計師，該學哪些東西？」最近剛好看到網路上流傳這篇。就順手隨便翻翻。
這篇的翻譯準則並沒有很嚴謹，也就是並非逐字翻譯。翻譯的目的是服務一些英文苦手的讀者，所以若有語句不順、與原文有出入的地方，就請大家見諒、並以原文為準囉！
原文的超連結我盡量保持。但某些書籍推薦的超連結，如果我知道有中譯版，我就會加上中譯版連結，或者是乾脆把英文版連結換掉。希望各位會喜歡我這小小的雞婆。
那麼，正文開始！
這篇文章建議想成為 Google 獵才對象的工程師、或者比該目標更好的工程師基本上要會哪些東西：
至少要非常熟悉下列程式語言中的兩者：C++、Java、Python（上面三種語言 Google 內部都有在用。我個人以及很多同事則是喜歡 C 語言多過於 C++）。
瞭解你學習過的每個語言，它們個別的強項與弱點。以及與該語言相關的平台、函式庫、或 API (Application Programming Interface)。
紮實地瞭解程式設計的一些核心知識。如：演算法（Algorithms，排序、搜尋...等等）、資料結構（Data Structure，鏈結串列、樹狀結構...等等）。
對於作業系統、以及它的操作有紮實的瞭解與認識（尤其是 Unix 家族的作業系統。如 Linux 等）。
多看「Google 面試問題集」一類的文章，讓自己知道 Google 對一個程式師有哪些期待。
「The UNIX Programming Environment」學習 Unix 書籍。私心以為，這本書已經太老太久（1983 年出的耶！），想學 Unix 應該有更好的選擇。我個人推薦「鳥哥的 Linux 私房菜」可能會好一點。
作者本人很推崇麻省理工學院（MIT）的「開放式課程（Open Courseware）」。底下是他認為大家應該去註冊的線上課程：
以下是作者個人認為他推薦的部落格：
以下是作者推薦的社群：
想成為中上水準的程式師，您要不就得是知名大學的資訊相關科系畢業，要不就得是自學 + 3 年以上業界專案的參與經驗，才能成為 Google 獵才的候選名單。
沒有什麼東西比擁有解決複雜問題的實務經驗更珍貴的了！找個開放原始碼（Open Source）來研究、或者自己起個專案（譯註：GitHub 這類開源專案很多），然後開始弄髒雙手、搞搞弄弄吧！
成為程式師最要記得的是：你的學習旅程可能沒有終止的一天！電腦科學（Computer Science）這門學科跟傳統科學比起來，或許年輕了許多。但它的相關領域既深且廣！找個你感興趣的領域，學習該領域的基礎知識後，然後就縱身往下鑽吧！
程式設計常見的領域有：桌機程式設計（如：進銷存、金融軟體）、網頁程式設計、手機程式設計、遊戲程式設計...等。