Swift 程式語言

iOS 開發者求職指南:善用 2000 小時作準備 讓你在今年成功獲聘

iOS 開發者求職指南:善用 2000 小時作準備 讓你在今年成功獲聘
iOS 開發者求職指南:善用 2000 小時作準備 讓你在今年成功獲聘
In: Swift 程式語言
本篇原文(標題: A Complete Guide to Getting Hired as an iOS Developer in 2018)刊登於作者 Medium,由 Rob Caraway 所著,並授權翻譯及轉載。

耗費了我三個半月的精力,最後我還是沒有得到那份工作。

我學習了那間公司的一切,公司的事彷彿都變成了我的事。我連公司每個創辦人在網上發布的內容都一清二楚。

我將它浪漫化了太多。

我寫了大量的部落格文章,裡面包含了實際的程式碼和範例,闡述如何可以改善他們的 App。儘管我投資了這麼多精力,我必須說,要獲得一份工作實在是非常不容易。雖然我以前不相信這回事,但這樣說出來讓我感到安慰一點。

在我專注於他們公司的幾個月後,我終於獲得他們的注意。我與他們的技術總監通過一次話,他更邀請我嘗試他們的程式碼測試。我花了一週時間作準備,希望盡善盡美,他們的團隊亦對此印象深刻。我因而感到非常自信,而且勝券在握。

然後,我進行了他們準備的結對程式設計測試。

過了兩天,我收到他們的拒絕信,說我不是太合適。儘管我花了 2000 小時來準備 1 小時的測驗,我還是不太合適。

我垂頭喪氣地倒臥在沙發上,花了幾個月來說服自己,他們是對的,我確實不符合他們的要求。

現在回想起來我的行為是多麼荒謬和危險。過去的我總是害怕被拒絕,並願意做任何事情來避免這種事情發生。

很多人可能會選擇發履歷給大量公司,藉此來消化負面情緒,但結果通常都不會收到任何回覆。

在我被拒絕之後,我徹底覺悟了(其實是別無選擇)。我擬訂了實際策略,然後有一間適合我的公司,聘用了我為 iOS 開發者。

本篇指南的目的

我所列出的策略不需要有相關的網絡,而是針對那些希望獲得全職工作的程式開發者。你不需要認識某公司的誰,只需要知道如何溝通、如何推銷自己就可以了。

若你需要一份工作,那你就需要符合下列任何一項或全部經驗:

  • 你開發並上架過的 App
  • 自己開發或參與過的開源專案
  • 對於特定領域有獨特的想法
  • 其他的工作經驗

若你本身經驗不足,那我也無法幫上什麼忙。

在讀完本篇指南後,你將會瞭解在 2018 年,要獲得一間開發面對消費者 app 的公司聘用,最主要的因素是甚麼。

我的背景

我自從 iOS 4 時代就開始寫程式。我沒有大學學歷,沒有做過全職工作,亦沒有在「敏捷」開發環境下、或是和大型團隊一起工作的經驗。許多公司因為我沒有與大型團隊工作的經驗、或是沒有大學學歷,而拒絕了我。

但是我也不是一無所有。我自己開發的 App 獲得了一百萬下載量;我亦共同創辦了一間(低預算)創業公司,並以自由工作者身分與許多很酷的客戶合作過;我也有許多相當體面的公共專案來展現我的技能。

我獲聘於一個主要技術市場(德州奧斯汀)工作,同時也得到了遠端工作的機會。這是一個資深的職位,但我想這些經驗對於初階和中階的開發者也同樣有所幫助。

在我們正式開始之前

我獲聘的第一條不二法門就是:紀錄一切

紀錄每間公司的細節,看看哪份履歷和求職信會成功,並在每次面試之後做筆記;這些能夠幫你更快獲得成功。

搞定你的 iOS 履歷

不要嘗試自己從零開始設計履歷。如果你有時間,請閱讀這篇文章,看看如何撰寫開發者履歷。

如果你沒有時間,可以參考讓我成功獲聘的履歷略為修改的版本:

ios developer resume

你的履歷應該簡單易讀,簡潔地列出你的成就,將最好的成就放於最前面。

你的履歷應該包含:

  • 教育程度(如果你有學位或上過一些重要的課程)
  • 工作經驗
  • 開源專案(提供連結)
  • 你開發的 App(盡可能提供連結)
  • 相關的專業技能(盡量精簡)
  • 任何值得一提的事情(參與的社團、創立的開發者聚會、在程式設計馬拉松勝出的經驗等)

不必特別提及自己的資歷,你的履歷會說明一切。

保留不同版本的履歷,以便因應不同公司的風格和特性適當修改與調整。

你不是在說謊,只是撰寫履歷來銷售自己為合適公司的人。

其它脫穎而出的方法

建立一個個人網站

