最近我被一家公司拒了。
為了申請這家公司我花了三個半月的心血。我事先研究了這個公司的一切,對它了如指掌。他們的創始人在網上公開發表過的任何東西我都可以倒背如流。
不過我還是想的太美了。
就像在博客上寫文章一樣,我寫了很多實際的代碼和例子來介紹怎樣改進他們的應用。
而且,盡管我把所有精力都花在了解這家公司上,我還大聲對自己說,想拿到這份工作絕不輕鬆。盡管我不覺得這樣會有什麼用,但說出來的確感覺舒服許多。
在我關注他們幾個月之後,我終於引起了他們的注意。我和他們的CTO愉快地通了次電話,他要求我去參加他們的代碼筆試。
我花了一個星期的時間寫出了完美的答案,他們的團隊對此也非常滿意。於是我自信心大增,覺得應該可以安心了。
然後我參加了他們的一對一編程測試。
兩天後,我收到了一封拒信。他們告訴我,我不適合他們公司。也就是說,我花了兩千小時上了一堂只有一個小時的課。
我癱倒在沙發上。他們說得對,我不適合他們的需要——我只是花了幾個月的時間來說服自己罷了。
回想起來,很容易發現我當初的行為是多麼不理智、多麼充滿風險。我猜測,那時的我很害怕被拒絕,因此才會盡一切努力去避免被拒絕。
而絕大多數其他人都在往相反的方向努力,即把簡歷群發給盡可能多的公司。雖然收不到任何回應。
在這次慘痛的被拒後,我開始更理智地思考這件事(仿佛我還有其他選擇一樣……)。最終,利用它,我作為iOS開發者加入了一家我真正適合的公司。
這篇指南的目標?
我的策略不需要多廣的人際網路,對於在尋找全職工作的人都是適用的。盡管不需要認識別人,但懂得如何溝通和自我行銷卻非常有用。
你需要準備好自己——也就是說,要做到至少以下之一:
-
發布一個應用並使之可以下載;
-
發布開源項目,可能為開源項目做貢獻;
-
作為某個領域的話題領袖發表的文章;
-
或其他任何與工作經驗有關的東西。
如果你沒有任何賣點,那我也幫不了你。
讀完這篇指南你會了解到,在2018年,你都需要什麼,才能在那些做消費者應用的公司里獲得一份iOS工作。
關於我
我從iOS4時代就開始編寫應用了。我沒有大學學位,沒有過全職經歷,也從來沒有在「敏捷」環境工作過,甚至沒有在大型團隊中工作過。
許多公司都因為我的簡歷上沒有大型團隊工作經驗、沒有大學學位而拒絕了我。
但我也不是一無所有。我的應用達到了一百萬下載量(https://medium.com/@thecaraway/how-i-lean-startupd-my-way-to-240k-on-the-saturated-app-store-92862ba3c6fc)。我與人共同創辦了一家創業公司(雖然啟動資金很少),還作為自由職業者為一些很棒的客戶工作過——我有許多不錯的公開項目能展示我的技能。
終於我在主流技術市場中找到了工作(位於德克薩斯州Austin),但我同時也得到了許多遠程工作的機會。我得到的工作是一份高級職位,但我認為這些經驗也能幫到初級和中級工程師。
在開始真正的內容之前,我想說:
獲得工作的最重要一點就是:記錄一切!
記下每個公司的要點,跟蹤每份簡歷和求職信的效果,每次面試之後都要做記錄,這樣才能最快地成長。
研究你的iOS簡歷
我不想重 新髮明輪子,所以如果你有時間可以讀讀這篇開發者簡歷指南(https://medium.freecodecamp.org/how-to-write-a-good-resume-in-2017-b8ea9dfdd3b9)。
你要是沒時間,可以看看我求職成功的這份簡歷(稍微修改過):
簡歷應當簡明易讀。用易讀的格式列出你的成就,並著重標示出使你出色的那些成就。
你的簡歷應當有以下內容:
-
教育背景(如果你有學位,或者上過重要的課程);
-
工作經歷;
-
開源貢獻(要提供鏈接);
-
你開發的應用(盡可能提供鏈接);
-
最相關的技術技能(盡可能少);
-
任何其他值得一提的東西(如參加的俱樂部,你創辦的開發者聚會,你獲勝的黑客馬拉松等)。
不要寫你是高級還是初級,讓簡歷自己展示出這一點。
準備幾個不同版本的簡歷。每份簡歷都應當按照適合公司的方式修整細節。
這並不是要你撒謊,而是要按照公司最希望看到的方式去推銷你自己。
其他加分項目
1、建立個人網站。
個人網站可以展示簡歷中無法展示的東西。可以看看我的網站(http://robcaraway.com/about/)。我去InMotion Software(http://www.inmotionsoftware.com/) 的辦公室面試時,他們當場打開了我的個人網站頁面,幾天之後我就被聘用了。
這個個人網站的例子也不錯(https://peterlyons.com/)。個人網站要保持整潔,並且要用那些公司最想聽到的方式來表達你自己。
如果不得不撒謊,那很可能你不符合那個職位的要求。沒關係,調整一下自己的期望就好。
如果你不擅長網站開發,那可以在Squarespace或Wordpress等地方建網站。
如果你懂得網站開發,一定要自己建網站。我的是用Node.js和Hexo建的。這樣就能表現出我能夠在必要情況下跳到另一個編程領域中。這一點當然應該讓雇主知道。
2、建立強大的LinkedIn個人頁面。
如果你覺得LinkedIn很「弱」,那就是給自己找麻煩了。我在LinkedIn上得到了好幾份工作機會。
比如,看看我的這個(https://www.linkedin.com/in/rob-caraway/)。不需要成為LinkedIn專家,我也是去年剛剛開始建這個頁面而已。
保持上面的信息最新,而且要拍一張好看的照片。我自己拍了張作為頭像,找個圖像編輯軟件修一下,再多練練怎樣才能拍出好看的照片。
給個人頁面上加入特定的關鍵字,能讓你出現在特定的搜尋結果中。
如果你生活的地方競爭不如Austin激烈,那你應該能很快脫穎而出。
申請工作的聰明方法
下面是找到iOS開發者工作的好辦法:
-
在Angel.co(https://angel.co/)上找工作(選擇你的領域,選中「Remote OK」的工作);
-
搜尋「iOS Developer jobs [你想去的城市]」,Google、Glassdoor、ZipRecruiter和Indeed都會出現相關的結果;
-
搜尋「remote iOS Jobs」;
-
如果你在stackoverflow上建了不錯的個人頁面,可以看看它網站上的工作;
-
GitHub同理;
-
在LinkedIn Jobs上搜尋iOS developer;
-
在相關的技術活動中建立人際關係。
還有最後一點:通常每個城市都會有本地的技術網站,比如Austin的BuiltInAustin(https://www.builtinaustin.com/jobs)。我實際上就是在這個網站上找到我現在工作的公司的。
把相中的工作保存在文檔中(我用的是Apple Notes)。要記錄下他們的網站、應用、Glassdoor評價,以及任何你喜歡或不喜歡這家公司的東西。
確定合適的申請頻率,要留出足夠的學習時間。
對於我來說,一周申請兩到三個公司很合適。但如果你已經有全職工作了,那麼也可以每兩周申請一次,或者更慢的速度,只要你能保持速度就好。
想一想每個公司有什麼你喜歡的地方。也許你對他們的產品並不完全感興趣,但你可以喜歡他們的技術,公司的文化,你能學到的東西,或助人為樂的人們。
寫求職信
在研究之後,你應該能發現公司的閃光點。這些閃光點可能是招聘廣告中提及的內容。
用這些閃光點來表述你為什麼適合他們,你希望他們怎樣回復你。
求職信要用休閒的語氣,沒人願意讀500字的空洞官話。
把筆記中關於公司的亮點找出來,然後選出一兩條吸引你的。用你自己的話簡短介紹為什麼你適合這家公司。
下面是使我獲得電話面試的求職信:
注意即使有錯別字也不要緊(盡管還是沒有錯別字最好)。
注意我是如何描述我缺乏團隊合作經驗的:描述成我渴望並希望克服的東西(其實也是事實)。
像簡歷一樣,求職信也要寫多個版本,並用電子表格記錄下哪個可行,哪個不可行。
準備代碼筆試
代碼筆試是個能用自己的時間完成的小型編程練習(通常會有個寬鬆的截止期限),用來測試你的知識和編程技巧。
代碼筆試通常會包含一兩個視圖控制器的題目,並會涉及到一兩個相關的技術(如networking和core data等)。
我不想泄漏每家公司的代碼筆試題,但我認為,即使是我申請過的公司,他們也希望面試者能夠更好地準備他們需要的知識。
所以這里我不會介紹細節,但我要列出我參加過的代碼筆試中的一些重點:
-
AutoLayout(https://www.raywenderlich.com/125718/coding-auto-layout)和Autoresizing(https://stackoverflow.com/questions/12986130/proper-autoresizingmask)視圖;
-
調整文字大小適合不同的螢幕(動態文本,https://www.raywenderlich.com/77092/text-kit-tutorial-swift);
-
使用基礎API進行網路調用;
-
使用TableView和CollectionView;
-
用Core Data、UserDefaults或Archiving持久化數據;
-
知道如何使用故事板,也要學會手動編寫試圖和控制器;
-
Size classing(https://www.raywenderlich.com/162311/adaptive-layout-tutorial-ios-11-getting-started);
-
異步加載圖像並顯示在主線程上;
-
給TableView或CollectionView增加無限滾動;
-
代碼模塊化,不要把所有東西都寫在同一個視圖控制器中,知道如何構建不可修改的模型和服務層對象。
同樣的知識點也會出現在面試中。
寫出完美代碼是不可能的,也沒必要。
但當寫出不完美的代碼時,可以加上 // TODO 或 // FIXME標記,並寫上你希望如何改進,告訴團隊你做出這些妥協的理由。
代碼筆試還會測試你是否能做出人們喜歡的產品。如果你知道怎樣快速、順利、漂亮地做出產品,那就做出來給他們看(即使他們不要求這麼做,並且你有時間),除非他們明確說不需要。
怎樣進行一對一編程面試?
並不是每個公司都會做這一步,但做好準備很有必要。
一對一編程的題目可能是你在編程筆試中寫出的代碼,也可能是類似於你加入公司後的工作內容的題目。
不幸的是這一部分很難「作弊」。你必須依靠本能,因為你做出的任何行為都會被別人看到,無法改變。
但不要有壓力,而且要享受做題的過程。如果你之後覺得還有可以改進的地方,一定要記錄下來。
可以找個朋友在一些項目上做練習,練習得越多越好。
準備面試
需要準備的知識點有:
-
算法複雜度的O表示方法,比如Swifft或Objective C中的O;
-
數據結構;
-
用Swift建立鏈表;
-
Swift中struct和class的對比;
-
理解Swift標準庫的數據結構的原理(最基本的理解);
-
MVC,MVVM(https://www.raywenderlich.com/192471/design-patterns-by-tutorials-mvvm);
-
編寫你在編程筆試中寫過的代碼;
-
或者編寫代碼解決公司可能會遇到的類似問題;
-
你的興趣和目標與公司的目標的契合程度;
-
很可能會被問及「你五年後的職業目標是什麼」的問題。
建立對公司感興趣的過程通常是個「假裝」的過程。你對公司的研究越多,對如何給公司做貢獻的途徑研究得越多,你的興趣就越能「神奇地」與他們契合。
不過也不要太努力。那些在Glassdoor上差評很多或目標不明確的公司應當盡力避免。
從我發現的情況來看(盡管並不一定絕對正確),越是大公司,面試就越學術向。可以準備下那些大公司的「腦筋急轉彎」題目。
小公司的面試通常是非正式的,因為他們不需要這樣做。
其他重要的準備方式:
-
閱讀《Advanced Swift》(https://www.objc.io/books/advanced-swift/);
-
在閒暇時間做在線的swift題目(https://www.hackingwithswift.com/test);
-
閱讀《Cracking the Coding Interfview》(https://www.amazon.com/Cracking-Coding-Interview-Programming-Questions/dp/0984782850/ref=pd_lpo_sbs_14_t_0?_encoding=UTF8&psc=1&refRID=DC92Y76B7Z8DXK6VWH9T),特別是關於數據結構和算法複雜度的部分。
最後的感想
不要太專注於一份工作,也不要對所有工作都不在乎。要找到平衡點。
完全遵從這個過程能夠不斷進步。我面試成功的那份簡歷與我最初的簡歷截然不同,我也學到了如何用平靜的態度去對待面試。
讓過程給你插上翅膀。每次失敗都會讓你更進一步,所以重要的是你在這個過程中學到的東西,而不是是否得到了那份工作。
最後,如果你在Austin區域,可以來我們公司:InMotion Software(https://www.builtinaustin.com/company/inmotion-software/jobs),我們這里的工作很愉快!
原文:https://blog.usejournal.com/a-complete-guide-to-getting-hired-as-an-ios-developer-in-2018-d7dcf50dc25
作者:Rob Caraway,iOS開發者,作品已達到一百萬的下載量。
譯者:彎月,責編:郭芮
「征稿啦」
CSDN公眾號秉持著「與千萬技術人共成長」理念,不僅以「極客頭條」、「暢言」欄目在第一時間以技術人的獨特視角描述技術人關心的行業焦點事件,更有「技術頭條」專欄,深度解讀行業內的熱門技術與場景應用,讓所有的開發者緊跟技術潮流,保持警醒的技術嗅覺,對行業趨勢、技術有更為全面的認知。
如果你有優質的文章,或是行業熱點事件、技術趨勢的真知灼見,或是深度的應用實踐、場景方案等的新見解,歡迎聯繫CSDN投稿,聯繫方式:微信(guorui_1118,請備註投稿+姓名+公司職位),郵箱([email protected])。
————— 推薦閱讀 —————





專注在 兩性、愛情等領域