1.灵感 


遇到她前 

吃饭、喝水、排便 

粗糙地新陈代谢 

活得像一株植物 


遇到她时

成夜失眠 

她似深海的光 

不断在脑海浮现 

让我像吸食了海洛因 

沉迷、癫狂 


我知道 

不是我遇到了她 

而是她选择了我

三年前,我还是位科技记者,每天写着别人的故事,过着一成不变的生活。

偶然,在一次采访完客户回来的地铁上,PoPoem 的灵感瞬间在脑海闪现。当时的感觉,像是在茫茫人海中遇到了一位多年未见的知己,又像是在滚滚红尘中看到了一位两情相悦的女子。 

那一瞬间,她似一道光,钻进我的脑海。她的名字,她的样子,都是那么清晰。

我决定要把这个灵感付诸实际。 

这个灵感,首先来自PoPoem 这个名字。这是我想到的一个生造词,它很有趣,Po 是 Post 的缩写,网络用语,意为“发布”,比如 Po 照片。而 Poem 是诗,所以两个词连起来就是发布诗文的意思。并且,这个生造词朗朗上口,

也比较好记,令人印象深刻。

所以我就决定使用这个名字。当时,我立刻在AppStore 搜索了 PoPoem ,万幸,还没有开发者用过。  

那一刻,PoPoem 在我的脑海中已经有了雏形。


日常阅读过的诗集

但是,我是一位编程零基础的文科生,在此之前,我靠文字生活了六年,如何把这个雏形变成产品,是一个非常实现的问题。 

摆在我前面的有两个选择,一是找位懂iOS 开发的朋友帮忙,自己做个产品经理;二是自学 iOS 开发,程序员、产品经理都干了。 

正常人都会选择第一种方法,因为专业人做专业事,能高效、快速地开发出产品。而第二个方法则几乎不可能,先不谈能否学会iOS 开发,即便学会了,又能否顺利开发出产品?毕竟国内绝大部分商业项目都需要团队协作开发。而我只不过是一个以文字为生的文科生。 

思前想后,我还是决定选择后者。

如此决定,一方面是因为我身边没有懂iOS 开发的朋友,如果是找陌生的合伙人,配合起来肯定会很麻烦,并且当时我也不想将自己的灵感与他人分享。另一方面,因为科技记者这个身份,我接触到了许多独立开发者,自己也想尝试独立开发,算是再谋一条生路。毕竟这年头,单靠文字生活,已不是易事。 

下定决心之后,我便开始了自学iOS 开发的生活。  

 

2.自学 

 

寂寞的时候

就去学一门编程语言

 

因为计算机

不会欺骗,不会虚情假意

 

你输入代码

它便回馈你结果

我给自己制定了一个规划,半年时间学习iOS 开发,一年时间开发 PoPoem。 

感谢苹果公司。2014年,苹果在 WWDC 大会上推出了 Swift 编程语言,这是一款对初学者非常友好的语言,它非常的现代、安全、有趣,学习门槛并不高。因此,我选择了 Swift 作为学习及开发语言。 

自学过程我分为了两阶段,一是 Swift 语言的学习,一是 iOS 开发的学习。 

我认为,iOS 开发其实就是与 Xcode 的对话过程。既然是对话,首先就得知道一门双方都约定成俗的语言,这就像人与人的沟通,必须在同一个语言环境下,才能听得懂对方在说什么。而当你学会了一门计算机语言后,你便能使用各种语言技巧,实现自己的开发目的。  

因此,我必须得先学会Swift 语言。还好,这是一门非常简约的计算机语言,即便是没有任何编程经验的文科生,也能快速入门。我的学习诀窍是将 Swift 的语法文档下载到手机里,有事没事就翻出来看看,并不需要死记硬背,只需掌握一些基本类型、运算符以及逻辑控制语句就行。事实上,在后续的开发中,我所使用的都是非常简单的语句。 


苹果swift文档

在对Swift 语言有一定的了解之后,我便开始着手学习 iOS 开发。 

这里给大家分享一个非常重要的决窍,那就是在自学设计、开发类技能时,切勿单一地学习工具的用法,最好是结合一个实际项目,在完成这个项目的同时,进行针对性的学习,这样效率才会更高。

