一位編程零基礎文科生的開發筆記

PoPoem開發故事 | 一位編程零基礎文科生的開發筆記


​Topic 1

靈感


遇到她前

吃飯、喝水、排便

粗糙地新陳代謝

活得像一株植物


遇到她時

成夜失眠

她似深海的光

不斷在腦海浮現

讓我像吸食了海洛因

沉迷、癲狂


我知道

不是我遇到了她

而是她選擇了我


三年前,我還是位科技記者,每天寫著別人的故事,過著一成不變的生活。

偶然,在一次採訪完客戶回來的地鐵上,PoPoem 的靈感瞬間在腦海閃現。當時的感覺,像是在茫茫人海中遇到了一位多年未見的知己,又像是在滾滾紅塵中看到了一位兩情相悅的女子。

那一瞬間,她似一道光,鑽進我的腦海。她的名字,她的樣子,都是那麼清晰。

我決定要把這個靈感付諸實際。

這個靈感,首先來自PoPoem 這個名字。這是我想到的一個生造詞,它很有趣,Po 是 Post 的縮寫,網絡用語,意為“發佈”,比如 Po 照片。而 Poem 是詩,所以兩個詞連起來就是發佈詩文的意思。並且,這個生造詞朗朗上口,

也比較好記,令人印象深刻。

所以我就決定使用這個名字。當時,我立刻在AppStore 搜索了 PoPoem ,萬幸,還沒有開發者用過。

那一刻,PoPoem 在我的腦海中已經有了雛形。


PoPoem開發故事 | 一位編程零基礎文科生的開發筆記

(日常閱讀的詩集)

但是,我是一位編程零基礎的文科生,在此之前,我靠文字生活了六年,如何把這個雛形變成產品,是一個非常實現的問題。

擺在我前面的有兩個選擇,一是找位懂iOS 開發的朋友幫忙,自己做個產品經理;二是自學 iOS 開發,程序員、產品經理都幹了。

正常人都會選擇第一種方法,因為專業人做專業事,能高效、快速地開發出產品。而第二個方法則幾乎不可能,先不談能否學會iOS 開發,即便學會了,又能否順利開發出產品?畢竟國內絕大部分商業項目都需要團隊協作開發。而我只不過是一個以文字為生的文科生。

思前想後,我還是決定選擇後者。

如此決定,一方面是因為我身邊沒有懂iOS 開發的朋友,如果是找陌生的合夥人,配合起來肯定會很麻煩,並且當時我也不想將自己的靈感與他人分享。另一方面,因為科技記者這個身份,我接觸到了許多獨立開發者,自己也想嘗試獨立開發,算是再謀一條生路。畢竟這年頭,單靠文字生活,已不是易事。

下定決心之後,我便開始了自學iOS 開發的生活。


Topic 2

自學


寂寞的時候

就去學一門編程語言

因為計算機

不會欺騙,不會虛情假意

你輸入代碼

它便回饋你結果


我給自己制定了一個規劃,半年時間學習iOS 開發,一年時間開發 PoPoem。

感謝蘋果公司。2014年,蘋果在 WWDC 大會上推出了 Swift 編程語言,這是一款對初學者非常友好的語言,它非常的現代、安全、有趣,學習門檻並不高。因此,我選擇了 Swift 作為學習及開發語言。

自學過程我分為了兩階段,一是 Swift 語言的學習,一是 iOS 開發的學習。

我認為,iOS 開發其實就是與 Xcode 的對話過程。既然是對話,首先就得知道一門雙方都約定成俗的語言,這就像人與人的溝通,必須在同一個語言環境下,才能聽得懂對方在說什麼。而當你學會了一門計算機語言後,你便能使用各種語言技巧,實現自己的開發目的。

因此,我必須得先學會Swift 語言。還好,這是一門非常簡約的計算機語言,即便是沒有任何編程經驗的文科生,也能快速入門。我的學習訣竅是將 Swift 的語法文檔下載到手機裡,有事沒事就翻出來看看,並不需要死記硬背,只需掌握一些基本類型、運算符以及邏輯控制語句就行。事實上,在後續的開發中,我所使用的都是非常簡單的語句。


PoPoem開發故事 | 一位編程零基礎文科生的開發筆記

(蘋果swift文檔)

在對Swift 語言有一定的瞭解之後,我便開始著手學習 iOS 開發。

這裡給大家分享一個非常重要的訣竅,那就是在自學設計、開發類技能時,切勿單一地學習工具的用法,最好是結合一個實際項目,在完成這個項目的同時,進行針對性的學習,這樣效率才會更高。