個人網站可以讓你以履歷以外的方法表達自己,你可以看看我的網站InMotion 軟體公司就是因為我個人網站 About Me 的頁面而注意到我,幾天之後就聘用了我。這個網站是另一個好例子。保持網站簡潔,並試著用潛在雇主想聽的方式,去呈現你做過的事。

如果你從中說謊了,你可能會找到一個能力不符的職位。沒關係,你可以重新調整期望和心態。

如果你不擅長網站開發,你可以嘗試利用 Squarespace 或 WordPress 這種工具來建構自己的網站。如果你擅長網站開發,請自行構建自己的網站。我的網站是使用 Node.js 及 Hexo 來構建的;這樣可以展示如果有需要,我很樂意進入其他程式碼的領域,這一點讓你的雇主知道也不妨。

建立強大的 LinkedIn 個人檔案

如果你認為 LinkedIn 沒有用,這樣想就錯了!因為我透過 LinkedIn 得到許多機會。

linkedin profile

看一下我的個人檔案作參考。你不需要非常專業;我也是去年才開始建立自己的個人檔案。

放一張近期而且不錯的照片在頁面上。我拍了一張用作頭像的照片,使用照片編輯器 App 稍作調整,並練習照出一張好的照片。

在個人檔案中加入特定的關鍵字,這對你的個人檔案出現在搜尋結果很有幫助。

想像一下如果你居住在一個競爭力比奧斯汀弱的地區,你的個人檔案可能很快就會脫穎而出。

用聰明的方式來申請工作職位

下列是一些找到 iOS 開發者職缺的好方法:

  • 看看 Angel.co 上的工作(選擇你的地區、以及「Remote OK」的職位)
  • 在 Google 搜尋 “iOS Developer jobs [喜歡的城市]”,Google、Glassdoor、ZipRecruiter 和 Indeed 都會顯示相關的搜尋結果
  • 搜尋「遠端 iOS 工作」
  • 如果你有不錯的個人頁面,可以在 stack overflow 頁面上看看
  • 你也可以於 Github 看看 stack overflow 頁面
  • 在 LinkedIn Jobs 上搜尋 iOS 開發者
  • 在相關技術活動上交流

最後一個好方法:通常每個城市都有當地的技術網站,像是奧斯汀就有 BuiltInAustin。我其實就是在這個網站頁面上找到現在的工作。

你可以搜尋的關鍵字:Mobile、App、iOS、Swift、開發者、工程師、程式設計師、遠端、架構師、iPhone 等。

用你喜歡的方式把找到的職缺訊息整合成一份清單(我是使用 apple notes 的)。

看看在他們的網站、App、在 Glassdoor 上的評論、以及其他關於工作的細節,並檢視你對於每一間公司喜歡或不喜歡的地方。

找到適合的步伐來持續投遞履歷,因為你會需要足夠的時間來做些基本調查。以我來說,我發現一週申請兩到三間公司是最適合的速度;但是如果你已經有一份全職工作,可能每兩週申請一間公司,或甚至更慢的速度都可以,只要你能堅持下去就好。

想想每一間公司最讓你感到興奮的部分。你可能對他們的產品沒有特別感興趣,但是熱愛他們所用的技術、公司文化,或是你將能學到的東西、以及能夠幫助的人。

撰寫求職信

做好資料搜集後,你很可能會注意到對於某間公司你所喜歡的事,可能是在職缺說明的某些部分引起了你的共鳴。你可以利用這些重點來表達自己為何適合這個職位,並想得到他們的回覆。

記得保持輕鬆的口吻,沒人會想收到滿滿的術語或是長篇大論的文章。

你亦可以講述一兩個之前記下的公司優點,並簡短地用自己的方式說明自己為何適合這項職缺。

這是一封讓我獲得電話面試的求職信:

cover letter

你可以看到我將缺乏團隊開發經驗的部分,包裝成我急不及待想接受這項挑戰(這是真心話)。

如同你的履歷一樣,你可以保留不同版本的求職信,並切記利用表單記錄哪一份是成功的。

為程式碼測試做好準備

程式碼測試是一個小型的練習,用來測試你的程式知識與技巧,你可以在自己空閒的時間完成(通常有寬鬆的期限)。

程式碼測試通常是由一到兩個視圖控制器組成,並會用到一至兩種相關技術(像是 Networking 和 Core Data)。

我並不打算透露所有公司程式碼測試的確切內容。不過我可以想像到,應徵者如果為測試做充足準備,並擁有相關的知識,公司對應徵者的印象一定會更好。

