程式設計零基礎的設計師如何在4個月內開發出來一款App?

tech2ipo發表於2015-03-24

創見乾貨:本文作者是一名設計師,對程式設計一無所知。然而在短短四個月的時間裡面,竟然開發出來了一款人氣極高的 App。想知道他是怎麼做到的嗎?他又有哪些切身的體會跟我們分享呢?

我是一名設計師,從對程式設計一無所知,到釋出出來一款 App, 只花了 4 個月的時間。

這是一個有關 GAget 的故事,一款在 OS X 環境下的實現 Google 資料分析的小外掛。好吧,我先直言不諱的告訴你。這個標題有點兒「標題黨」的嫌疑,會讓你產生誤會。其實,我在 4 個月之前才開始學習 Swift 語言,而在此之前我是多多少少了解一點程式設計知識的。但是我從來沒有在任何的平臺上面開發過任何原創的 App。如果你想知道我是怎麼做到這一切的,我可以講講這其中的原因。

回到過去

我從小就喜歡計算機。當我在 8 歲的時候我爸就給我買了第一臺屬於自己的電腦,我在看到它的第一眼時就深深的迷住了。當時這臺機子還執行的是 DOS 系統,模糊的 CRT 螢幕,儘管質量不怎麼樣,但是它確實能夠執行你想要做的一些任務!這就足以讓那時的我為之目眩神迷了!當然,和其他很多孩子一樣,我在上面做的最多的事情也就是玩兒遊戲,不過也是通過遊戲,我逐漸深愛上了整個的計算系統。我當時就開始學習瞭解桌上型電腦電腦是如何工作的,是如何使得一款程式能夠執行的,最後身邊很多朋友都來向我請教電腦問題。

很快,時間跳到了 1999 年。那時候是 56k 的撥號解調器以及 ADSL 寬頻。當網際網路逐漸從匈牙利興起的時候,我仍然非常痴迷於電腦。每天下午的大部分時間,我都待在學校的機房裡面瀏覽當時名叫「Geocities」型別的網站(注:因特網上的大型網站名稱,由虛擬城市構成,向使用者提供多種服務和諮詢,使用者可以建立並顯示不同題材的網頁。)那在當時我的眼中真的是美妙無比的網站,我想要成為打造這種網站的一員。

於是,我開始學習 HTML 語言,開始建立我自己的第一個網站。那時候正值 1999 年,正準備跨越千年,我就將其命名為了 Zolee Site Millenium。它執行在我們學校的伺服器上,只有通過 Frankensteinian 的地址才能夠瀏覽,這種地址就類似於 www.kkt.piar.school.gov.hu/~hosszu2 這樣的地址。儘管有著種種的限制條件,但是我確信我真的已經存在於網路當中,我開始踏入了全新的名叫網際網路的世界,並且征服了其中一個小小的角落,那種感覺真的棒極了。

之後的好多年裡,我仍然深愛著遊戲。我打了很多年的反恐精英,當反恐精英成為了最熱門的遊戲的時候,我還專門為自己的戰隊建了一個網站。但是我並沒有在網站開發的路上繼續精深下去,當時我正在學使用者體驗和介面設計,於是網站開發的風潮就這樣與我擦肩而過了。

緣起

我在匈牙利宜家公司的做人機互動的全職設計師。對目前頂級的框架,比如 Node,Angular 以及 Bootstrap 完全不瞭解。不過我一直沒有放棄 HTML,CSS 以及 JavaScript 相關領域的學習,閒暇之餘自己私下裡面搞搞個人的一些小專案。

在 2011 年的時候,我的網站大換樣,整個設計重新做了一遍,並且在 DeviantArt 網站上得到了推介。之後的每天裡,使用者不斷的到我的網站上瀏覽,我對此感到興奮無比,但是我又在另外一方面感到沮喪。不是因為訪客的數目,而是因為我根本沒有什麼途徑來追蹤查詢他們。當時我就面臨兩個選擇:要麼我繼續使用 Google Analytics,要麼我需要一款簡單的 App 為我服務。這應該是在 OS X 的操作皮膚上的外掛工具。我當時按照這個思路就開始尋找了。

但是後來我發現當時市面上的這些外掛也好,小工具也罷,要麼都太醜,要麼太不好用,有的甚至是沒有辦法給我充足的資料。所以作為一個設計師,我的頭腦裡自然而然的產生了一種想法,是不是我應該去想到一個最好的解決方案,並由此產生了一些設計思路,並將其釋出在了 Dribble 上。

隨之而來的是幾十個點贊,這鼓舞了我,讓我繼續深入探索這個課題。於是我又發現當時現存的那些工具從本質上來說都是 HTML + JavaScript 的 APp,所以我開始非常認真的思考並真的動手開發。因為畢竟這是我曾經非常熟悉的兩款語言。十幾天後,一個能夠執行起來的原型產品問世了!我給它取名是 GAget,(發音與 gadget 很相似),這個名字看上去有點兒傻,但是真的給人們留下了非常深刻的印象。

兩個星期後,這款外掛釋出了出來,具體時間是 2011 年的 8 月份。