刚开始,我也没有按照这种思路,以为掌握了Cocoa Touch 的几个关键控件就能轻松学会了,为此我还在亚马逊上购买了一本厚厚的 iOS 10 开发指南,但事实上,这类书籍并没有什么卵用,我大概只翻了几页,便让它安安静静地躺在书架上吃灰了,后来搬家的时候,因为太重,便扔掉了。 

事实证明,看书是学不会iOS 开发的。那些打着 3 天学会 iOS 开发口号的作者基本上都是骗子。 

而我总结的一套有效的自学方法是:

首先明确你想开发的项目的类型,比如PoPoem 就是一个纯文字的社交应用,用户可以在上面写诗、看诗,关注其他诗友,这与微博非常相似,可以理解成纯文字版的微博。

明确了项目类型之后,便到网上(各有大开发论坛,如Code4App、cocoaChina等)去找类似项目的视频教程,然后便边看边学,最好是看完视频后,自己也能跟着完成教学中的项目。 

比较幸运的是,我在网上找到了黑马程序员刀哥的整套Swift 版微博开发视频教程。这套视频教程几乎涵盖了 iOS 开发的所有知识点。 

为了能快速看完整套教程,我把它们导进了手机,用两倍速率观看。那时候,我每天要乘坐两小时的地铁上下班,这两个的地铁时光,也是我一天学习效率最高的时候。白天看教学视频,晚上回到家,便把视频内容敲成代码,如果不记得了,便再看视频回顾下。如此反复,直到开发出一个完整的微博App 。 

至此,我认为自己算得上是一个初级 iOS 开发者了。  


3.开发 

 

简单的零与壹

造就了千变万化的世间

 

而我想用它们

开发出一片诗意的世界

学会了 iOS 开发,仍只是万里长征的第一步。真正的千山万阻,还在后面的独立开发。 

在着手开发之前,先需要明确使用哪家的云服务。在比较了国内几家BaaS 之后,我选择了 LeanCloud ,虽然这家的收费有些不合理,升级商用版后每日最低消费30元,对于一些流量较低的新应用不是那么友好,但它的数据存储服务里有一个应用内社交模块,集成之后不需要再写复杂的社交方法,极大地降低了开发难度,也缩短了开发时间,因此便选择了这家的云服务。

明确了云服务之后,就开始着手开发。

可能每位开发者的习惯都不同,我的开发步骤大致是,先用笔纸画出PoPoem 的草稿,然后再到 Xcode 中搭出整个框架,接着用假数据填充整个应用,初步完成基本功能。


 PoPoem 草稿图

当应用已经初具成型时,就需要进行最重要的一步了,绑定云数据。这个时候,就需要熟悉 LeanCloud  的数据存储和社交方法了。当然,在绑定数据之前,要先建立好用户模型,以及每条 Status(这里是用户创建的每篇诗文)的数据模型,然后再根据  LeanCloud  的各类方法进行绑定。

至于用到哪种开发架构模式,自学时接触到的是 MVVM 模型,这是目前最新也是最主流的架构模式,虽然构架逻辑比较简单,但由于本人没有解决 LeanCloud 数据绑定到视图模型上的问题,最终只好选择 MVC 架构模型,虽然 MVC 更加的简单,但由于大部业务逻辑都放到了 Controller 里,这导致了 Controller 里的代码不断增多,也影响了整个应用的性能。

在后续的版本更新中,也会考虑切换到 MVVM 模型。


MVVM模型

事实上,对于一个初学者来说,要独立开发一款产品,绝对不会是一件很顺畅的事情。在实际开发中,你可能会遇到各种难题,或者不知道该如何去实现某个功能,这个时候你就需要去问搜索引擎,往往前几条就能得到你想要的结果。

但有时,搜索引擎也不是万能的,你可能一两天还不能找到解决方法。这个时候,你可以上各种开发者论坛,通过发贴来求助各路大神,运气好的话,马上就能得到你想要的答案。

如果这样也不行,那么你只能根据文档,再通过改变现有的方法,进行各种尝试,往往试多了就可能会找到解决的方法。

当然,有些难题你可能花了好几天也没有解决,这个时候你不妨先放下这个问题,先去开发那些比较简单的功能,过段时间,你可能就有了前面那个问题的解决方法。

切记匆钻进死胡同,要懂得融汇贯通。

当你掌握了这种开发思维后,便可以灵活应用于其他平台的开发,比如微信小程序。我在开发完PoPoem iOS版本后,仅自学了一个月,便开发出了 PoPoem 的微信小程序版本。虽然两者使用的语言和编辑器都不一样,但编程思维是相通的,只需变换下语言及开发模式便可。


PoPoem 微信小程序截图

编程从来不一种重复性的脑力劳动,它需要你具备灵活的思维及变通能力,如果你不善于思考,又害怕掉头发的话,就可以考虑放弃这项工作了。

 

4.上线 

 

68.9M

40W行代码

构建出

这个诗意的世界

打包上传

静候你的下载

2018年4月1日,愚人节这天,我正式打包上传了 PoPoem 。

等待审核的日子是非常难熬的,每天都会隔一两个小时就打开iTunes Connect 后台查看审核进程。事实上,新提交的 App 都会经过大概一周的审核期,如果没有违背苹果公司的那准则,基本上都能通过审核。 

由于起初设置了付费下载,所以并没有多少下载量。后来开放免费下载之后,用户量也逐渐增加了起来。

现在许多社交应用上线后,都会公测一段时间,通过内部发放测试码,在一小部分目标用户或朋友中进行测试,这样有利于更好地发现BUG,避免在大范围正式上线后,出现一些不可控的问题。

公测真的是一个必要环节。因为一些功能,一两个人使用时,基本发现不了或者不会出现问题。但当用户量上来之后,就会突然显现出来。PoPoem 在上线之后  ,就出现了许多问题,最严重的一个就是闪退,由于用户量增多后,机型和系统版本五花八门,而一些控件和方法可能不兼容较老的系统版本,便会出现闪退的情况。

由于没有公测,PoPoem 在更新了几个版本之后,才算趋于稳定。


PoPoem 截图

上线一段时间后,PoPoem 用户量开始逐渐增长。当看到第一位用户上传了自己的作品时,内心还是没有抑止住激动。它就像一颗种子一样,埋在了这片贫瘠而又崭新的土地里。

许多用户在下载PoPoem 之后,都表现出了一种欣喜之情。他们会觉得相见恨晚,然后一股脑地把以前写过的诗文都发布到 PoPoem 。也有一些用户把它当作成一个记录日常心情的纯粹空间,每天都坚持写一篇日记式的诗文。当然,也有许多才华横溢的用户,他们创作出了一首首寓意深刻的佳作。

而这所有的诗文中,最让我感动的是烟初冷微凉所写的《我不会写诗》

无意间我找到这里

纯白新鲜的小世界

有一点憧憬与欣喜

 

一时间我想向全世界安利

这里有诗意与情怀

 

一时间又希望

它慢一点被大家发现

这首简单的小诗非常直观地反应出了许多用户的心境,他们不经意间来到这里,却像走进了一个纯白诗意的新大陆,这种欣喜之情只有懂得的人,才能够理解。

渐渐地,我收到了越来越多的用户反馈,有反馈BUG 的,有提建议的,也有鼓励和表示感激的。这让我觉得所有的付出,都得到了回报。这已经不再是一个我自愚自乐而开发的产品,而是一个能够让一部分心意相通的人,找到归属和共鸣的纯粹空间。

让大家在这样浮躁、不安的世间,找到一个安静、纯静的栖息之地。这正是PoPoem 的价值所在。

正如王小波所说,一个人只有今生今世是不够的,他还应当有诗意的世界。

诗,不是文人、作家、诗人的专属,它属于每个在城市打拼的年轻人,每个搬砖砌墙的打工者,每个面朝黄土背朝天的庄稼人,它属于这颗星球上每个活着的,以及死去的人。

诗,不是面包,不能让你果腹,但却是精神粮食;诗,不是果糖,不能让你觉得甜蜜,但却让人回味无穷;诗,不是鲜花,没有扑鼻的香气,但却让你的人生芳香四溢。

诗,它能带你去远方。


48
19