iPhone、iPad 外包開發 & 接案之有感!

iPhone、iPad 外包開發 & 接案之有感!

筆者不敢說 mobile platform 開發的年資有多久,以老中青三代簡易分類法屬於中生代而已,簡單描述一下筆者個人背景

● 第一次接觸手機程式是在 2002 年,平台為 wince3.0
● Symbian 則是從 2003 年開始,從 Symbian S60 2nd 一直到最近的 Symbian 5th 1.0
● J2ME 不是我的菜
● Android 從 2007 年開始
● iPhone 從 2008 年開始,一直到現在的 iOS 4

每個平台都有其特別的 know how,iPhone 開發上最大的特點在於 multi-touch 與 animation 實作上的方便,但是這也常常造成客戶的誤解。

● multi-touch 簡易上手並不代表實作容易;與客戶討論 spec 的時候一定會遇到的問題,就是客戶會盡可能的希望用手指就可以做到所有功能,比如在同一個畫面做出「上滑」、「下滑」、「45度角滑動」、「單擊」、「雙擊」、「不同區塊的單擊或滑動」、「拖曳」、「搖晃」、「吹氣」,通常討論到這兒就必需與客戶解釋不同的手勢會互相影響,並解釋原因為何;同一個畫面放置多個 View 的狀況之下,哪些 touch event 會互相影響、哪些不會;哪些東西是內建元件不支援的,如果要達到此效果必需自行重新實作該元件。

● iPhone 上常見的動畫並不代表 SDK 有提供,也不代表很容易實作。最常提到的三個動畫就是「cover flow」、「curl page」、「album 收合」,雖然實作上不是很難,但是 UI 這種東西永遠都會有人不滿意,更何況是動畫特效,而客戶往往不了解的就是小小的更改卻是大大的效能重 tune 。

Programmer 的誤解

iPhone 沒那麼神,並非什麼都很簡單;其實不管是客戶還是 Programmer 都一樣,總是有一部分的人認為 iPhone 是一個很好寫程式的平台,也就造就很多不必要的誤解。首當其衝的就是市場價格、app 素質、deadline 的誤判。這裡筆者並無法給予任何建議避免此情形發生,筆者曾遇過那種翻翻書且稍有經驗的 programmer,開什麼需求他都辦得到,deadline 也很完美,但在每一個階段的 review 卻無法達到需求;也有認識多年開發經驗的 programmer,開發時間 1~2 星期收1萬上下,該名開發者是以額外收入看待此事,實際上完成的作品基本上真的也符合外包商的需求,因為價位低,有些客戶也不太會要求東要求西(當然絕大多數價位低依然會開一堆需求),遇到這種 programmer 其實我也不好意思說什麼,雖然筆者所開發的 app 與該名友人在市場上是有所區隔,但這種行為的確就是破壞行情,厄殺不少後起新秀的生存空間。
iPhone programming 入門門檻並不算低。如果今天只是想寫寫小程式、繳交學校作業,相對之下,的確是可以在短時間完成一個引人注目的 app;一旦這個 app 不再是"小"程式,你所花的心思就不是看看書,寫過一些小程式就可以輕易上手了;舉例來說,初學者或者沒有 mobile 開發經驗的 programmer 也許一開始會依賴 nib (Interface Builder) 來 layout 畫面,iPhone 的 nib 就像是在 android 上刻 xml ui interface 一樣,是個又肥又大,而且有時不聽使喚,只是使用上較易上手並且比 android 的工具好用一些而已。
自從電信三雄接連開賣 iPhone 可以明顯感受到許多企業對 iPhone app 的急迫需求,而依目前市場的情形和接案 Programmer 的素質,若不考慮特例的話,我主要將接案方的 programmer 分為三類(這裡比較主觀)

高素質、有足夠能力深入開發:不是台灣沒有寫 Objective-C 的高手,而是許多企業的一線 programmer 不願去學習 Objective-C 或者是這些一線 programmer 在公司有更重要的工作被指派,除此之外,其它的人都被大企業徵召走了,所以通常接案 programmer 具有高度開發能力的人只有2種,一是一開始就會寫 Objective-C 的人且有多年 Mac 程式開發經驗,二是本身具有 Objective-C 開發能力並且有多年手機開發經驗。最重要的是他們不是特定企業的員工,或者有足夠工作外的時間投入在這上頭。
符合 iPhone 使用者經驗的一般 app:非一線 programmer,有多年的程式開發經驗,但願意學習 Objective-C,以求開出另一條血路的 programmer,這一型的人在市場上最多見,但有時會對客戶的需求招架不住,開發的 app 通常符合客戶的基本期望,但缺乏手機開發經驗,有時候會被手機開發的特性氣死。吃虧的通常是 programmer。
只是需要一個 iPhone app:這類 programmer 通常是看看書上上課,或者自學一陣子就出來吃這個市場,通常低估 iPhone 的實作難度,客戶提出的需求如果要重新實作 UI 元件,或者 tune 效能,通常就陣亡了,造成的後果很多,打破市場價格,programmer 花更多的時間去完成 app (因為不熟悉而開太多支票),app 不需期待能在 app store 佔有一席之地,deadline 一延再延,case 中途 phase out,吃虧比例為客戶廠商佔大多數。
如果今天要外包的案子屬於技術性,牽涉到整合自有平台,結案擁有原始碼,盡量尋找第一類 programmer。一方面 deadline 比較能掌控,程式也能有一定的水準,往後要與內部員工交接也較容易。價格6位數起價。費用高低在於付出多少人力與 deadline 時間的長短。這類的人可以視為年薪百萬的 RD,若薪資簡化到平均12個月來算,100萬/12個月 = 8.3萬,也就是說如果他週休二日每天花半天的時間在開發上,也不要想說會有低於41.5k/月的價碼。

若只是想為公司尋求另一條出路,app 未牽扯到特殊領域技術(僅單純邏輯上的操作或基本的 http access),建議找第二類的 programmer,為的是案子真的能結案,而且至少能符合需求低標。1個月內結案,價格2~8萬內。

第三類通常開價數千到2萬,deadline 1~3個星期,但往往真實情形是 deadline 拖到2個月,或者什麼需求可能都辦不到,最慘的就是 case 被 phase out。

凡事都有例外,也有第二類的 programmer,但收費是第三類的價碼,deadline 則能符合客戶預期的人,通常這一類就是後起新秀恨不得拔除以求痛快的人;這種例外也是打亂市場價格的主力,例如現在的網站開發就是一個血淋淋的例子。

iPhone/iPad 接案市場目前還算穩定其實有很大一部分原因是學生族群沒有大舉入侵,對學生而言的入門門檻不是寫程式的能力,而是初期花費;首先需要一台 mac (最便宜就 mac mini),再來要一台 iPhone/iPad,最後還需要每年 NTD 3,200 的 iPhone program 將開發版的程式放到實機測試 (可不是每個客戶都願意在每一階段 review 的時候可以先 JB 客戶廠商的 iPhone/iPad),有了這些前置作業後還需要時間學習 Objective-C 和 iOS SDK。由於以上種重原因,這也就是為什麼學生族群在 android 平台上活躍的情形比 iPhone 上來得高。

最後談談 iOS 的熱絡到底能存活多久呢? 快的話也許2年就飽合了,若 apple 持續給大家驚喜,也許就能延長它的壽命。如果後起新秀想跳進這個坑可能就要加把勁,畢竟學習也是需要時間的(實力夠強且有經驗的大概3~6個月),除此之外還要賭一下熱度會不會持續。

引用 techmemo
較新的 較舊