一個月前,有位公職人員來信詢問,想知道一些關於 App 工程師職務的議題,在此我便以 10 年左右的經歷,來整理出主要可以參考的方向。

我是個從還是個資訊工程學系研究生時,就決定開始寫 iOS App,一寫至今,已經超過十個年頭,當時 Apple 才剛釋出 iOS 6,現在已將要發佈 iOS 17。
經過十個年頭,我依然堅持走這條路,因為這工作實在太好玩了,執行力夠強的話,一個人就可以完成一個 App,實在很符合我的個人特質-自幹。
智慧手機與平板電腦日益普及,程式語言和開發工具與時俱進,讓研發的過程更有效率,最後成果的體感越來越友善且優異。我陸續學習原生 Objective C、Swift,甚至嘗試跨平台 Xamarin、Ionic。如今更是期待 Flutter 能有長足的進步與發展。這樣一來,我想要同時開發 iOS 和 Android 就能輕鬆實現啦~😄
論技術能力我沒有到極強,只要能應用在產品與專案上,任何技術都能接納,特別是面向使用者,我追求 UI/UX 盡可能做到極致。🤗
我從獨自開發到團隊合作都有豐富的研發經驗(已參與近 50 個 App),如今已是個能領導團隊做產品的經理人(產品研發成員近 20 位),時常還會為公司找合適的人才。

