自從進入行動開發這個領域開始,算一算也十來個年頭,但論起年齡我也不過才三十出頭,真正從校園離開也才五六年。雖然稱不上鬼才,但至少在行動開發這個領域還算小有成就。但,我也是從 hello world 開始。最近發現的一項技能是,刻 UI 的速度非常快。如果技術是你的生存技能之一,何不讓他發光發熱。那我們就來談談是什麼樣的環境讓我刻 UI 這麼快。
刻 UI 沒什麼了不起
是的,刻 UI 真的沒什麼了不起,他只是實現已存在的規格、計劃,無庸置疑的,在台灣創業要生存下去難免要接個外包案,如果你沒有辦法快速分析客戶的需求與時程評估,還真不知道要用哪一把尺衡量。說穿了,Android / iOS 的 UI 都沒什麼了不起的,畫面就那麼小,只要畫面有出來,一個畫面了不起十個元件,十個元件都做過,你所要做的事情只是把他重組,就像玩積木一樣。所以只要有新的東西出來,非常 fancy 的 framework 釋出,至少 download 下來執行一下效果吧!百聞不如一見。
UI 元件到處都是
拜 github 與 open source 之賜,許多鬼才與善心人士將元件模組化,讓我們可以1分鐘學會 cover flow、日曆快速上手、拍照特效免痛之旅,但這些元件真的是你要的嗎?更進一步來說,元件模組百百種,你怎麼知道哪一個最適用,如果有客製的需求,何者所寫的 code 又是最能讓你「看得懂」的。找元件往往不是找最好用的,而是要找最適合的,如果不知道哪一個適合,每一個都要拿來試試,同一種功能的元件,測試個十來個是正常的事,如果連這一點都辦不到,或者說連這點時間都花不起,覺得從零開始寫一個更快的話,那也沒什麼好說的了。學無止盡,沒有人是通才,寫好一個 framework 是需要非常多心思和精神的,如果已存在的元件都不符合你的需求,到時候再重新設計一個也不遲,但在那之前,善用搜尋工具,看看在地球的另一端是不是有人遇到同樣的問題,而且已經找到答案。
客製化的畫面不能用元件,時間花下去就可以解決
人就是這麼犯賤,當平台 (Android / iOS) 提供一致的行為 (UI/UX) 時,就是有人想把畫面弄得不一樣,左邊塞一個,右中丟一塊,最好下面再塞一行字。這樣的東西的確是花時間就可以解決,所以?花了多少時間?直接用界面工具把元件拉一拉然後再寫 code 是初學者最容易的方式,除非沒有這種界面產生工具,這一點 Xcode 就幹的很好。比較有經驗的開發人員腦袋中都存有所有解析度大小,不是絕對,但一定包含大多數,看到一個欄位在畫面上的相對大小和位置,馬上就可以 mapping 到腦中的數值運算,建置的過程中還會將每一個 View 彼此間以某種關係建立相對位置 ,最後再利用 background color 來切割每個 View,透過這種技巧可以在第一時間將畫面呈現個8成,接下來的動作就是微調再微調。當然,有素質的美工在提供素材的時候就已經將所有按鈕、欄位所相隔的距離和坐標一一劃分清楚,一份清楚的美工素材,可以讓資深的 prograrmmer 快速拉出客製化的畫面,而且保證比用工具拉還快 (在這裡比較的是整體時間,用工具拉完還是得寫程式去連結兩者之間的關係)。
刻 UI 快只是熟能上手的問題
不知道在哪裡看到這樣的一段話,精通一個語言要5年,精通一個技術要10年。很多資深工程師都知道精通一個語言之後,要學第二個語言第三個語言其實不需要那麼久,因為很多東西需要的是抽象的邏輯和對函式庫的熟悉。這也是為什麼有人 RoR 學個兩三年就是大神,iOS 寫個兩三年就是鬼才,其實你只是沒看到他們在進入這個領域之前所有的付出而已。所以我們在寫每一行 code 都要當做是在學習,不能當做是在工作,工作在某種程度上是拿錢交差,學不到東西的,而學習除了讓你賺錢之外,對自己而言還學了一身本領。
我是硬底子的技術開發者,縱使在開發過程中充滿著不堪入耳的對話和註解 (笑),我想那些都是對於程式的熱愛,programmer 不該是被制約的,該是充滿想像力,某種程度而言,programmer 是擁有藝術細胞的創作者,不修邊幅是藝術的一種表現。
PS: 感謝 Garmin 很囉嗦的每一個平台畫面都要長一樣,不管是很美好的還是髒到噁心的 code 我都改過;感謝 App Store 的推薦排行榜,讓我每週有20來個優良 App 可以膜拜 (不過 App Store 最近有點偷懶,看來看去都那幾套);感謝台灣惡劣的創業環境,讓我得加減接外包並接受一切客戶不合理的 UI 要求。
最後感謝我的夥伴們,都知道我寫 code 的脾氣很不好,能夠有所包容 (雖然他們也沒好到哪去)。
「縱使在開發過程中充滿著不堪入耳的對話和註解 (笑)」
XDDDD