剛開始,我也沒有按照這種思路,以為掌握了Cocoa Touch 的幾個關鍵控件就能輕鬆學會了,為此我還在亞馬遜上購買了一本厚厚的 iOS 10 開發指南,但事實上,這類書籍並沒有什麼卵用,我大概只翻了幾頁,便讓它安安靜靜地躺在書架上吃灰了,後來搬家的時候,因為太重,便扔掉了。

事實證明,看書是學不會iOS 開發的。那些打著 3 天學會 iOS 開發口號的作者基本上都是騙子。

PoPoem開發故事 | 一位編程零基礎文科生的開發筆記

而我總結的一套有效的自學方法是:

首先明確你想開發的項目的類型,比如PoPoem 就是一個純文字的社交應用,用戶可以在上面寫詩、看詩,關注其他詩友,這與微博非常相似,可以理解成純文字版的微博。

明確了項目類型之後,便到網上(各有大開發論壇,如Code4App、cocoaChina等)去找類似項目的視頻教程,然後便邊看邊學,最好是看完視頻後,自己也能跟著完成教學中的項目。

比較幸運的是,我在網上找到了黑馬程序員刀哥的整套Swift 版微博開發視頻教程。這套視頻教程幾乎涵蓋了 iOS 開發的所有知識點。

為了能快速看完整套教程,我把它們導進了手機,用兩倍速率觀看。那時候,我每天要乘坐兩小時的地鐵上下班,這兩個的地鐵時光,也是我一天學習效率最高的時候。白天看教學視頻,晚上回到家,便把視頻內容敲成代碼,如果不記得了,便再看視頻回顧下。如此反覆,直到開發出一個完整的微博App 。

至此,我認為自己算得上是一個初級 iOS 開發者了。


Topic 3

開發


簡單的零與壹

造就了千變萬化的世間

而我想用它們

開發出一片詩意的世界


學會了 iOS 開發,仍只是萬里長征的第一步。真正的千山萬阻,還在後面的獨立開發。

在著手開發之前,先需要明確使用哪家的雲服務。在比較了國內幾家BaaS 之後,我選擇了 LeanCloud ,雖然這家的收費有些不合理,升級商用版後每日最低消費30元,對於一些流量較低的新應用不是那麼友好,但它的數據存儲服務裡有一個應用內社交模塊,集成之後不需要再寫複雜的社交方法,極大地降低了開發難度,也縮短了開發時間,因此便選擇了這家的雲服務。

明確了雲服務之後,就開始著手開發。

可能每位開發者的習慣都不同,我的開發步驟大致是,先用筆紙畫出PoPoem 的草稿,然後再到 Xcode 中搭出整個框架,接著用假數據填充整個應用,初步完成基本功能。


PoPoem開發故事 | 一位編程零基礎文科生的開發筆記

(PoPoem 草稿圖)

當應用已經初具成型時,就需要進行最重要的一步了,綁定雲數據。這個時候,就需要熟悉 LeanCloud 的數據存儲和社交方法了。當然,在綁定數據之前,要先建立好用戶模型,以及每條 Status(這裡是用戶創建的每篇詩文)的數據模型,然後再根據 LeanCloud 的各類方法進行綁定。

至於用到哪種開發架構模式,自學時接觸到的是 MVVM 模型,這是目前最新也是最主流的架構模式,雖然構架邏輯比較簡單,但由於本人沒有解決 LeanCloud 數據綁定到視圖模型上的問題,最終只好選擇 MVC 架構模型,雖然 MVC 更加的簡單,但由於大部業務邏輯都放到了 Controller 裡,這導致了 Controller 裡的代碼不斷增多,也影響了整個應用的性能。

在後續的版本更新中,也會考慮切換到 MVVM 模型。


PoPoem開發故事 | 一位編程零基礎文科生的開發筆記

(MVVM模型)

事實上,對於一個初學者來說,要獨立開發一款產品,絕對不會是一件很順暢的事情。在實際開發中,你可能會遇到各種難題,或者不知道該如何去實現某個功能,這個時候你就需要去問搜索引擎,往往前幾條就能得到你想要的結果。

但有時,搜索引擎也不是萬能的,你可能一兩天還不能找到解決方法。這個時候,你可以上各種開發者論壇,通過發貼來求助各路大神,運氣好的話,馬上就能得到你想要的答案。

如果這樣也不行,那麼你只能根據文檔,再通過改變現有的方法,進行各種嘗試,往往試多了就可能會找到解決的方法。

當然,有些難題你可能花了好幾天也沒有解決,這個時候你不妨先放下這個問題,先去開發那些比較簡單的功能,過段時間,你可能就有了前面那個問題的解決方法。

