- 原文地址:A Complete Guide to Getting Hired as an iOS Developer in 2018
- 原文作者:Rob Caraway
- 譯文出自:掘金翻譯計劃
- 本文永久連結:github.com/xitu/gold-m…
- 譯者:melon8
- 校對者:Park-ma
或如何避免浪費你人生的兩千個小時
我被一份耗費了我三個半月精力的工作拒絕了。
我做了所有的準備。那個公司的一切就是我的一切。我幾乎可以告訴你所有關於那家公司創始人在網上發表的東西。
我大概十分天真了。
想象一下,我寫了一篇很長的部落格,裡面全是實際的程式碼和如何改進他們應用程式的例子。因為我就是這麼做的。
儘管我投入了所有的精力,我還是得大聲說,得到這份工作是不可能的。我不想相信,但說出來還讓我感到了一點安慰。
幾個月後,我終於吸引了他們的注意。我和他們的 CTO 通了電話,聊得很愉快,他們邀請我參加程式設計挑戰。
我花了一週的時間來做到完美,他們的團隊也表示對我的程式碼印象深刻。我自信心高漲,感到自己很安全。
然後,我參加了他們的結對程式設計測試。
兩天後,我收到一封拒絕郵件。他們告訴我,我不是很合適。超過 2000 個小時來學習換來了一小時的教訓。
我癱倒在沙發上。他們是對的。我並沒有真的符合他們的需求 —— 我只是花了幾個月的時間說服自己我做到了。
回想起來,很容易看出我的行為是多麼荒唐和危險。我猜原來的我太害怕被拒絕,想要儘自己所能來減少被拒絕的可能性。
也許我們大多數人需要處理這種負能量 —— 把簡歷群發給每個可能的公司,然後石沉大海沒有迴應。
在遭到可怕的拒絕後,我醒悟過來了(好像我別無選擇)。於是我重新制定了一個實際可行的策略,並最終被一家我認為非常合適的公司應聘為 iOS 開發人員。
本篇指南旨在實現的目標:
我概述的這些策略不需要先前的人際關係網路,並且是那些希望獲得全職工作的 iOS 開發者。雖然你不需要認識任何人,但知道如何溝通和推銷自己還是有幫助的。
你需要做大量的工作 —— 意思是以下任一條或全部:
- 你釋出的可以下載的應用程式
- 你啟動或參與的開源專案
- 你作為該領域的意見領袖創造的內容
- 或其他相關工作經驗
如果你沒有任何可以推銷的東西,那我也幫不了你。
到本指南的結尾,你就會知道在 2018 年,在一家開發面向消費者的應用的公司獲得一份 iOS 開發工作需要做出什麼準備工作。
關於我的背景:
我從 iOS4 開始就開始開發 app。我沒有大學學位。我從未有過全職工作,也從未在“敏捷”開發環境或大的團隊中工作過。
許多公司因為我沒有大團隊工作經驗和沒有大學文憑的簡歷拒絕了我。
但我也不是空手而去。我自己開發上架的應用被下載了 100 萬次。我與人合作創辦了一家(低成本的)初創公司,並以自由職業者的身份與一些很酷的客戶合作。我有很好的公共專案來展示我的技能。
我在一個主要的科技市場(德克薩斯州奧斯丁)找到了工作,也得到了一些遠端工作機會。我被聘為高階職位。我想我的經歷對初級和中級程式設計師也有幫助。
在我們跳進沉重的東西之前:
我最終被錄用的第一條規則是:把所有的事情都記錄下來!
對公司做筆記,跟蹤哪些簡歷和求職信有用,每次面試後做筆記,這些會幫助你變得更快更好。
搞定你的 iOS 簡歷
不想重複造輪子,所以如果你有時間,請閱讀這篇編寫開發人員簡歷指南。
如果你沒有時間:
我曾經被應聘時的簡歷的一個稍微修改過的版本:
你的簡歷應該簡單易讀。以一種易於閱讀的格式列出你的成就,優先列出讓你看起來最好的事情。
你的簡歷應該有:
- 教育背景(如獲得學位或選修重要課程)
- 工作經驗
- 開源專案(提供連結)
- 你的個人應用程式(如果可能的話提供連結)
- 最相關的技術技能(保持最小篇幅)
- 其他值得注意的事情(你參加的俱樂部,你舉辦的開發者見面會,你贏的黑客馬拉松)
不要提及你是高階還是初級開發。讓你的簡歷說明一切。
對你的簡歷維護幾個版本。每個版本都應該儘量根據不同公司的個性調整描述細節。
不是讓你去撒謊,而是以不同公司最看重的方面來推銷自己。
獲得成功的其他方法
建立一個很棒的個人網站。
你的網站可以表達出簡歷無法表達的東西。看看我的個人網站。當我走進 InMotion Software 的辦公室時,他們開啟了我的個人網站的 about me 頁面。幾天後他們給了我 offer。
這是另一個很好的個人網站的例子。保持網站的整潔,用你潛在僱主希望看到的方式準確地表達你做了什麼。
如果你不得不撒謊,你可能是在努力爭取一個並不適合你的職位。沒關係。調整你的期望,重新準備。
如果你不擅長 web 開發,請堅持在 Squarespace 或者 Wordpress 上建立你的網站。
如果瞭解網頁開發,建立你自己的網站。我使用了 Node.js 和 Hexo。這表明,如果需要的話,我很樂意跳到其他的程式碼領域,這不會損害僱主的利益。
建立強大的 LinkedIn 頁面。
如果你認為 LinkedIn “很挫”,那你就是在和自己過不去。我就通過 LinkedIn 得到了了一些工作機會。
截至 2018 年中
看看我的 LinkedIn 頁面。你沒必要成為 LinkedIn 方面的專家:我去年才開始真正地研究它。
要保持更新並且有一個自己的好看的照片。我拍了一張我滿意的自拍上去。用編輯照片的 app,修修圖。多練習可以讓你拍出更好的照片。
新增特定的關鍵字到你的個人資料中,以助你出現在你期待的某些搜尋關鍵詞下面。
想象一下,如果你生活在一個不是奧斯丁這樣競爭激烈的地區,你可能很快就會脫穎而出。
以聰明的方式申請工作
這裡有一些找到 iOS 開發工作的好方法:
- 檢視 Angel.co 上面的工作(搜尋在你的工作地和“支援遠端工作”的工作)
- Google 搜尋 “iOS 開發人員的工作 [首選城市]”。谷歌,Glassdoor,ZipRecruiter 和 Indeed 會彈出相關結果。
- Google 搜尋 “遠端 iOS 開發”
- 檢查你的 Stack Overflow 板塊,做出漂亮的個人頁面
- Github 同上
- 在 LinkedIn 上 搜尋 iOS 開發者職位
- 參加相關的技術活動
最後一個好地方 —— 通常城市會有一個本地的技術網站。奧斯丁有 BuiltInAustin。實際上我就是通過這個板塊找到了我現在工作的公司的職位。
在你的搜尋中使用的關鍵詞:移動,應用,iOS, Swift,開發者,工程師,程式設計師,遠端,架構師,iPhone
在你喜歡的文件應用(我用的是蘋果備忘錄)中記錄工作列表。
記錄他們的網站、他們的應用程式、他們的 glassdoor 評論以及其他的你喜歡(或不喜歡)每家公司的哪些方面。
找到一種你感覺可持續的申請速度。你需要足夠的時間去做一些基本的準備工作。
我發現每週申請兩到三家公司對我來說最合適,但如果你已經有了全職工作,你可能每兩週甚至更慢地申請一次 —— 如果你堅持下去,那也沒什麼問題。
想想是什麼讓你為每個公司感到興奮。你可能不是對他們的產品充滿熱情,但你喜歡他們公司的技術、文化、你可能學到的東西,或者他們幫助的人。
寫求職信
在做了充分研究之後,你可能會注意到一些讓你喜歡上這家公司的地方。也許他們在招聘廣告中特別提到的一些事情引起了你的共鳴。
用這些來表達為什麼你是一個非常合適的人選,以及你想從他們那裡得到怎樣的反饋。
稍微放鬆隨意一些。沒有面試官願意聽讓人發睏的企業行話和 500 字毫無意義的獨白。
把你對公司做筆記的時候提到的積極的方面拿出來,並提出一兩件引起你注意的事。簡單地用你自己的方式說一下為什麼你認為自己可以勝任。
這裡有一封我用過的求職信,讓我得到了一個電話面試機會:
注意到它甚至有一個錯字 ? (儘管我不建議這樣做)
請注意我是如何把自己缺乏團隊經驗說成是一件我急於克服的事情(這是真的)。
像你的簡歷一樣,記錄你用過的求職信的幾個版本,注意哪些有用,哪些沒有用電子表格。
為程式設計挑戰做準備
程式設計挑戰是一個測試你知識和編碼技能的小練習,你可以在自己的時間內(通常是在一個寬鬆的期限內)做。
程式設計挑戰通常由一個或兩個檢視控制器組成,並要用到一個或兩個相關技術(如網路和 core data)。
我不打算透露所有公司的具體的題目,但我想,即使是我申請的公司,如果有更多的應聘者做好準備,並且對公司想讓應聘者知道的東西有足夠的瞭解,公司也會很感激的。
不說的太具體,下面是一些我遇到的幾個程式設計挑戰中所做的關鍵工作:
- AutoLayout 和 Autoresizing 檢視
- 調整文字大小以適應不同的螢幕(Dynamic Text)
- 使用基本 API 進行網路請求
- 使用 TableViews 和 CollectionViews
- 用 Core Data,UserDefaults 或存檔來持久化資料
- 知道如何使用 storyboards,也要準備好以純程式碼方式編寫檢視和控制器
- Size classing
- 非同步載入圖片並在主執行緒上顯示
- 向 tableview 或 collection view 新增無限滾動
- 將程式碼模組化。不要把所有東西都塞進檢視控制器。瞭解如何構建不可變的模型和服務層物件。
以上這些內容也可能會出現在面試中。
你不可能寫出完美的程式碼。這是可以接受的:
當你寫程式碼的時候,如果你知道程式碼不完美,你可以用 //TODO 或 //FIXME 來說明你將如何改進它,以向團隊展示你知道你必須做的權衡。
別人也會看你是否有能力做出人們喜歡的產品。如果你知道如何讓它超快、平滑、漂亮,即使他們沒有要求(如果你也有時間),你也要去做,除非他們明確說不需要做。
如何處理結對程式設計挑戰
不是每個公司都會做這一部分,但是值得注意。
對於結對程式設計,你可能要處理你在編碼挑戰中建立的程式碼,或者處理與公司希望你編寫的程式碼型別類似的任務。
不幸的是,你不能真的“偽造”這一部分。你必須相信你的直覺,因為在你不認識的人面前,你無法立即改變自己的行為。
不要緊張,在任務中要玩得開心。如果事後你覺得不太順利,記下你能做得更好的事情。
如果你想練習,那就坐在你朋友旁邊一起做一些專案。越多越好。
搞定面試
你需要準備好談論的話題:
- 大 O 符號。Swift/Obj-C 中的時間複雜度的例子
- 資料結構
- 用 Swift 建立一個 LinkedList(以防萬一)
- Struct vs. Swift 的類
- 瞭解 Swift 標準庫資料結構是如何工作的(基本程度)
- MVC, MVVM
- 你在程式設計挑戰中寫的程式碼或:
- 為解決類似公司面臨的問題你可能會編寫的程式碼
- 你的興趣和目標與公司的目標是如何一致的
- “你認為5年後你的職業生涯會怎樣”之類的問題很可能會出現
對一家公司產生興趣往往是一種“假裝直到你成功”的情況。你越是研究並找出對公司有意義的貢獻的方式,你的興趣就越會“神奇地”與他們保持一致。
不過,不要太強迫自己 —— 那些有著糟糕的 Glassdoor 評論和零星任務的公司幾乎總是你需要避開的坑。
我所注意到的(雖然不是絕對的規則):公司越大,面試就顯得越學術。準備好應對來自大公司問題中的“陷阱”吧。
小公司通常會有更少的形式,因為他們不需要它。
其他重要的準備方法:
- 讀 Advanced Swift
- 在你的業餘時間參加 swift 線上測驗
- 閱讀 Cracking the Coding Interview,特別是關於資料結構和時間複雜度的部分。
最後的想法
找到渴望得到工作和完全不關心你得到的工作之間的平衡。
如果你堅持上述的過程,你會變得更好 —— 我得到的這份工作使用的簡歷和我剛開始找工作時投遞的簡歷看起來完全不同。我學會了用一種更淡定的態度來處理面試。
讓這個過程給你翅膀。每次被拒絕都會讓你變得更好,所以要獎勵自己的進步,而不是僅僅是關心你是否得到了這份工作。
最後,如果你住在奧斯汀地區:InMotion Software 正在招聘!:) 我和他們一起工作很開心。
學習如何製作令人驚歎的應用程式等等
如果你從這篇文章中有所收穫,Rob Caraway 寫了關於應用程式開發、創業和建立一個偉大的開發者職業生涯的詳細指南。在這裡註冊就會得到通知 是他自己的想法。
這篇文章從哪來的
這個文章發表在 Noteworthy 上,每天都有成千上萬的人來這裡瞭解塑造我們喜愛的產品的人們和想法。
跟隨我們的出版物去看更多的產品和設計的故事,由 Journal 團隊提供。
如果發現譯文存在錯誤或其他需要改進的地方,歡迎到 掘金翻譯計劃 對譯文進行修改並 PR,也可獲得相應獎勵積分。文章開頭的 本文永久連結 即為本文在 GitHub 上的 MarkDown 連結。
掘金翻譯計劃 是一個翻譯優質網際網路技術文章的社群,文章來源為 掘金 上的英文分享文章。內容覆蓋 Android、iOS、前端、後端、區塊鏈、產品、設計、人工智慧等領域,想要檢視更多優質譯文請持續關注 掘金翻譯計劃、官方微博、知乎專欄。