編程零基礎的設計師如何在4個月內(nèi)開發(fā)出來一款App?
創(chuàng)見干貨:
本文作者是一名設計師,對編程一無所知。然而在短短四個月的時間里面,竟然開發(fā)出來了一款人氣極高的 App。想知道他是怎么做到的嗎?他又有哪些切身的體會跟我們分享呢?
我是一名設計師,從對編程一無所知,到發(fā)布出來一款 App, 只花了 4 個月的時間。
這是一個有關 GAget 的故事,一款在 OS X 環(huán)境下的實現(xiàn) Google 數(shù)據(jù)分析的小插件。好吧,我先直言不諱的告訴你。這個標題有點兒「標題黨」的嫌疑,會讓你產(chǎn)生誤會。其實,我在 4 個月之前才開始學習 Swift 語言,而在此之前我是多多少少了解一點編程知識的。但是我從來沒有在任何的平臺上面開發(fā)過任何原創(chuàng)的 App。如果你想知道我是怎么做到這一切的,我可以講講這其中的原因。
回到過去
我從小就喜歡計算機。當我在 8 歲的時候我爸就給我買了***臺屬于自己的電腦,我在看到它的***眼時就深深的迷住了。當時這臺機子還運行的是 DOS 系統(tǒng),模糊的 CRT 屏幕,盡管質(zhì)量不怎么樣,但是它確實能夠執(zhí)行你想要做的一些任務!這就足以讓那時的我為之目眩神迷了!當然,和其他很多孩子一樣,我在上面做的最多的事情也就是玩兒游戲,不過也是通過游戲,我逐漸深愛上了整個的計算系統(tǒng)。我當時就開始學習了解臺式機電腦是如何工作的,是如何使得一款程序能夠運行的,***身邊很多朋友都來向我請教電腦問題。
很快,時間跳到了 1999 年。那時候是 56k 的撥號解調(diào)器以及 ADSL 寬帶。當互聯(lián)網(wǎng)逐漸從匈牙利興起的時候,我仍然非常癡迷于電腦。每天下午的大部分時間,我都待在學校的機房里面瀏覽當時名叫「Geocities」類型的網(wǎng)站(注:因特網(wǎng)上的大型網(wǎng)站名稱,由虛擬城市構(gòu)成,向用戶提供多種服務和咨詢,用戶可以建立并顯示不同題材的網(wǎng)頁。)那在當時我的眼中真的是美妙無比的網(wǎng)站,我想要成為打造這種網(wǎng)站的一員。
于是,我開始學習 HTML 語言,開始創(chuàng)建我自己的***個網(wǎng)站。那時候正值 1999 年,正準備跨越千年,我就將其命名為了 Zolee Site Millenium。它運行在我們學校的服務器上,只有通過 Frankensteinian 的地址才能夠瀏覽,這種地址就類似于www.kkt.piar.school.gov.hu/~hosszu2 這樣的地址。盡管有著種種的限制條件,但是我確信我真的已經(jīng)存在于網(wǎng)絡當中,我開始踏入了全新的名叫互聯(lián)網(wǎng)的世界,并且征服了其中一個小小的角落,那種感覺真的棒極了。
之后的好多年里,我仍然深愛著游戲。我打了很多年的反恐精英,當反恐精英成為了最熱門的游戲的時候,我還專門為自己的戰(zhàn)隊建了一個網(wǎng)站。但是我并沒有在網(wǎng)站開發(fā)的路上繼續(xù)精深下去,當時我正在學用戶體驗和界面設計,于是網(wǎng)站開發(fā)的風潮就這樣與我擦肩而過了。
#p#
緣起
我在匈牙利宜家公司的做人機交互的全職設計師。對目前***的框架,比如 Node,Angular 以及 Bootstrap 完全不了解。不過我一直沒有放棄 HTML,CSS 以及 Java 相關領域的學習,閑暇之余自己私下里面搞搞個人的一些小項目。
在 2011 年的時候,我的網(wǎng)站大換樣,整個設計重新做了一遍,并且在 DeviantArt 網(wǎng)站上得到了推介。之后的每天里,用戶不斷的到我的網(wǎng)站上瀏覽,我對此感到興奮無比,但是我又在另外一方面感到沮喪。不是因為訪客的數(shù)目,而是因為我根本沒有什么途徑來追蹤查詢他們。當時我就面臨兩個選擇:要么我繼續(xù)使用 Google Analytics,要么我需要一款簡單的 App 為我服務。這應該是在 OS X 的操作面板上的插件工具。我當時按照這個思路就開始尋找了。
但是后來我發(fā)現(xiàn)當時市面上的這些插件也好,小工具也罷,要么都太丑,要么太不好用,有的甚至是沒有辦法給我充足的數(shù)據(jù)。所以作為一個設計師,我的頭腦里自然而然的產(chǎn)生了一種想法,是不是我應該去想到一個***的解決方案,并由此產(chǎn)生了一些設計思路,并將其發(fā)布在了 Dribble 上。
隨之而來的是幾十個點贊,這鼓舞了我,讓我繼續(xù)深入探索這個課題。于是我又發(fā)現(xiàn)當時現(xiàn)存的那些工具從本質(zhì)上來說都是 HTML + Java 的 APp,所以我開始非常認真的思考并真的動手開發(fā)。因為畢竟這是我曾經(jīng)非常熟悉的兩款語言。十幾天后,一個能夠運行起來的原型產(chǎn)品問世了!我給它取名是 GAget,(發(fā)音與 gadget 很相似),這個名字看上去有點兒傻,但是真的給人們留下了非常深刻的印象。
兩個星期后,這款插件發(fā)布了出來,具體時間是 2011 年的 8 月份。
之后大家所給出來的反饋真的是驚人的。MacStories,SwissMiss 以及好多不怎么知名的博客都推薦了 GAget,一份匈牙利發(fā)布的 PC World 雜志上面甚至都出現(xiàn)了我的名字!
接下來該干什么?
如今,這款插件已經(jīng)得到了 84000 次的下載量,每個星期都被數(shù)千人在使用著。我還和我其中的一個朋友開發(fā)出來了一款iPhone 版本。但是好景不長,當 Apple 發(fā)布了 Yosemite,并且中斷了 Dashcode 的開發(fā)之后,GAget 的未來就開始顯得有點兒暗淡了。
不過,正如那句老話:「上帝給你關上了一扇門,自然會給你打開另外一扇門?!笰pple 為程序員開放了通知中心,使得程序員可以將小工具在那里顯示!是啊!也許我的這個小插件還能夠繼續(xù)輝煌下去!
我開始閱讀 Apple 有關插件的一些文檔。不過它們都是原生的 Objective-C 代碼!這我可不想做!因為之前從來沒有嘗試過。所以我下定決心,GAget 需要轉(zhuǎn)變成為一款原生的插件!
目前***的問題是我不知道從何處著手。
#p#
接觸 Swift
后來我忽然想起來,Apple 在推出了 Yosemite 的同時,還推出了一款全新的編程語言 Swift。這對于每一個人都是全新的。很多科技界的大佬明星們都在寫文章談論它,討論它怎么糟糕,又或者是在你碰 Swift 之前應該首先學習一下 Objective-C 語言。這種熱鬧的景象使得我的目光投向了它的身上,我將其下載下來,開始閱讀它的文檔。
之后的感受猶如春風拂面!所有的代碼都似曾相識,歐一些就像是稍微復雜一點的 Java。我燃起了熱情,開始照著教程里面的一些示范照貓畫虎的開始了自己的編程之路。
我的主要目標就是在 OS X 環(huán)境下開發(fā)出來一款插件,但是大部分的教程都是集中在 Swift 語言本身,以及iPhone 的 App 身上,所以我必須繼續(xù)搜索有用的信息,我當時還有很多沒有辦法解決,急需獲得解釋的問題,比如:
一款插件工具和一個內(nèi)置的 App 是如何進行信息傳遞的?(核心數(shù)據(jù)和 App 組)
我是否能夠利用懸浮互動?(不行)
當我關掉其他插件的時候,我如何只打開其中的一排插件?(自動布局和一些手動的高度調(diào)整)
Apple 有關插件工具的文檔讓我開始在 GitHub 以及 Stack Overflow上深度學習這些源代碼,我花了數(shù)不清多少個小時想找出其中的答案。一路上,我把有用的一些鏈接全部收集起來,聯(lián)系起來。我一點一滴的學習,最終,功夫不負有心人,這款 App 終于被我開發(fā)出來了!
四個月前,我完全不知道什么是「MVC」,什么是「多線程進程」,「App 目標」,「視野控制」,「核心數(shù)據(jù)」。但是多謝網(wǎng)上的各種教程,Stack Overflow這個網(wǎng)站,以及曾經(jīng)熬過了無數(shù)個不眠不休的夜晚的我。在四個月后,我掌握了 Swift 和 OS X 開發(fā)的一些基礎
除了學了一門新的編程語言之外,我還學到的其他東西
我知道憑借著一己之力去打造一款個人的項目是一件非??岬氖虑椋悴恍枰吒鞣N審批手續(xù),不需要看你老板的臉色,按照自己的喜好去增添刪減功能,而且還擁有一個自己獨立的工作空間。但除了這些之外,我在自己的項目上還收獲到了以下這幾點道理:
時間底線
我發(fā)現(xiàn), 給自己一個***的時間底線能夠極大的調(diào)動起來工作的積極性。每一年的年末***一天,我和我老婆都會坐在桌子跟前,非常認真的寫一個愿望清單,上面寫滿了我們將在下一年達成的各種愿望。這次我就寫下來:直到 1 月底的時候,我要發(fā)布 GAget 的新版本,這就是我的時間底線。
即便最終我還是沒有真正按照這個時間底線來發(fā)布,而是往后拖了整整一個月的時間(這其中因為其他的幾個項目以及 Apple 的審核流程),我還是覺得設立了時間底線能夠給人以工作的壓力和動力。這非常管用!
#p#
循環(huán)式的學習方式
我同樣發(fā)現(xiàn)在學習階段你會歷經(jīng)這么三個階段:興奮的心情,辛苦的付出,最終的解決,這三個因素構(gòu)成了一個環(huán)狀,相互促進影響。
興奮階段。你往往都是從興奮階段開始的。你有了一個不錯的想法,開始學習一些新的東西。你所接觸的這一切都是看起來那么美好,那么充滿想象力,你迫不及待的想知道下一步該做些什么。你的動力澎湃十足,對于你所知道的東西一直在進行測試。但是,最終你會受限于知識的瓶頸。
煎熬階段:你開始遇見了你的***個問題,興奮和野心隨之一落千丈。你根本不知道什么能幫得到你,你也不知道該去搜索什么。絕望是現(xiàn)在最主要的心情。
解決階段:最終,你找到了那個讓你堵塞心情的問題的答案。你比之前更加快速的行動,曾經(jīng)丟失的興奮以及野心重新回來了!你重新回到了***個階段,然后循環(huán)往復。
所以在下次你即將出發(fā)的時候,請記得第二階段往往時間最長,最為辛苦,但是解決方案就在不遠的地方等著你,找到它便是整個過程中最有趣的部分。