接下來看,哪些議題是多數 App 工程師都非常關心的事~
#如何評估一位求職者是否適合擔任APP工程師的職務?他需要能夠解釋哪些基礎問題或更深入的問題,以展示他的知識和技術是否符合工作需求?
基礎問題:求職者應該能夠回答一些基礎的問題,以展示其對 APP 開發的基本知識和技能。這些問題可能包括:
- 熟悉哪些主要的 APP 開發平台(如 iOS、Android)?
- 對常用的 APP 開發語言(如 Objectiv C、Swift、Java、Kotlin)是否熟悉?
- 是否了解 APP 開發的生命週期和流程?
- 對於使用版本控制系統(如 Git)進行程式碼管理是否有經驗?
專業知識和技術:求職者應該能夠解釋一些更深入的問題,以展示其專業知識和技術能力。這些問題可以根據具體職位要求和工作內容來定制,例如:
- 對於 APP 的性能優化和記憶體管理有何了解?
- 在開發中使用過哪些常用的 API 和 Framework (Package)?
- 是否有經驗處理不同設備和螢幕尺寸的兼容性問題?
- 是否熟悉使用測試框架進行單元測試和自動化測試?
專案經驗:求職者可以分享其過去的APP開發專案經驗,以展示其實際應用能力和解決問題的能力。這些可以包括:
- 參與過哪些 APP 開發專案?描述一下在專案中的角色和貢獻。
- 在專案中遇到哪些挑戰?描述一下如何解決這些挑戰。
- 是否有在團隊合作或獨自開發 APP 的經驗?描述一下研發狀況。
- 是否參與過 APP 的上線和維護工作?描述一下可能的狀況。
#如果我有自己App的作品集,有什麼方法可以突顯自己所擁有的技能?
若我擁有自己的 App 作品集,可以利用以下方法突顯我所擁有的技能:
- 精心準備作品集:確保我的作品集能呈現專業且有吸引力。提供清晰一目瞭然的介紹與說明,包括每個 App 的功能、目標用戶、所使用的技術和工具等。附上截圖、操作示範、連結到實際 App 可下載位址等資料,讓人能夠直觀地了解我的專業技能和創作成果。
- 強調特色和創新:突出我的作品集中的特色和創新。這可能包括獨特的功能、用戶體驗的設計、操作界面的設計等方面。講述我如何解決問題、改進現有的解決方案,以及我在設計和開發過程中的創意思維。
- 附帶技術細節:在作品集中提供關於技術方面的細節,例如使用的程式語言、開發框架、工具、API 等。這能夠展示我的技術能力和專業知識,讓潛在雇主或招聘者更好地評估我的能力。
- 提供使用者回饋或成功指標:如果我的 App 已上線並獲得使用者回饋或成功指標,如下載量、評價、使用者回饋等,這些都是有力的證明資料。我可以將這些數據或評價納入作品集,以證明我的 App 在實際使用中的成果和價值。
- 開源貢獻或專案參與:如果我參與了開源項目、貢獻了程式碼或參與了其它 App 開發專案,會在作品集中提及。這可以展示我跟他人的合作能力、對於軟體工程社群的參與以及我在團隊合作中所取得的成就。
- 更新和維護:持續更新我的作品集,特別是當我有新作品或技術進步時。定期檢查並確保我的作品集與我當前的技能和專業發展保持一致。
最重要的是,當我準備作品集時,確保它能夠清楚地展示我的技能和創作成果。適應我申請的職位需求,將焦點放在與所應聘職位相關的技能和經驗上。
#公司是否會以擁有APP相關證照來評估求職者的能力?
在評估求職者能力時,公司可能會考慮擁有 APP 相關證照作為參考,但這並不是唯一的評估標準。證照可以提供一個有形的證明,顯示求職者具備特定的知識和技能,但它們並不一定代表一個人的全部能力和潛力。畢竟開發技術不斷在更新發展,當下學到的知識與技能,可能很快就會過時。
公司通常會綜合考慮多個因素,來評估求職者的能力,以下包括但不限於:
- 經驗和專案成果:求職者過去的工作經驗和專案成果是評估其能力的重要參考。實際的工作經驗和專案成果能夠顯示求職者在實際工作中的應用能力和解決問題的能力。
- 技術面試和技能測試:公司可能會進行技術面試或技能測試,以評估求職者的實際技能和知識水平。這可以包括解決編程問題、設計和開發App的測試任務等。
- 學歷和學習能力:學歷可以提供求職者的學習背景和基礎知識,但更重要的是求職者展現出不斷學習和成長的能力。公司通常會重視求職者的學習能力和對於不斷更新和掌握新技術的意願。
- 個人特質和團隊合作能力:除了技術能力外,公司也會關注求職者的個人特質和團隊合作能力。這包括溝通能力、解決問題能力、創造力、領導能力等。
儘管擁有 APP 相關證照可以增加求職者的競爭力,但公司一般不會僅僅以證照來評估一個求職者的能力。綜合考慮多個因素能夠更全面地評估求職者的適合性和潛力。
或者可以這樣比喻,社會新鮮人找工作投履歷,是沒有任何工作經驗,其較為重要的參考就是學歷,表示其在聰明才智上有一定的程度。然而隨著工作經歷變多,學歷能參考的重要性就會遞減,因為將會著重在工作經驗。因此證照也可如同學歷來看待。
#除了基本的APP程式開發,如何有效地維護已開發完成的程式碼?這些維護軟體是否可以在入職前預先學習或每家公司都有不同的運作方式?
有效地維護已開發完成的程式碼是一個十分重要的工作,以下是一些建議的做法:
- 掌握程式碼結構:在開發完成後,了解程式碼的結構非常重要。理解程式碼的模組、函式和類別之間的關係,以及它們的責任和功能,能夠幫助我更好地瞭解程式碼的運作方式。
- 保持程式碼整潔:遵循良好的程式碼風格和標準,使用有意義的字詞來命名變數和函式,避免冗長的程式碼和重複的邏輯。這有助於提高程式碼的可讀性和可維護性,讓其他人甚至未來的自己,更容易理解和修改程式碼。
- 使用版本控制系統:學習使用版本控制系統(如 Git)是非常重要的,它可以追蹤和管理程式碼的變更。這讓我能夠輕鬆地回溯到先前的版本,可以比較不同版本之間的差異,以及處理多人協作開發時的合併與衝突。
- 撰寫單元測試:撰寫單元測試可以幫助驗證程式碼的正確性和預期行為。這有助於捕捉潛在的錯誤和問題,並在進行程式碼修改時提供保護。學習如何寫有效的單元測試,並將其作為維護程式碼的一部分。
- 文件和註釋:良好的文件和註釋是能夠提供程式碼的說明和使用的指南,有助於其他人理解程式碼的目的和使用的方法。在程式碼中加入清楚的註釋,並撰寫相應的文檔,以便未來維護或其他團隊的成員能夠更輕鬆地上手和修改程式碼。
確實,每家公司的維護軟體和工作流程可能有所不同。
入職前,可以先瞭解公司所使用的開發工具和設計流程,以便能夠迅速適應和上手。這可能需要透過面試、職位說明、公司內部資源或與現有員工交流,來獲得相關資訊。
入職後,還可以從團隊中的同事和導師那裡學習和瞭解公司的研發營運方式,並適應公司特定的工作流程和標準。
無論在哪家公司工作,持續學習和精進自己的知識和技能是非常重要的。隨著時間的推移,將更熟悉公司的工作方式,並能夠更有效地維護已開發完成的程式碼。

—
最後,我附上過去我工作後整理的作品集,是屬於我個人的風格,可作參考之用。作品集是自己整理出來,就能較為有信心且詳細地在面試時呈現,其他沒有陳列的就看臨場反應囉~主要目標是能在面試時讓對方快速瞭解自己。🤠
https://bit.ly/3I7823o
歡迎毛遂自薦給我,我公司需要 App 研發人才,無論是新手還是老手,來聊聊吧~🙃
隨意留個言吧:)~