❶ 如何成為Google軟體工程師
招聘的流程?在線申請簡歷篩選電話訪談現場面試Offer發放面試包括哪些內容?簡短介紹介紹你的專長或進行技術評估提出你的問題面試沒有益智類問題(因為益智問題並不能反映你的編程能力)如何對申請人的工程技能進行評估?我們會根據以下四個方面來進行評估:編程語言的語法,關鍵庫函數,編程風格,對程序性能的考慮等演算法和數據結構分析能力合理設計如何准備面試?復習基礎知識復習演算法與數據結構練習寫代碼 在白板上或在紙上練習不要使用偽代碼你可以選擇你最擅長的編程語言認識Google員工?
和他聊聊他在Google的經歷。讓他成為你的推薦人,或者讓招聘者知道誰可以成為你的推薦人。在實際面試過程中:我們希望了解你解決問題的能力我們會向你提出一個有深度的問題,我們想了解你對復雜問題的解決方法不一定要得到正確答案,你的思考過程比正確答案更加重要我是在校生,離畢業還有兩三年的時間,應該怎麼努力?打好專業基礎學習編程語言:C、C++、Java、Perl、Python參加課堂之外的活動參加計算機俱樂部或社團參加編程競賽爭取盡可能多的實習生機會參與開源項目(不要忘記參加Google編程之夏-Google Summer of Code)博士生的面試會有所不同么?我們會根據每個人的情況安排有針對性的面試面試內容包括標准演算法,設計,編碼能力論文討論所有的面試官都具有博士學位Google軟體工程師如是說: 問:在Google工作,最擔心的一點是什麼? 答:公司的零食太多了,在Google工作要防止長胖 問:在Google工作,最輕松的事情是什麼? 答:坐在桌子上跟老闆說話 問:在Google上班,著裝有什麼要求? 答:穿總比不穿好。 問:Google工程師幾點上班? 答:Google工程師的工作比較自由,沒有固定考勤,允許Work from home。但由於需要和其他辦公室的同事交流,有可能一大清早就爬起來開會,或者一直工作到深夜。 問:在Google工作,最讓你欣喜的事情是什麼? 答:在Google工作,有機會與許多大牛共事,一起交流技術。 問:出差的機會多嗎? 答:取決於項目安排,可能需要去美國東西海岸、倫敦、蘇黎世、悉尼、東京等地出差 問:怎麼才能獲得上萬台計算機來做大規模並行計算實驗? 答:到Google工作,你隨時可以做到。 問:在Google可以做開源軟體嗎? 答:可以,很多著名的開源軟體程序員加入了Google,包括Google中國也有很多著名的開源軟體程序員 問:你們的夢想是什麼? 答:我們的夢想是:技術改變世界,do good things that matter in the worldGoogle 非軟體工程師如是說: 問:聽說在 Google 吃的很好,如果胖了怎麼辦? 答:公司有健身房,瑜伽房,吃多了下去跑兩圈。 問:Google 員工有保險么? 答:有,很好的員工保險,還包括員工家屬呢。 問:Google員工有帶薪假期么? 答:員工在入職的第一年有15天的帶薪假期。在Google工作每多一年,帶薪假期就多一天。所以,如果你在Google 工作滿235年,就可以全年休假啦! 問: Google對於非技術性職位的要求是什麼? 答:用戶至上,無論是對終端客戶還是內部用戶,都將是最重要的標准之一。 問:面試Google非技術性職位有什麼技巧? 答:陳述事實,善用數據,如果你經驗足夠豐富!你懂的。:) 問:Google的銷售工作壓力大嗎? 答:我們歡迎敢於接受挑戰的人加入銷售團隊,按摩椅,健身房,瑜伽室是你最好的減壓夥伴。
❷ 軟體工程師需要具備什麼條件
一,良好的編程能力。編程能力直接決定了項目開發的效率。這要求軟體工程師至少精通一門編程語言,熟悉它的基本語法、技術特點和 API( 應用程序介面 ) 。 二,自覺的規范意識和團隊精神。隨著軟體項目規模越來越大,僅僅依靠個人力量已經無法完成工作,因此,現代軟體企業越來越重視團隊精神。一般來講,軟體 企業中的程序員可以分為兩種,一種是 " 游擊隊員 " ,他們可能對編程工具很熟,能力很強,編寫的程序簡潔高效,卻缺乏規范和合作的觀念;另一種程序員個人能 力不一定很強,但程序較為規范,合作意識良好。第二種人更適合現代軟體企業發展的潮流。對於基礎軟體工程師來說,他們在企業中的角色決定了他們必須具有良 好的規范意識和團隊精神。 三,認識和運用資料庫的能力。信息以數據為中心,因此與資料庫的交互是必不可少的,了解資料庫的操作和編程是軟體工程師需要具備的基本素質之一。 四,較強的英語閱讀和寫作能力。程序世界的主導語言是英文,編寫程序開發文檔和開發工具幫助文件離不開英文,了解業界的最新動向、閱讀技術文章離不開英 文,與編程高手交流、發布幫助請求同樣也離不開英文。作為基礎軟體工程師,具有一定的英語基礎對於提升自身的學習和工作能力極有幫助。 五,具有軟體工程的概念。基礎軟體工程師從事的工作相對於系統分析師和高級程序員要單純一些,但是 他們仍然是整個軟體工程中重要的一環,他們同樣需要具有軟體工程的概念:從項目需求分析開始到安裝調試完畢,基礎軟體工程師都必須能清楚地理解和把握這些 過程,並能勝任各種環節的具體工作。 六,求知慾和進取心。軟體業是一個不斷變化和不斷創新的行業,面對層出不窮的新技術,軟體人才的求知慾和進取心就顯得尤為重要,它是在這個激烈競爭的行業中立足的基本條件。軟體工程師應具有較強的學習總結能力、需求理解能力以及對新技術的敏感性。 上述這些能力不可能憑空產生,而是通過培訓和教育的過程逐步獲得的。目前,社會上的軟體工程師培訓很多,但良莠不齊。有些好的培訓,能夠從知識到技能、 從技能到應用、從應用到項目,多層次多角度地對學員進行培訓,不僅關注技術層面,同時關注項目規劃的實施、團隊合作、技術文檔的編寫等在認證培訓過程中無 法顧及、但在實際工作中又不可或缺的能力的培養,可以使學員在理論上掌握和理解面向對象的軟體工程方法和組件化的軟體設計思想。還有一些培訓中心,針對軟 件設計人員,通過對經典設計模式的理論實踐,使學員掌握、運用其思考和解決問題的方法,總結技術經驗,構造自己的設計模式庫,使軟體設計人員能系統地掌握 面向對象的方法。 與信息技術領域先進的基礎理論教育相比,我國高校軟體人才培養模式在實踐技能的培養、 IT 前沿技術 的獲取與溝通、具有國際水平和標準的軟體項目開發等方面的培養存在極大不足。為解決這一問題,有必要在高校推出 " 軟體教育產品 " 的人才培養模式。 " 軟體教 育產品 " 是一種培養中、高級軟體人才的教育產品化解決方案,其根本目的可以歸結為 -- 培養掌握 IT 技術發展方向、熟悉國際開發准則和標准,並且具有豐富項 目管理經驗的高級軟體項目管理人員。 " 軟體教育產品 " 包含了教學方案的設計、課程選取與設置、教材的引進與二次開發、教學管理流程的監控、教學實踐環節的 落實等等。 僅有技術是遠遠不夠的 產業變動快速,復合型的概念也適用於信息技術相關科系,軟體工程師若能軟 / 硬體兼修或略通電信,再通曉某一行業的相關知識,在職場上就會比單純寫程序的工程師吃香,工作選擇機會也比較多。而要想成為復合型的軟體工程師,至少要做到以下幾點: 第一,培養自己的市場意識。市場需求決定著軟體產業的發展方向,軟體工程師要就市場論技術,即便是 " 天衣無縫 " 的技術,如果沒有市場需求也只能 " 孤芳自 賞 " 。絕大多數軟體都是商品,任何商品的成就大小首先都取決於應用需求規模。比爾 o 蓋茨能夠成為軟體業第一人物的基本前提,乃是他抓住了 PC 時代軟體業最 大的應用需求。 第二,培養全局角度的應變能力。用友靠財務軟體起家,但王文京最近卻表示,兩年之後不會再有專門的 財務軟體公司存在: " 財務是企業管理的核心,但企業的供銷存、客戶關系管理的需求必然會越來越大,所以,最好忘掉我們是一個財務軟體公司,我們要的是企業 管理軟體市場。 " 同樣,對軟體工程師個人來說,自身的定位也不可能一勞永逸。善於審時度勢、合縱連橫,有良好應變能力是軟體工程師必不可少的基本素質。在 風聲鶴唳之時,善於辨別哪裡是最不可替代的用戶需求關口,然後再結合自身技術特點進行轉型,才能在軟體行業有所成就。 第三,培養某一行業的專業知識。 IBM 有一份《中國銀行業加入 WTO 的新紀元》白皮書, IBM 做銀 行業咨詢顧問的最終目的還是推銷自己的整體解決方案,佔領中國金融業軟 / 硬體服務市場。但 IBM 的行動告訴我們,要想讓技術和產品介入某一行業,僅有大批 專業技術人員還不夠,還需要一種對行業的認知和把握能力。軟體教育要摒棄培養單純的技術開發人員的舊觀念,要著眼未來的需求,大力培養復合型軟體工程師。 最後,熟練掌握英語。英語是 IT 世界的主流語言,它對軟體工程師技能和業務水平提高的重要性不言而 喻,軟體工程師總是需要在第一時間學習業界最流行、最先進的編程工具的使用方法,但軟體工程師不可能馬上就能找到這種軟體的中文說明或幫助文檔。北京軟體 行業協會推出的軟體工程師培訓項目中,重點強調了軟體工程英語的重要性,增加了英語教學課時,結合科技英語和編程工作的特點,撰寫有針對性的教材,突出實 用性。通過對培訓學員的調查和學習效果的檢查,這種方法已經取得了良好的效果。
❸ 看到很多科技公司都有一個職位叫做工程師,比方說谷歌軟體工程師,他們是做什麼的呢
軟體工程師是一個認證考試,具體地說是從事軟體職業的人員的一種職業能力的認證,通過它說明具備了工程師的資格。軟體工程師是從事軟體開發相關工作的人員的統稱。它是一個廣義的概念,包括軟體設計人員、軟體架構人員、軟體工程管理人員、程序員等一系列崗位,工作內容都與軟體開發生產相關。軟體工程師的技術要求是比較全面的,除了最基礎的編程語言(C語言/C++/JAVA等)、資料庫技術(SQL/ORACLE/DB2等)等,還有諸多如JAVA SCRIPT、AJAX、HIBERNATE、SPRING等前沿技術。此外,關於網路工程和軟體測試的其他技術也要有所涉獵。
對於軟體工程師,不太重視學歷,但並不是對學歷沒有要求,重點關注項目的經驗和學習知識的能力,能否利用軟體工程專業知識來解決問題,根據崗位不同,對軟體工程師的要求也有所不同。具體能力要根據崗位和自己的興趣愛好選定自己的職業規劃方向,一方面要詳細了解軟體工程師的要求,可以關注企業的招聘信息;一方面自己要貯備通用的知識技能,廣泛閱讀相關的計算機材料對自己以後的發展大有幫助。可以確定的是軟體工程師的前途在未來的發展依然是不斷升溫的職業,比較需要有技術和良好前景的專業之一。
下面列舉一些企業的要求:
,NET方面的開發
⒈熟悉.net開發體系,熟悉C# ASP .NET
⒉熟悉SQLServer,Oracle資料庫開發
⒊以上要求至少3年開發經驗。
⒋具有企業管理系統項目經驗。5.了解企業ERP及財務管理軟體(用友,金蝶)者優先。6.善於溝通,能獨立撰寫方案。為人誠實,善於學習,做事認真負責,積極主動,具有敬業精神,有團隊精神
JAVA應用程序開發
技能要求:
熟練使用Struts2+Spring+Hibernate
掌握Jquery
掌握Java
熟悉Oracle
掌握xml/webservice
掌握OOD、OOP
基本文檔寫作能力
web、資料庫方面的開發
⒈計算機或相關專業本科以上學歷;
⒉有4年以上開發經驗,有良好的代碼編寫習慣,熟悉軟體開發規范;
⒊熟練掌握ASP,NET;等編程語言,熟悉.Net開發環境,理解.Net Framework,理解並能熟練使用WebService、O/R mapping、Remoting、多線程等技術;
⒋熱衷於互聯網WEB開發,熱衷於鑽研最新的前沿技術,精通XML,Javascript,CSS,AJAX等WEB前端技術;
⒌熟練的技術文檔編寫能力,熟練使用Rose,Power Design,Visio等建模和設計軟體,有一定的架構設計能力;
⒍精通SQL server資料庫技術,了解資料庫性能調優者優先.
C#項目開發
⒈計算機專業本科以上學歷,一年以上C#/ASP NET開發經驗,熟練使用SQL資料庫,有歐美項目開發經驗者優先;
⒉大學英語四級以上,具有較強的聽、說、讀、寫能力,尤其是聽、說能力;
⒊工作認真細致,踏實肯干,具有較好的團隊協作精神和溝通能力;良好的邏輯思維,能夠承受一定的工作壓力並可以按時完成工作且保證質量
php項目開發
⒈使用PHP語言開發互聯網應用程序;
⒉網站產品和網站功能模塊的開發與維護;
⒊與頁面設計師協調溝通,編寫部分Javascript和HTML;
⒋參與底層MVC框架的編寫與維護。
程序員和軟體工程師的區別是:軟體工程師不但要有編寫程序代碼的能力而且更重要的是要懂得如何去開發一個軟體,怎樣去學習實際的UI的觀念。
就是工廠裡面技術員和工程師的區別。技術員是熟練工人,工程師是設計者。
❹ 在谷歌工作需要什麼學歷而且具備什麼能力
谷歌認為以下幾點特質比文憑更重要:
1、解決問題能力。也就是認知能力,處理問題的能力。谷歌公司認為,優秀人才都很好卻沒有完美人才。谷歌公司有許多數據需分析,因為,解決問題的能力比較重要。
2、領導力 。谷歌公司說,如果你在大學期間是學生會主席或學生幹部,在工作中,當發現問題時,是否具有領導力,領導大家一起解決問題,讓別人接手,給別人空間。億萬富翁家得寶創始人肯蘭貢說,我們更喜歡用那些具有領導力的人才。
3、谷歌精神。主要包括激情、誠信、專業精神、工作態度等。即使有一個頂級大學文憑,也不能替代好的態度,教育固然重要,但誠信、職業道德、工作態度這類品質更重要。美聯儲主席耶倫告訴銀行家們,激情和能力對成功來說意味更多,也是僱主所要尋找的。
4、謙遜品質,包括謙虛態度和責任感。謙遜的人是一種智慧,謙虛讓人進步。
5、團隊合作。在一個注重創新、強調團隊合作的時代,軟技能更加重要。
谷歌公司人力資源總監表示,合作精神、解決問題能力、領導能力、謙遜態度、適應能力和學習慾望等這些是更加重要的特質。
❺ 軟體工程師所要具備的條件是什麼
軟體工程師所要具備的條件是:
對於軟體工程師,不太重視學歷,但並不是對學歷沒有要求,重點關注項目的經驗和學習知識的能力,能否利用軟體工程專業知識來解決問題,根據崗位不同,對軟體工程師的要求也有所不同。
具體能力要根據崗位和自己的興趣愛好選定自己的職業規劃方向,一方面要詳細了解軟體工程師的要求,可以關注企業的招聘信息。
一方面自己要貯備通用的知識技能,廣泛閱讀相關的計算機材料對自己以後的發展大有幫助。可以確定的是軟體工程師的前途在未來的發展依然是不斷升溫的職業,比較需要有技術和良好前景的專業之一。
軟體工程師的技術要求是比較全面的,除了最基礎的編程語言(C語言/C++/JAVA等)、資料庫技術(SQL/ORACLE/DB2等)等,還有諸多如JAVASCRIPT、AJAX、HIBERNATE、SPRING等前沿技術。此外,關於網路工程和軟體測試的其他技術也要有所涉獵。
(5)谷歌招聘軟體工程師的要求擴展閱讀:
軟體工程師發展前景:
當今社會不論什麼職業的都需要一個不斷學習的環節,軟體工程師也一樣。雖然軟體工程師的工作不同於程序員但是一個軟體工程師其前身必定是一個優秀的程序員,軟體的開發工具、開發技術在不斷地發展。
在校學生所能學到的東西很難跟得上發展的需要但是也不能說那些東西完全沒有用,只有在完全理解了相應的基本技能之後你才能很輕松地掌握新的技能,軟體技術都是一個循序漸進的過程。所以學好學校所能提供的專業課程是相當重要的。
我國軟體出口2010年規模達到215億元,軟體從業人員達到72萬人,在中國十大IT職場人氣職位中,軟體工程師位列第一位,軟體工程人才的就業前景十分樂觀。畢業生主要在各大軟體公司、企事業單位、高等院校、各大研究所、國防等重要部門從事軟體設計、開發、應用與研究工作。
有關數據顯示,目前我國對軟體人才的需求已達20萬,並且以每年20%左右的速度增長,而高校計算機畢業生中的軟體工程人才還很缺乏,尤其是高素質的軟體工程人才的極度短缺。
參考資料來源:網路—軟體工程師
❻ 如何成為一名 Google 軟體工程師
招聘的流程?在線申請簡歷篩選電話訪談現場面試Offer發放面試包括哪些內容?簡短介紹介紹你的專長或進行技術評估提出你的問題面試沒有益智類問題(因為益智問題並不能反映你的編程能力)如何對申請人的工程技能進行評估?我們會根據以下四個方面來進行評估:編程語言的語法,關鍵庫函數,編程風格,對程序性能的考慮等演算法和數據結構分析能力合理設計如何准備面試?復習基礎知識復習演算法與數據結構練習寫代碼 在白板上或在紙上練習不要使用偽代碼你可以選擇你最擅長的編程語言認識Google員工? 和他聊聊他在Google的經歷。讓他成為你的推薦人,或者讓招聘者知道誰可以成為你的推薦人。在實際面試過程中:我們希望了解你解決問題的能力我們會向你提出一個有深度的問題,我們想了解你對復雜問題的解決方法不一定要得到正確答案,你的思考過程比正確答案更加重要我是在校生,離畢業還有兩三年的時間,應該怎麼努力?打好專業基礎學習編程語言:C、C++、Java、Perl、Python參加課堂之外的活動參加計算機俱樂部或社團參加編程競賽爭取盡可能多的實習生機會參與開源項目(不要忘記參加Google編程之夏-Google Summer of Code)博士生的面試會有所不同么?我們會根據每個人的情況安排有針對性的面試面試內容包括標准演算法,設計,編碼能力論文討論所有的面試官都具有博士學位Google軟體工程師如是說: 問:在Google工作,最擔心的一點是什麼? 答:公司的零食太多了,在Google工作要防止長胖 問:在Google工作,最輕松的事情是什麼? 答:坐在桌子上跟老闆說話 問:在Google上班,著裝有什麼要求? 答:穿總比不穿好。 問:Google工程師幾點上班? 答:Google工程師的工作比較自由,沒有固定考勤,允許Work from home。但由於需要和其他辦公室的同事交流,有可能一大清早就爬起來開會,或者一直工作到深夜。 問:在Google工作,最讓你欣喜的事情是什麼? 答:在Google工作,有機會與許多大牛共事,一起交流技術。 問:出差的機會多嗎? 答:取決於項目安排,可能需要去美國東西海岸、倫敦、蘇黎世、悉尼、東京等地出差 問:怎麼才能獲得上萬台計算機來做大規模並行計算實驗? 答:到Google工作,你隨時可以做到。 問:在Google可以做開源軟體嗎? 答:可以,很多著名的開源軟體程序員加入了Google,包括Google中國也有很多著名的開源軟體程序員 問:你們的夢想是什麼? 答:我們的夢想是:技術改變世界,do good things that matter in the worldGoogle 非軟體工程師如是說: 問:聽說在 Google 吃的很好,如果胖了怎麼辦? 答:公司有健身房,瑜伽房,吃多了下去跑兩圈。 問:Google 員工有保險么? 答:有,很好的員工保險,還包括員工家屬呢。 問:Google員工有帶薪假期么? 答:員工在入職的第一年有15天的帶薪假期。在Google工作每多一年,帶薪假期就多一天。所以,如果你在Google 工作滿235年,就可以全年休假啦! 問: Google對於非技術性職位的要求是什麼? 答:用戶至上,無論是對終端客戶還是內部用戶,都將是最重要的標准之一。 問:面試Google非技術性職位有什麼技巧? 答:陳述事實,善用數據,如果你經驗足夠豐富!你懂的。:) 問:Google的銷售工作壓力大嗎? 答:我們歡迎敢於接受挑戰的人加入銷售團隊,按摩椅,健身房,瑜伽室是你最好的減壓夥伴。
❼ 軟體工程師要求
軟體工程師要求?對於軟體工程師,學歷次要,最主要的是看有多少項目的經驗,根據崗位不同,對軟體工程師的要求也有所不同。要詳細了解軟體工程師的要求,其實看看企業的招聘就知道了,呵呵。現在對於軟體工程師分的也很細,方向不同,要求就不太一樣,但是總的素養基本都是差不多的,還有軟體工程師的確是一個很好的職業。
下面舉幾個例子:
1.熟悉.net開發體系,熟悉C#/ASP.NET
2.熟悉SQLServer,Oracle資料庫開發
3.以上要求至少3年開發經驗。
4.具有企業管理系統項目經驗。5.了解企業ERP及財務管理軟體(用友,金蝶)者優先。6.善於溝通,能獨立撰寫方案。為人誠實,善於學習,做事認真負責,積極主動,具有敬業精神,有團隊精神
web應用程序開發
技能要求:
熟練使用Struss2+Hiberate
掌握Jquery
掌握Java
熟悉Oracle
掌握xml\webservice
掌握OOD、OOP
基本文檔寫作能力
1.計算機或相關專業本科以上學歷;
2.有4年以上開發經驗,有良好的代碼編寫習慣,熟悉軟體開發規范;
3.熟練掌握ASP.NET等編程語言,熟悉.Net開發環境,理解.Net Framework,理解並能熟練使用WebService、O/R mapping、Remoting、多線程等技術;
4.熱衷於互聯網WEB開發,熱衷於鑽研最新的前沿技術,精通XML,Javascript,CSS,AJAX等WEB前端技術;
5.熟練的技術文檔編寫能力,熟練使用Rose,Power Design,Visio等建模和設計軟體,有一定的架構設計能力;
6.精通SQL server資料庫技術,了解資料庫性能調優者優先.
1.計算機專業本科以上學歷,一年以上C#/ASP.NET開發經驗,熟練使用SQL資料庫,有歐美項目開發經驗者優先;
2.大學英語四級以上,具有較強的聽、說、讀、寫能力,尤其是聽、說能力;
3.工作認真細致,踏實肯干,具有較好的團隊協作精神和溝通能力;良好的邏輯思維,能夠承受一定的工作壓力並可以按時完成工作且保證質量
一般就是上面這些要求了。
至於多少時間可以達到上班的水平,現在一般的培訓機構說的差不多就是9個月左右。勤奮點,時間可以短些。如果要培訓,個人推薦威迅教育,質量很好,價格比其他機構低。
❽ 如何成為一名Google工程師
谷歌也曾經錄用過一位沒受過正規大學教育、連本科文憑都沒有、基本全靠自學成才的草根碼農,大家會不會覺得不可思議?但是,這事兒真的可以有——曾就職於谷歌、Square、DoubleHelix 等公司的資深軟體工程師及創業者大衛·比托(DavidByttow)日前撰文介紹了他從一介草根到被谷歌錄用的經歷,故事絕對勵志!
文章摘要: 第一,鼓起勇氣挑戰很牛的事情,做著做著自己也就變牛了。
第二,與業界「大拿」為友,能改變解決問題和看待世界的方式。
第三,勤能補拙,在大量實踐中彌補基礎知識方面的差距。
第四,抹去簡歷中的教育背景,意外得到面試機會;做足准備,谷歌面試也能變得樂趣十足。事實證明,谷歌對優秀的人才並不完全拘泥於學歷。
其實,我當年非常非常想上大學。我選擇申請加州大學洛杉磯分校(UCLA),但是很不幸,我在高中的平均績點(GPA)只有可憐巴巴的 2.45,所以我也就沒法被大學錄取了。然後,我在普渡大學蓋萊默校區(PureUniversityCalumet)進修計算機課程,同時盼望自己有朝一日能順利轉學或者另謀出路。過了將近兩個學期之後,出路來了——我得到了一個令人無法拒絕的錄用通知。
第一步:假裝自己很牛,直到真的變牛 上大學時,我曾經給印第安納州格里菲斯市的一家小公司打工,工作內容是幫助本地公司建網站,時薪 12 美元。這份工作與我所夢想的未來職業相去甚遠,但也不算太糟糕。
我埋頭苦幹、不說大話,把好幾個項目做得超乎預期。這為我建立了很好的聲譽,也讓那家公司獲利頗豐。與此同時,我還在並不充裕的業余時間里嘗試游戲開發。後來我孤注一擲,請求公司管理層給我三個月時間和一點點錢來開發一款能在網上銷售的游戲。我做出了漂亮的電子表格和豐富多彩的圖表,向他們展示了共享軟體模式的原理和游戲的光明「錢途」。當時我也不大清楚自己在做什麼,但他們還是買了我的賬,可能是因為我做的東西顏色很漂亮吧。
開發了兩個多月之後,我在網上發布了一段演示,引起了加州初創企業 CodeFire 的注意,因為他們做的也是一模一樣的太空射擊游戲,類似於非 3D 的 SubSpace。但引起關注未必就是好事——很不幸,他們向我發出了勒令停止通知函。於是我也只能回復曰:「沒問題,我會到此為止——前提是你們得雇我開發你們的游戲。」他們回以一份錄用通知,而我笑納了它。
注意:這家公司持有這款游戲的原始版權,而我在離職前也按照規定提前三周通知了老東家。
第二步:與「大拿」交朋友 這或許是你能做的最重要的事情之一——找到你們行業中的大拿,讓他們做你的導師,切記學無止境。在 DoubleHelix 工作時,我遇到的大拿是內森·亨特(NathanHunt),他是我見過的最聰明、最謙遜的牛人之一,而且他對我提出的所有問題都極具耐心,無論這些問題有多麼初級。我成百上千次走進他的辦公室,隨意提出諸如「我如何才能把一個旋轉矩陣順利插入另一個?」之類的問題。多年之後,他比我晚一個月加入了谷歌。
我的每一位導師都在一定程度上改變了我解決問題或看待世界的方式,我在此就不一一贅述了。
第三步:彌補差距 我沒有正式的計算機學位,因此我明白自己缺乏很多基本知識,例如我曾經用物理引擎解決一個動態編程問題,結果總也不成功。為了彌補這些差距,我實踐過我所聽聞或讀到過的幾乎所有最常見的數據結構和演算法。你肯定能找到自己需要的信息,但是通過觀察「知其然」與通過實踐「知其所以然」之間存在著巨大的差距。
隨著時間的推移,你需要做到以下事情:
1. 精通C、C++、Objective-C、Java、PHP、Python 或 Ruby 當中至少一門編程語言,熟練使用至少一種其他語言,並且熟悉 Scala、Haskell 或 Lisp。
2. 學習數據結構,實踐大多數常用數據結構,了解它們的復雜性。
3. 解決編程問題,多看多練多思考。
4. 構建自己的已完成(未完成)項目作品集(例如編程框架、移動或 Web 應用、小游戲,等等)
第四步:找到自信 離開印第安納六年後,我已經在多個平台上推出了大約 6 款游戲。我開始感到無聊,需要尋求新的挑戰。我申請了谷歌的職位,覺得被谷歌僱傭能讓我成為「真正的工程師」——對於我這個沒有一紙文憑的人來說,這就是我為之奮斗已久的理想。但是,我一直沒有收到谷歌的迴音,而我對此並不感到驚訝。
一年之後,我重新提交了自己的簡歷,但是這一次索性把「教育背景」一欄整個兒去掉了。令人哭笑不得的是,一名招聘人員居然打來了電話並為我安排了一次技術方面的電話面試。我問她能否把電話面試安排在兩周之後,她同意了。我需要那段時間——我分秒必爭地臨時抱佛腳,最大限度地向自己的腦袋裡填裝各種演算法和數據結構,每天編程 12 到 14 個小時,解了數百道編程題目。我如痴如醉地投入其中,直到我對谷歌面試的恐懼感變成了自信和興奮。
我依然記得在谷歌面試過程中遇到的每一個人,與他們打交道實在是一種樂趣。面試官們說起話來風趣幽默,而我相信他們一定看到了我的興奮和對面試問題的期待。
以下是我遇到的一些面試題目: 1)給出一組二維點,計算出它們的 skyline。此題很簡單,解法有好幾種,而我使用了一種叫做「最大堆」(maxheap)的常用數據結構。
3)講一講你最看重的軟體優點。這是一次「開放性」討論面試,我講到了各種測試以及它們發揮價值的時候(例如單元、整合、驗收),還講到了利於代碼可維護性的一致風格,等等。這些內容能在《CodeComplete》和《EffectiveJava》等圖書中找到。
我真的非常享受每一輪面試和解答各種題目的過程。如果我不是有備而來,情況肯定就會大不相同。面試之後,我自我感覺很好,但是我聽說即便招聘委員會最終決定發放錄用通知,也需要 CEO 拉里·佩奇親自簽字才有效。我很擔心他一看到我在教育背景方面的不足,我就立馬完蛋了。
但是,這樣的悲劇終究沒有發生——一天中午,我在聖克拉拉市(SantaClara)吃壽司時接到了電話,然後欣喜若狂地接受了錄用通知。從那天起,我終於可以確信我再也不用回學校念書了。
正如孫子曰:「是故勝兵先勝而後求戰,敗兵先戰而後求勝。」
註:我在谷歌度過了精彩非凡的五年,作為一名工程師不斷學習和成長,但是現在我已經不在谷歌工作了。