之後大家所給出來的反饋真的是驚人的。MacStories,SwissMiss 以及好多不怎麼知名的部落格都推薦了 GAget,一份匈牙利釋出的 PC World 雜誌上面甚至都出現了我的名字!

接下來該幹什麼?

如今,這款外掛已經得到了 84000 次的下載量,每個星期都被數千人在使用著。我還和我其中的一個朋友開發出來了一款 iPhone 版本。但是好景不長,當 Apple 釋出了 Yosemite,並且中斷了 Dashcode 的開發之後,GAget 的未來就開始顯得有點兒暗淡了。

不過,正如那句老話:「上帝給你關上了一扇門,自然會給你開啟另外一扇門。」Apple 為程式設計師開放了通知中心,使得程式設計師可以將小工具在那裡顯示!是啊! 也許我的這個小外掛還能夠繼續輝煌下去!

我開始閱讀 Apple 有關外掛的一些文件。不過它們都是原生的 Objective-C 程式碼!這我可不想做!因為之前從來沒有嘗試過。所以我下定決心,GAget 需要轉變成為一款原生的外掛!

目前最大的問題是我不知道從何處著手。

接觸 Swift

後來我忽然想起來,Apple 在推出了 Yosemite 的同時,還推出了一款全新的程式語言 Swift。這對於每一個人都是全新的。很多科技界的大佬明星們都在寫文章談論它,討論它怎麼糟糕,又或者是在你碰 Swift 之前應該首先學習一下 Objective-C 語言。這種熱鬧的景象使得我的目光投向了它的身上,我將其下載下來,開始閱讀它的文件。

之後的感受猶如春風拂面!所有的程式碼都似曾相識,歐一些就像是稍微複雜一點的 JavaScript。我燃起了熱情,開始照著教程裡面的一些示範照貓畫虎的開始了自己的程式設計之路。

我的主要目標就是在 OS X 環境下開發出來一款外掛,但是大部分的教程都是集中在 Swift 語言本身,以及 iPhone 的 App 身上,所以我必須繼續搜尋有用的資訊,我當時還有很多沒有辦法解決,急需獲得解釋的問題,比如:

一款外掛工具和一個內建的 App 是如何進行資訊傳遞的?(核心資料和 App 組)

我是否能夠利用懸浮互動?(不行)

當我關掉其他外掛的時候,我如何只開啟其中的一排外掛?(自動佈局和一些手動的高度調整)

Apple 有關外掛工具的文件讓我開始在 GitHub 以及 Stack Overflow 上深度學習這些原始碼,我花了數不清多少個小時想找出其中的答案。一路上,我把有用的一些連結全部收集起來,聯絡起來。我一點一滴的學習,最終,功夫不負有心人,這款 App 終於被我開發出來了!

四個月前,我完全不知道什麼是「MVC」,什麼是「多執行緒程式」,「App 目標」,「視野控制」,「核心資料」。但是多謝網上的各種教程,Stack Overflow 這個網站,以及曾經熬過了無數個不眠不休的夜晚的我。在四個月後,我掌握了 Swift 和 OS X 開發的一些基礎

除了學了一門新的程式語言之外,我還學到的其他東西

我知道憑藉著一己之力去打造一款個人的專案是一件非常酷的事情,你不需要走各種審批手續,不需要看你老闆的臉色,按照自己的喜好去增添刪減功能,而且還擁有一個自己獨立的工作空間。但除了這些之外,我在自己的專案上還收穫到了以下這幾點道理:

時間底線

我發現,給自己一個最後的時間底線能夠極大的調動起來工作的積極性。每一年的年末最後一天,我和我老婆都會坐在桌子跟前,非常認真的寫一個願望清單,上面寫滿了我們將在下一年達成的各種願望。這次我就寫下來:直到 1 月底的時候,我要釋出 GAget 的新版本,這就是我的時間底線。

即便最終我還是沒有真正按照這個時間底線來發布,而是往後拖了整整一個月的時間(這其中因為其他的幾個專案以及 Apple 的稽核流程),我還是覺得設立了時間底線能夠給人以工作的壓力和動力。這非常管用!

迴圈式的學習方式

我同樣發現在學習階段你會歷經這麼三個階段:興奮的心情,辛苦的付出,最終的解決,這三個因素構成了一個環狀,相互促進影響。

興奮階段。你往往都是從興奮階段開始的。你有了一個不錯的想法,開始學習一些新的東西。你所接觸的這一切都是看起來那麼美好,那麼充滿想象力,你迫不及待的想知道下一步該做些什麼。你的動力澎湃十足,對於你所知道的東西一直在進行測試。但是,最終你會受限於知識的瓶頸。

煎熬階段:你開始遇見了你的第一個問題,興奮和野心隨之一落千丈。你根本不知道什麼能幫得到你,你也不知道該去搜尋什麼。絕望是現在最主要的心情。

解決階段:最終,你找到了那個讓你堵塞心情的問題的答案。你比之前更加快速的行動,曾經丟失的興奮以及野心重新回來了!你重新回到了第一個階段,然後迴圈往復。

所以在下次你即將出發的時候,請記得第二階段往往時間最長,最為辛苦,但是解決方案就在不遠的地方等著你,找到它便是整個過程中最有趣的部分。

相關文章