零基礎學開發經驗分享

前段時間,我在AppSo分享了「開墾世界」App。在文章留言中,發現有很多人驚訝我為何能 4 個月可以做出 3 款不錯的 app。除此之外,還收到許多關於「零基礎學開發經驗分享」的請求。

在被大家的學習熱情感動之餘,我寫了這篇文章來分享我的開發學習經驗[手動滑稽]。

入門前你需要知道這些

在分享之前,我列出了學開發的一些先決條件,估計也是很多人想問的問題

Q1.真是零基礎學開發而不是零基礎學代碼?

很多人知道零基礎學代碼很可能是你之前學過或做過其他領域的開發,比如PC端開發,後台開發,然後現在來學移動端開發。

不,本文真是針對零基礎,無開發經驗的人寫的。

Q2.我現在的專業/職業,和程序員沒任何關係會有影響么?

說說我自己吧,專業是工業設計,職業是UI設計轉產品,

你說和程序員有關係么?好像有那麼點,至少我懂得什麼東西實現不了,什麼東西難實現,什麼東西容易實現。

而你可能是運營專員,可能是銀行櫃員,也可能是賣菜的。

學代碼這事打個比方就是我是一個用過冰箱的,你是一個沒用過冰箱的,現在都要去造一個冰箱。我們彼此之前的路途相差並不遠。

Q3.英文基礎不好學得來代碼么?

還是說我自己,我高中英語常常全班倒數,大學英語沒超過過65分,英語四級剛過及格線,六級呵呵。

所以你覺得呢。

Q4.數學基礎重要麼?

我高中時數學算好的,大學因為是工業設計只上過一學期的高數。

其實在大部分情況下,學代碼只需要你初中級別的數學知識就好了。

Q5.學代碼是更像學英語還是像學數學?

這個也是我沒學過代碼前一直縈繞在我心頭的問題。

現在我的感覺是一開始你會覺得像在學英語,後來你會覺得像在學數學。寫代碼很多情況有點類似於做數學證明題。

Q6.需要哪些硬體設備?

學iOS開發,一台Mac和一隻iPhone真的是硬性條件,沒辦法(啥,你說黑蘋果配touch?我覺得認真點還是算了吧)。

學安卓要求會低一點,一台普通PC和一隻安卓機就可。

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里的兩句話之間是空了一點間隙的,所以我很聰明的在『豈因禍福避趨之』前面加了兩個回車符號,這樣看起來就好多了。

在欣喜之餘我又發現一個問題:當我按鈕點的多了,新增的『豈因禍福避趨之』會超出文本視圖區域,難道讓用戶每次點一下按鈕然後手動滑上去么(太蠢了)?我回頭看了一看Lifeline,發現他會把新增的話頂上來,這樣就可以看到最下面那句話了。

所以我又去網上搜教程,很快我知道了讓文本自動頂上來的方法。

經驗三:

demo、設計稿、其他素材的完善準備讓你在學習開發的過程中沒有後顧之憂,有萬事俱備只欠東風之感

就這樣,根據我心裡想的產品原型方向一步步完善這個demo,每當我遇到一個問題就去找資料搜教程,解決完之後就無比興奮,但很快又會陷入新的難題當中。

在如此循環N次之後,終於完成了一個小明上學被車撞的超簡單文字冒險遊戲(可惜現在找不到源文件了)。

在有了這樣一個demo的基礎上,我相信要做一個Lifeline一樣的遊戲只是時間的問題了。所以我放心的開始設計UI和編寫故事了,

花了大概4天的時候,經歷了反覆修改設計稿和小說情節的痛苦之後,一套UI和一紙文檔已準備完畢。

經驗四:

一個好的老師是成功的一半,但不要一味的靠別人指點來解決問題,做伸手黨只會讓你毫無進步

在接下來沒日沒夜的十幾天時間裡,我遭遇了一個個更高層級的技術挑戰:

如何使用tableView;如何控制劇情的顯示;如何保存數據到本地;如何刪除數據;如何加背景音和點擊音效;如何加Gif;如何打包並提交App。

在此期間,數次遇到尋遍各種資料也找不到解決方法的情況。但幸運的是我的一個程序員朋友每次都能出手解決我的問題並細心告知我其中的原理。

就像七龍珠里的設定一樣,當賽亞人瀕死時如果有幸(比如吃仙豆)死裡逃生就會成長很多。如果沒有這位朋友,我可能已經死了不知多少回了。

就這樣,2016 年7月12日成功上線了我的第一款產品。

寫到這裡,回顧了我從零開始學開發到做出第一款產品的所有經驗。也希望自己的經驗能對想要零基礎學開發的朋友提供幫助。

憑一口氣,點一盞燈,念念不忘,必有迴響。

[本人已經授權AppSolution首發此文章]


推薦閱讀:

演算法相關學習資料整理
mpi並行中定義的變數每個cpu中都有嗎?
為什麼知乎上這麼多做計算機科學的?
你見過最美的程序是什麼?

TAG:iOS开发 | 程序 | 应用程序Application |