引用作者簡介:韓重贊,獨立開發者。零基礎學習開發,用 4 個月的時間製作出「0528」「戀人清單」「開墾世界」這 3 款應用。其中,「戀人清單」曾被 App Store 首頁推薦。
前段時間,我在 AppSo(微信號 appsolution) 分享了自己獨立開發的一款遊戲——「開墾世界」。
在文章留言中,發現有很多人驚訝我為何能 4 個月可以做出 3 款不錯的 app。除此之外,還收到許多關於「零基礎學開發經驗分享」的請求。
在被大家的學習熱情感動之餘,我寫了這篇文章來分享我的開發學習經驗。
入門前你需要知道這些
在分享之前,我列出了學開發的一些先決條件,估計也是很多人想問的問題:
Q1:真是零基礎學開發,而不是零基礎學代碼?
很多人認為,零基礎學代碼,很可能是之前有學過或做過其他領域的開發,如 PC 端開發、後台開發,現在來重新學習移動端開發。
如果你之前沒接觸開發,也沒關係。
本文是針對的是零基礎,完全無開發經驗的人寫的。
Q2: 我現在的專業/職業,跟程序員沒任何關係會有影響麼?
説説我自己吧,我的專業是工業設計,職業是 UI 設計轉產品。
你説和程序員有關係麼?好像有那麼點,至少我懂得什麼東西實現不了,什麼東西難實現,什麼東西容易實現。
而你可能是運營專員,可能是銀行櫃員,也可能是賣菜的。
學代碼這事,打個比方就是我是一個用過冰箱的,你是一個沒用過冰箱的,現在都要去造一個冰箱。不管是那種情況,我們彼此之前的路途相差並不遠。
Q3: 英文基礎不好學得來代碼麼?
還是説我自己,我高中英語常常全班倒數,大學英語沒超過 65 分,英語四級剛過及格線,六級呵呵。
所以你覺得呢?
Q4: 數學基礎重要麼?
我高中時數學算好的,大學因為是工業設計,只上過一學期的高數。
其實在大部分情況下,學代碼只要有初中級別的數學知識就好了。
Q5: 學代碼是更像學英語還是學數學?
這個也是我沒學代碼前,一直縈繞在心頭的問題。
現在我的感覺是,一開始你會覺得像在學英語,後來會覺得像在學數學。寫代碼很多情況有點類似於做數學證明題。
Q6: 需要哪些硬件設備?
學 iOS 開發,一台 Mac 和一部 iPhone 真的是硬性條件,沒辦法(啥,你説黑蘋果配 iPod touch?我覺得認真點還是算了吧)。
學Android要求會低一點,一台普通 PC 和一部 Android 機就可。
Q7: 需要會科學上網,會用 Google 麼?
我家裏沒搭梯子,一直用的國內某搜索引擎。
如果你喜歡搭梯子和看英文文檔,也是極好的。不喜歡也沒什麼可恥的,能找到知識,學到知識,會用知識才是本質。
Q8:做 iOS 是學 Swift 好呢,還是 Object-C?
有很多人説,Swift 強勢來襲,沒必要學 OC 了。
我也在工作的時候曾花了幾個晚上,學過一點 Swift。不得不説,Swift 的程序邏輯真的很人性化,很簡潔,很優雅。但是,現在學習的話為時尚早,不論是教學視頻、demo 例子,還是疑難解答都少的可憐。很多時候,你想要一個效果都找不到資源來做。
而 OC 的話,已經非常成熟,從小白到高手之間的所有資源,網上都找得到。
Q9: 需要看什麼書,有什麼教學網站推薦,甚至是相關學習 app?
最後這部分,估計是大部分人最想知道的。
書籍:
初學者可以先看看《Objective-C 基礎教程 第 2 版》這本書,我當時看的是電子版,上下班時在地鐵上用手機看。看了幾天,大概到書一半內容的時候就雲裏霧裏,完全看不下去了。我嘗試過從頭開始看,還是不行。
但是沒關係,這很正常,你只要對 OC 這門語言有一定印象就行。就像一個冰箱,你知道它大概多大、多重,有什麼形狀等信息就好了。
教學網站:
我只看過極客學院和慕課網的,裏面的教學視頻良莠不齊。
我看過幾個 OC 入門系列。每個視頻的時間都不是很長,大概 10 分鐘到 30 分鐘,照着裏面的步驟,依樣畫葫蘆做下來就好了。
一開始很簡單,後來的比較難,學完一遍就忘了,自己完全不知道怎麼寫。
但是沒關係,這也很正常。你只要對 Xcode 這個工具有一定的印象就行了。就像一個冰箱,你知道它需要用電,可以冷藏,可以冷凍啥的這些信息就好了。
論壇和資源:
GitHub 是程序員們的樂園,但小白看一下就好了,你可能很久以後才會真正用到;
CocoaChina 是不錯的論壇,小白也可以看看,以後有問題可以去這裏;
Code4App 上有很多 demo 例子,入門之後做一些好的效果,可以去這裏看看。
但一定要切記,真正動手做東西才是成長最快的方式,看書、看視頻、逛論壇都只是輔助而已。
看到這裏,如果你覺得自己有這些條件和覺悟,那就可以繼續接着看,我做第一個 app 的經歷。
我的第一款 App 開發經驗
注:下面的內容會涉及到一些 iOS 的開發術語,如果你沒有接觸過 iOS 開發,可能會看不懂,我儘量用最簡單的話來説明。
經驗一:不要選擇一個超出能力範圍太大的 app 來做,先做一個技術含量最低的產品練練手,增長自信心。
2016 年的 6 月 16 日,我下定決心開始我的獨立開發之路。
當時,雖然自己在過年前後看過一本入門的書和一些教學視頻。但小半年下來,我已經忘得一乾二淨,甚至連 Xcode 的打開新建流程,還是找了之前的網頁書籤重新練了一遍。
我知道以我那時的水平,做個拍照 app 簡直異想天開,估計連記事 app 也夠嗆。
我又急於做一個成品出來,這個成品不能是爛大街的計算器、天氣預報這類,沒有發揮餘地的 app。所以,這個成品必須對技術要求很低,可以用其他比如創意或設計來彌補。
看着自己手機裏上百個 app,突然,我看到了一款符合目標的文字冒險遊戲—— Lifeline(生命線)。
如果剔除掉 Lifeline 的一切輔助功能,如推送、模式轉換、語言更改等,它的核心技術點其實很簡單,就是一個顯示文字的視圖和兩個增加文字的按鈕。
所以,我只要實現「點擊一個按鈕,讓視圖加一行字」這個功能,基本上就可以做出一款像 Lifeline 一樣的 app 了。
(這是我當時真實的想法,後來發現核心技術遠遠不止這些,只能説幸虧當時這麼單純,不然就不可能一步步做下去了。)
經驗二:一切以用户體驗為中心,以目標產品為大方向。一步步從易到難解決問題,各個擊破。沉迷於技術研究或設計細節只會誤入歧途。
確定好產品方向之後,我開始製作 demo。
打開 Xcode,根據網上教程往 Storyboard(可以往裏面拖各種控件的可視化工具,對新手很友好)上拖了一個文本視圖和一個按鈕。
我先在這個文本視圖裏打上一行字,如「苟利國家生死以」。接着要做的事就是,點這個按鈕讓文本視圖增加第二行字「豈因禍福避趨之」。
我的直覺告訴我,這件事應該分為兩個步驟:
- 先學會如何點一個按鈕觸發一個效果
- 再學會做一個效果,讓文本視圖加一行字
於是,我在某搜索引擎上搜索「iOS 如何點擊按鈕觸發一個事件」,點開了幾個搜索結果,找到一個看起來挺靠譜的教程,就照着做。同理,我又把加文字的功能學會了。
很快在這個視圖裏,就出現了兩行字「苟利國家生死以」、「豈因禍福避趨之」。我每次點一下按鈕,「豈因禍福避趨之」就會出現。
但是,我發現了一個問題:每行字捱得太近了。我很聰明地在「豈因禍福避趨之」前面加了兩個回車符號,看起來就好多了。
在欣喜之餘,我又發現一個問題:當我按鈕點得多了,新增的「豈因禍福避趨之」會超出文本視圖區域。難道讓用户每次點一下按鈕,然後手動滑上去麼(太蠢了)?
我回頭看了一看 Lifeline,發現他會把新增的文字頂上來,這樣,就可以看到最下面的那句話了。
我又去網上搜教程,很快我就知道了讓文本自動頂上來的方法。
經驗三:做好 demo、設計稿、其他素材的準備,讓你在學習開發的過程中沒有後顧之憂,有萬事俱備只欠東風之感。
就這樣,我根據心裏想的產品原型方向,一步步完善這個 demo。每當我遇到一個問題,就去找資料搜教程。解決完之後無比興奮,但很快又會陷入新的難題當中。
在如此循環 N 次之後,終於完成了一款小明上學被車撞的超簡單文字冒險遊戲。在有了這樣一個 demo 的基礎上,我相信,要做出一個像 Lifeline 一樣的遊戲只是時間問題了。
所以,我開始放心地設計 UI 和編寫故事,花了大約 4 天時間,經歷了反覆修改設計稿和小説情節的痛苦之後,一套 UI 和一紙故事文檔已準備完畢。
經驗四:一個好的老師是成功的一半,但不要一味的靠別人指點來解決問題,做伸手黨只會讓你毫無進步。
在接下來沒日沒夜的十幾天時間裏,我遭遇了一個個更高層級的技術挑戰:
- 如何使用 tableView
- 如何控制劇情的顯示
- 如何保存數據到本地
- 如何刪除數據
- 如何加背景音和點擊音效
- 如何加 GIF
- 如何打包並提交 app
在此期間,我也數次遇到尋遍各種資料,也找不到解決方法的情況。但幸運的是,我的一個程序員朋友每次都能出手解決我的問題,並細心告知我其中的原理。
就像七龍珠裏的設定一樣,當賽亞人瀕死時如果有幸(比如吃仙豆)死裏逃生,就會成長很多。如果沒有這位朋友,我可能已經死了不知多少回了。
就這樣,2016 年 7 月 12 日成功上線了我的第一款產品——「0528」。
從 6 月 16 號正式走向獨立開發的道路,到完成這款遊戲,總共用了不到一個月的時間。
在這篇文章中,我回顧了自己從零開始學開發,以及第一次獨立開發產品的所有經驗。也希望自己的經驗,能對想要零基礎學開發的朋友提供幫助。
記住,真正動手做東西才是成長最快的方式。
本文由讓手機更好用的 AppSo 原創出品,關注微信號 appsolution,回覆「開墾世界」獲取本文作者韓重贊最新開發的遊戲和背後的理念故事。
資料來源:愛範兒(ifanr)
請按此登錄後留言。未成為會員? 立即註冊