切記匆鑽進死衚衕,要懂得融匯貫通。


PoPoem開發故事 | 一位編程零基礎文科生的開發筆記

(PoPoem APP截圖)

當你掌握了這種開發思維後,便可以靈活應用於其他平臺的開發,比如微信小程序。我在開發完PoPoem iOS版本後,僅自學了一個月,便開發出了 PoPoem 的微信小程序版本。雖然兩者使用的語言和編輯器都不一樣,但編程思維是相通的,只需變換下語言及開發模式便可。


PoPoem開發故事 | 一位編程零基礎文科生的開發筆記

編程從來不一種重複性的腦力勞動,它需要你具備靈活的思維及變通能力,如果你不善於思考,又害怕掉頭髮的話,就可以考慮放棄這項工作了。


Topic 4

發佈


68.9M

40W行代碼

構建出

這個詩意的世界

打包上傳

靜候你的下載


2018年4月1日,愚人節這天,我正式打包上傳了 PoPoem 。

等待審核的日子是非常難熬的,每天都會隔一兩個小時就打開iTunes Connect 後臺查看審核進程。事實上,新提交的 App 都會經過大概一週的審核期,如果沒有違背蘋果公司的那準則,基本上都能通過審核。

由於起初設置了付費下載,所以並沒有多少下載量。後來開放免費下載之後,用戶量也逐漸增加了起來。

現在許多社交應用上線後,都會公測一段時間,通過內部發放測試碼,在一小部分目標用戶或朋友中進行測試,這樣有利於更好地發現BUG,避免在大範圍正式上線後,出現一些不可控的問題。

公測真的是一個必要環節。因為一些功能,一兩個人使用時,基本發現不了或者不會出現問題。但當用戶量上來之後,就會突然顯現出來。PoPoem 在上線之後 ,就出現了許多問題,最嚴重的一個就是閃退,由於用戶量增多後,機型和系統版本五花八門,而一些控件和方法可能不兼容較老的系統版本,便會出現閃退的情況。

由於沒有公測,PoPoem 在更新了幾個版本之後,才算趨於穩定。


PoPoem開發故事 | 一位編程零基礎文科生的開發筆記

(PoPoem APP截圖)

上線一段時間後,PoPoem 用戶量開始逐漸增長。當看到第一位用戶上傳了自己的作品時,內心還是沒有抑止住激動。它就像一顆種子一樣,埋在了這片貧瘠而又嶄新的土地裡。

許多用戶在下載PoPoem 之後,都表現出了一種欣喜之情。他們會覺得相見恨晚,然後一股腦地把以前寫過的詩文都發布到 PoPoem 。也有一些用戶把它當作成一個記錄日常心情的純粹空間,每天都堅持寫一篇日記式的詩文。當然,也有許多才華橫溢的用戶,他們創作出了一首首寓意深刻的佳作。

而這所有的詩文中,最讓我感動的是煙初冷微涼所寫的《我不會寫詩》


無意間我找到這裡

純白新鮮的小世界

有一點憧憬與欣喜

一時間我想向全世界安利

這裡有詩意與情懷

一時間又希望

它慢一點被大家發現


這首簡單的小詩非常直觀地反應出了許多用戶的心境,他們不經意間來到這裡,卻像走進了一個純白詩意的新大陸,這種欣喜之情只有懂得的人,才能夠理解。

漸漸地,我收到了越來越多的用戶反饋,有反饋BUG 的,有提建議的,也有鼓勵和表示感激的。這讓我覺得所有的付出,都得到了回報。這已經不再是一個我自愚自樂而開發的產品,而是一個能夠讓一部分心意相通的人,找到歸屬和共鳴的純粹空間。


PoPoem開發故事 | 一位編程零基礎文科生的開發筆記

(PoPoem 2.0版本已適配深色模式)

讓大家在這樣浮躁、不安的世間,找到一個安靜、純靜的棲息之地。這正是PoPoem 的價值所在。

正如王小波所說,一個人只有今生今世是不夠的,他還應當有詩意的世界。

詩,不是文人、作家、詩人的專屬,它屬於每個在城市打拼的年輕人,每個搬磚砌牆的打工者,每個面朝黃土背朝天的莊稼人,它屬於這顆星球上每個活著的,以及死去的人。

詩,不是麵包,不能讓你果腹,但卻是精神糧食;詩,不是果糖,不能讓你覺得甜蜜,但卻讓人回味無窮;詩,不是鮮花,沒有撲鼻的香氣,但卻讓你的人生芳香四溢。

詩,它能帶你去遠方。


Yande.Nie


分享到:


相關文章: