在两年多的时间里,我将一款时间管理软件从1.0升级到了如今的6.1,期间添加了许多功能,也去掉过不少内容。但一款软件的制作,并不仅仅是敲敲代码,在代码之外,有更多需要做的事情。这些事情本该由一个团队的其他成员完成,但作为独立开发者,很多都需要亲力亲为。
这次我的分享,主要希望给其他有产品梦想的人一些参考,不论你是开发者、设计师、测试、还是学生。一款严肃的产品,需要怎样的过程和打磨。
关于这款软件
- 时间管理的目的是提高效率,并不是每件事都值得记录
- 专注比做了多久更重要,一次只做一件事
- 规划时间分配的时候,选择不做什么比做什么更重要
- 持之以恒的回顾与改进,量化并累积进步
- 充分理解时间的珍贵,培养对时间的感知力
根据我的简单介绍,可以看到软件有一定的复杂程度。毕竟我的初心是打造一站式的时间管理解决方案,其中一些我没有提到的模块例如番茄钟、睡眠、计时等都做了大量细致的工作,都可以单独拆分为独立的软件。然后还需要将它们合理自然的结合在一起。
下面是这款软件从设计到制作的大致流程,以及一些我认为的重点。语言方面我会尽量让自己看起来不那么像一个产品经理在发言。
Amos时间志的制作流程
1. 思路
首先当然要有一个思路,在此我们不讨论它的市场正确性。但作为一个软件的基础,希望做一款什么样的软件,有哪些功能,可以解决什么需求或问题这些问题都应该有比较明确的答案。举两个我自己的例子:
- 以Amos时间志为例,在一开始的时候我只是想要一些有时限的项目来做自我管理,好让我在没有监督的情况下不那么懒散,量化进展。同时采用倒计时的方式好让我不会忘记结束。
- 而我的另一款软件Amos背单词,最早的想法是对每个单词的掌握程度都建档,并根据记忆程度的不同自动区分复习方法,例如初学时只记意思,再慢慢的背读音、记拼写、学用法。一段时间后再把实在记不住的再放到一块重点记忆。最大程度提高大脑的使用效率。
2. 设计
思路确定后,我们需要针对思路进行设计。因为思路并不能成为行动的指南,而设计可以。这是一个非常关键的步骤,而设计也包含了许多部分。
- 如何使用软件来实现自己的思路,软件需要有哪些功能,这些功能又是如何工作和配合的(定位);
- 这些功能需要的界面是什么样子的,有多少按钮、图片、文字,有多少层级,风格和位置能否确定(UI);
- 这些页面如何配合功能进行动态展现、跳转,如何更好的呈现软件的创作意图和风格的统一(UX);
- 需要有哪些数据,不同的数据类型和关联,数据库的结构如何进行设计(数据库);
- 是否有在线和客户端两部分,假如有的话分别需要做什么处理来进行配合工作(服务器)。
3. 开发
之后当然就是进行开发了,这个部分大家习惯各不相同,使用的IDE也各有各的喜好。我就略过这一块了。其实只要思路和页面等确定了,这一步反而是比较轻松的,毕竟是从头开始的项目也没有接手别人的古董、也不需要军工级的多重冗余来提高稳定性、更没有紧迫的上线时间线。
作为个人开发者,自由的利用时间和在任何地方开始工作都是优势所在。不论在交通工具上,家里、街边转角的咖啡店里,拿出电脑就可以继续。在这个过程中,修图和设计各种图标也是重要技能。
我推荐的设计软件有:Sketch、Pixelmator、Vector magic,多语言的软件强烈推荐:Linguan。至于服务器测试、抓包之类的软件都是标配,就不推荐了。
4. 适配和测试
当我们作为一个码农心满意足的敲下最后一个代码时,其实活才干了一半。
因为从这里开始,是整个软件制作过程中最痛苦的适配和调试的过程。适配的工作,其实也是可多可少的,就看作为开发者希望把自己的软件打磨到什么程度。因为有些部分可能使用的频次很低、用户人群也很少。但缺失了这个部分,软件是否就达不到你本来预想的标准。
我在适配这款软件的时候,适配了不同的iPhone型号(这是必须的)、适配了iPad各种型号、适配了横屏的各种状况、适配了多种外语、适配了不同的主题颜色(根据背景颜色不同,文字相关都要动态调整)、适配了苹果的各种新功能(例如iPad的Split View)和新版本的系统。
其实我经常会收到来自用户的非常出色的建议,而有些建议对于代码可能仅仅是简单的一些改动。但可能我还是会拖很久,就是因为可以预见的适配工作量,需要大量的耐心和时间。
而作为测试,你得想象疯狂的用户都会对你的软件做些什么,在这个过程中你会发现无数的Bugs、逻辑断裂处、数据不匹配等等。你不断的新建、删除、计时、中途退出等等,还得在模拟器和真机上都不断的重复。
但即使这样,新版本上线后也会经常遇到闪退事件,由于不清楚使用场景,经常我都恨不得抱着电脑去给闪退的用户现场做测试和排查。
5. 市场营销
在干完了适配和测试的工作后(或者假装已经完成),需要对软件进行市场营销的准备工作了。不论你制作软件的初衷是什么,你都希望有更多的用户来使用。这就需要提炼软件的特点、找渠道宣传等。
一般需要设计一个好看有特色的icon,对你的软件做一个网站进行介绍,写文章发表在各类博客、科技类的网站上告诉别人软件的存在。当然,个人开发的软件和IT公司的推广又有许多不同,但是一般作为开发者,营销并不是主要技能。所以软件的传播更多还是要依靠准确的定位,和本身的质量来进行口碑传播。
6. 提交审核
当这些全部完成后,你以为最艰难的部分已经过去了,其实没有。因为作为iOS的软件,你需要提交给苹果爸爸进行审核,一次就过是极其罕见的情况。通常来说审核员都会告诉你哪哪不符合发布的规定,你需要改正后才能重新提交审核。而最惨的就是他告诉你从设计之初,有一个功能就是不符合规定的,你需要花大代价修复这一问题。
就像我曾经有次做了一个大版本的更新,提交审核后不到二小时软件就提示我开始审核,15分钟左右状态就变成了审核通过。但是在这之后的一个仅有小小修复的版本,苹果却告诉我软件有N处不符合规定。所以审核这个事情,有时候还是有点玄学。就像我另一款Amos背单词的软件升级现在还卡在审核上。
7. 与用户交流
在软件上线之后,很快就会有用户。并且假如软件设置了良好的沟通渠道,很快你就会收到来自用户的反馈。这是一个极其重要的过程,而对开发者来说也是一个需要重视的环节。就像在Amos时间志里,用户可以通过内置的聊天功能和我谈话,也可以摇一摇截屏后发送反馈,还可以通过邮件进行沟通。
当然这些反馈内容也是多种多样的,有异常较真写大段大段建议的用户,也有询问功能使用的,甚至还有专程过来骂人的。我其实非常享受直接和用户直接交流的过程,所以一般都会尽量淡定和及时的回复评论。不过也有一段时间由于工作太忙,一直在出差,无法给出更新的承诺,就拖了一段时间的交流。但总的来说,我更希望与用户建立一种特殊的关系,包含了信任与寻找同类的气息。
在这一切全都过去之后,当我打开淘宝、打开微信、打开12306、打开一些原本不太注意的软件时,我会产生一种敬畏感。因为我明白了在这些简单的界面后面有多少人付出了怎样的努力。
而之后更新的过程,就是将这个过程一遍又一遍重复的过程。
结尾
果然,兴趣是最好的老师。