所以在不侷限特定主題的前提之下,我整理了一些在不同程式碼測試中處理過的技術問題:

  • 自動佈局 (AutoLayout) 和自動調整視圖 (Autoresizing views)
  • 依照不同螢幕尺寸調整文字大小(動態文字)
  • 用基礎 API 進行網路呼叫
  • 使用 TableViews 與 CollectionViews
  • 使用 Core Data、UserDefaults、或 Archiving 來保留數據
  • 瞭解如何使用 Storyboards,同時也瞭解如何用程式碼編寫視圖與控制器
  • 尺寸分類
  • 非同步載入圖檔,並透過主執行緒來顯示
  • 將無限滾動加入 TableViews 與 CollectionViews 之中
  • 適當地將程式碼模組化,不是一股腦將所有東西塞到視圖控制器當中,而是要知道如何建構不變模型和服務層物件

上面議題也可能會出現在面試當中。

你可能沒辦法將程式碼完美地撰寫出來,但也不用太擔心。

當你編寫程式碼時知道這一部分還不夠完美,請利用 //TODO 或 //FIXME 等註解,提醒自己要改善它,同時也向團隊展示你知道這部分該有所取捨。

公司同時也在測試你能否做出大眾喜歡的產品。就算他們沒有要求,請盡量快速、流暢、漂亮地完成測試,除非他們有特別註明其他條件。

如何應對結對程式設計測試

並非所有公司都有這個部分,但是這值得你花一點心思。

在結對程式設計的部分,你可能需要處理剛剛程式碼測試的那些題目類型,也可能是類型公司未來想要你撰寫的程式碼的題目。不幸的是,在這部分你無法「造假」。你只能相信自己的直覺,因為你無法在一個不認識的人面前,改變你的即時行為。

不要感到有壓力,享受整個過程中的樂趣。如果完成後覺得自己做得不好,記得做筆記讓自己瞭解如何能夠進步。

如果你想要練習,在你的朋友身旁實作一些專案,當然是越多越好。

搞定面試

面試前,你應該要先準備好這些議題:

  • 大 O 符號,例如 Swift / Obj C 中的大 O
  • 資料結構
  • 用 Swift 創建 LinkedList
  • Swift 中結構 (Struct) 與類別 (Class) 的比較
  • 瞭解 Swift 標準函式庫之中資料結構的運作(基本層面)
  • MVC、MVVM
  • 關於你在程式碼測試中撰寫的程式碼
  • 針對類似公司面臨的問題,你可能會編寫來解決問題的程式碼
  • 你的興趣和目標如何和公司目標一致
  • 在你職涯五年之後的展望

在公司建立興趣經常是「弄假直到成真」的情況,當你搜集得越多資料,並找到你能夠對公司作出貢獻的方式,你的興趣漸漸的就會如「魔法般」地與公司一致。但不要過分強迫自己,尤其是那些在 Glassdoor 有負面評論、或是目標不明確的公司。

從我觀察所得(雖然不是絕對的規則):公司越大,面試就越側重於理論層面。在那些最大的國際公司面試時,記得為固意刁難的問題做好。但是小公司通常不會那麼正式,因為他們根本不需要。

其他準備的重要方式:

總結

希望你能在只為一個職位過分努力、與完全不在乎獲得甚麼職位之間,取得一個平衡。

只要堅持這個過程,你將會更進一步 ── 我獲聘的那份履歷與我剛開始寫的那份完全不同,我亦學會了用更平靜的心態來應對面試。這個過程會使你成長,每次的拒絕都會讓你成長;所以縱使失敗,你都應該鼓勵自己作出改善,而不是只關心有沒有獲聘。

本篇原文(標題: A Complete Guide to Getting Hired as an iOS Developer in 2018)刊登於作者 Medium,由 Rob Caraway 所著,並授權翻譯及轉載。
作者簡介: Rob,一位來自美國德克薩斯州的 Swift 開發者,他的 App 曾在 App Store 獲得了一百萬下載量。他也撰寫了關於App 開發、創業、以及建立優秀的開發者職涯的文章。歡迎在這裡訂閱他的文章,文章靈感全都源自於他的自身經驗。
譯者簡介:HengJay,iOS 初學者,閒暇之餘習慣透過線上 MOOC 資源學習新的技術,喜歡 Swift 平易近人的語法也喜歡狗狗,目前參與生醫領域相關應用的 App 開發,希望分享文章的同時也能持續精進自己的基礎。

LinkedIn: https://www.linkedin.com/in/hengjiewang/
Facebook: https://www.facebook.com/hengjie.wang
作者
AppCoda 編輯團隊
此文章為客座或轉載文章,由作者授權刊登,AppCoda編輯團隊編輯。有關文章詳情,請參考文首或文末的簡介。
評論
很好! 你已成功註冊。
歡迎回來! 你已成功登入。
你已成功訂閱 AppCoda 中文版 電子報。
你的連結已失效。
成功! 請檢查你的電子郵件以獲取用於登入的連結。
好! 你的付費資料已更新。
你的付費方式並未更新。