前言
前陣子在 PTT MacDev 版寫了篇心得,這邊就轉載過來
正文開始
各位好,這篇文章主要是給新手一些方向和想法~ 純屬個人的經歷和看法,可以一起以輕鬆的態度聊聊~ 我個人是在 2015 年中開始接觸 iOS 的開發,以 Objective-C 為一開始自學方向。 從簡單遊戲開始下手,像是猜數字、圈圈叉叉之類的, 練練基本的拉拉 UI、認識Storyboard、.h 的宣告、.m 的實作等。 接著剛好 Xcode 7 開始讓免費的開發者可以裝 App 至實體裝置上, 發現自己原本都用 4.7 吋的模擬器執行,而到了 5.7 吋的裝置上時, 會有跑版的問題,於是花了一些時間學習 AutoLayout。 而基本上 AutoLayout 有個概念熟悉即可, 除非是比較特別的效果需要思考一下彼此之間的 priority, 不然一般 App 都還蠻輕易解決這方面的問題; 而比較有趣的是,像在 ScrollView 裏頭做 AutoLayout 時, 要有 contentSize 的概念,而不要輕易的點「讓系統補完 constraints」的按鈕。
接著,在我準備面試前的一兩個月,加入了一些 iOS 的開發社群 (e.g iOS @ Taipei、Cocoaheads Taipei等) 厚著臉皮加了版上比較活躍的幾位前輩,並詢問他們一些問題和方向, 於是開始練習其他實作:
氣象資料開放平臺: 練習接 Api,當時我是寫了一個去接目前各雨量觀測站的 App, 篩選 10 分鐘內有偵測到雨量的, 並在 MapView 上放上大頭針,顯示當區目前雨量。 (AFNetworking、MapKit)
QR Code 掃瞄器: 當初瘋狂失敗的原因在於模擬器無法執行打開相機的功能, 一開就會報 Crash,而後來在裝到手機上才發覺當初懊惱的自己有多傻XD 不過這也學到了要好好 Google 的一課, 畢竟後來想想這明明是很簡單下的關鍵字,且網路上很多人會告訴你這件事…
縣市的各學校地址清單: 而因為當時有這需求,便寫了一個可以讀特定格式的資料, 然後畫面簡單地透過 UINavigationController 控制前後頁, 跳轉到縣市 -> 鄉鎮 -> 學校 -> 資訊等, 練習一下 ViewController 間的切換和流程安排。
午餐電話簿: 結合上述所學(不包含 QR Code), 便寫了一個會先判斷離自己最近的雨量偵測站是否有偵測到 10 分鐘內下雨, 來作為篩選依據(下雨的話就只隨機挑選有外送的), 隨機挑選後並可以決定是否今天要吃XD 再透過 FMDB 的方式記錄下來成清單,告訴自己這幾天都吃什麼… (很無聊的功能,就只是想練習 FMDB) 而上述都有使用到一些第三方套件,也選擇了 Cocoapods 來做管理。 於是我便拿著這些沒什麼商業價值的小工具上台北面試了… 很幸運的是,在面了兩間之後,就拿到其中一間的 Offer, 便開始了以 iOS 作為工作的生活。
接著在這一年半左右的時間,開始寫 Swift(報到的第一天被告知要寫 Swift XDDDDD) 學習 ViewController 的生命週期,也體會到 Storyboard 和 Xib 之間的優缺點, 甚至用 Code 直接刻 View 的好處等。
很多事情都要等你真的遇到了,才會很深刻地體會到, 為什麼當初有些前輩會這樣建議你… 而自己在這段時間又玩了 Parse、Firebase、Fastlane、Fabric、Carthage, 以及和 Android 之間透過 Bonjour 聯繫之類的一些不是太重要的技能XDD 看似沒什麼重點的文章,想告訴新人們的是一句我從 iOS @ Taipei 聚會中聽來的觀念: 「在這領域的知識累積,並非是線性的成長,而是一個一個的點; 你平常能觸及的東西越多,點越多,才能構成一個知識的平面。」
而社群的意義就在這,它幫你集結了在 iOS 各領域開發的人, 分享他們花了數個、或數十個晚上所得到的經驗,讓你了解其中的運作原理和設計想法。 產品和想法多數都是在互相碰撞的時候,產生而來的, 像是會使用 Firebase 的 real-time database, 和藍芽裝配的配對的話,那是不是能做一個即時的數據報告, 再加入類似 AWS 的 Cloud watch 的功能,送推播到另一個裝置幹嘛幹嘛(還沒想到XD) 對自己自學程式還沒有想法的人,不如先放下手機看看你周遭的生活, 你想透過手機 App 幫你解決什麼問題? 然而你便會找到方向,並找到一份適合你的工作,讓你接觸到更多 🙂