資深 iOS 開發工程師需要達到什麼水平?
希望有幾年iOS開發的程序員分享下經驗
iOS 開發工程師是工程師。這個問題的關注點更應聚焦於工程師,而不是 iOS。現在公司招聘和個人學習,太關注具體領域,而忽略了人。實際上人的素質才是最重要的,具體領域僅僅是細節。一個資深的 iOS 開發工程師,轉到其他計算機領域,比如安卓開發,前端開發,伺服器開發,一段時間熟悉之後,也會幹得很好。更厲害的人可以超越行業。
要成為資深 iOS 開發工程師,就不能圈死自己,不要總將自己定位成只做 iOS 的。
原問題應該拆分成兩個:
- 一個資深的工程師應該達到什麼水平,或者說他有什麼素質?
- 具體到 iOS 開發方面,需要懂得什麼?
提出的問題,決定了思考的方向。
============================
下面似乎離題了,可以不看。
資深軟體工程師,兼備了兩個角色
- 研究者
- 實現者
研究者是相對你自己說的,從未知到已知,從無到有創作出些新東西。比如你要做一個繪畫軟體,做之前你完全不知道筆觸怎麼弄(其他人可能知道了),但最後可以知道方法。實現者,在懂得具體的方法之後可以高質量地轉成代碼。
研究工作占的分量比較少,但很關鍵。最開始完全不知道具體方法,一個資深軟體開發者通過查資料,參考開源代碼,通過知識積累,大致猜到問題的解決方向,一步一步去解決這些問題。
研究工作是最有趣的,實現工作相對來說比較單調,但也十分重要。同樣一個方案,好的實現跟差的實現,效果天差地別。
研究工作在時間上不可控,不可能知道具體需要多少時間,很可能一卡就卡上幾天或者幾周,項目最容易在這裡失控。實現工作時間上是可控的,可以猜測到需要的時間。
一個資深的工程師,可以自由地,在研究者和實現者兩個角色之間切換。
很多人就缺少了某個方面。可能他僅僅只是研究者,方法根本實現不了,或者需要付出很大代價而不值得。或者僅僅是是實現者,碰到沒有見過的問題,就一籌莫展。
作為研究者,就跟科學家做研究一樣。需要猜測、驗證。因為完全未知,可能性會很多。通過日常經驗和知識積累,可以養成一種直覺和品位,有時你就會覺得這個方向靠譜但就說不出具體原因。猜測之後,需要做些例子或者實驗,去驗證這個方案是不是真的對的。猜測僅僅是可能性,驗證才能確定它是不是真的。很多人會忽略了驗證步驟,將可能性直接當成是真的。就像其它科學實驗一樣,驗證的時候,一次驗證一個。
作為研究者,最重要的素質是好奇心。而作為實現者,需要嚴謹執行。有些事情看起來很簡單,但要做到滴水不漏會很難。
所有的開發工程師,都應該打好基礎。比如數據結構,多線程,網路,編程語言,內存模型,計算機體系,基本的圖形學,基本的數學,這些知識是所有領域都需要用到的。
具體到 iOS 開發,要熟悉日常開發工具的使用。Cocoa 主要是掌握內存管理,UIKit 的類層次和各種事件,GCD 等等。更具體的庫,往往可以現查現學,用得多了自然就會了。
我一般做p6和p5分層的問題是:是否熟悉runtime原理,是否能靈活運用。對幾種多線程方式熟練使用,知道有什麼坑。
讓同團隊的senior android開發羨慕嫉妒恨的程度
頸椎問題100問
iOS開發起步後 進階曲線不陡峭小白和老手沒有太大的鴻溝
推薦閱讀:
※如何評價 Swift 4 的開發計劃?
※請求參數用string好還是數字好?
※先開發 iOS 應用好,還是先開發 Android 應用好?
※哪些程序在 App Store 里是被禁止的?
※sdk和open api有什麼區別?
TAG:程序員 | 編程 | iOS開發 | iOS工程師 | Objective-C |