在两年多的时间里,我将一款时间管理软件从1.0升级到了如今的6.1,期间添加了许多功能,也去掉过不少内容。但一款软件的制作,并不仅仅是敲敲代码,在代码之外,有更多需要做的事情。这些事情本该由一个团队的其他成员完成,但作为独立开发者,很多都需要亲力亲为。

这次我的分享,主要希望给其他有产品梦想的人一些参考,不论你是开发者、设计师、测试、还是学生。一款严肃的产品,需要怎样的过程和打磨。


关于这款软件


首先简单介绍下软件本身,这是一款时间管理软件,包括了时间记录、番茄钟、10000小时、项目管理等各种功能。通俗点讲有点像是时间块、潮汐、iHours、白噪声、待办事项等软件的结合版。

虽然看起来复杂,软件的设计初衷其实一直是简单的:方便计时 + 全面统计,毕竟当时自己用了一些其他的计时软件,经常会忘记结束,并且对数据的处理也不够完善,所以才有了这款软件的诞生。不过作为一种理念的承载,可能原先没有时间记录习惯的用户在初上手时会有些困惑。

与记账不同,时间是刚性且总量固定的,本质上来讲,所谓记时,其实是将一段时间从你有限的时间总量中减去。我对时间管理的理解是:
  1. 时间管理的目的是提高效率,并不是每件事都值得记录
  2. 专注比做了多久更重要,一次只做一件事
  3. 规划时间分配的时候,选择不做什么比做什么更重要
  4. 持之以恒的回顾与改进,量化并累积进步
  5. 充分理解时间的珍贵,培养对时间的感知力

软件力求能够化繁为简,为了让不同时间管理习惯的用户都能使用,主要功能一直是简单的计时 + 统计,不断丰富的只是时间采集的方式和工具。
AmosTime运作逻辑

在历次的更新中,Amos时间志也借鉴了许多财务管理的方式,来进行时间记录的处理和数据的呈现。现在软件可以查看每天的项目完成情况、一天中的时间分布、自定义时间段的宏观数据,也能够非常细致的查看每条时间记录数据、搜索相关词检索。可以非常直观和视觉化地了解自己的时间利用情况,并做针对性的改进。
数据统计


根据我的简单介绍,可以看到软件有一定的复杂程度。毕竟我的初心是打造一站式的时间管理解决方案,其中一些我没有提到的模块例如番茄钟、睡眠、计时等都做了大量细致的工作,都可以单独拆分为独立的软件。然后还需要将它们合理自然的结合在一起。



下面是这款软件从设计到制作的大致流程,以及一些我认为的重点。语言方面我会尽量让自己看起来不那么像一个产品经理在发言。


Amos时间志的制作流程


1. 思路

首先当然要有一个思路,在此我们不讨论它的市场正确性。但作为一个软件的基础,希望做一款什么样的软件,有哪些功能,可以解决什么需求或问题这些问题都应该有比较明确的答案。举两个我自己的例子:

  1. 以Amos时间志为例,在一开始的时候我只是想要一些有时限的项目来做自我管理,好让我在没有监督的情况下不那么懒散,量化进展。同时采用倒计时的方式好让我不会忘记结束。
  2. 而我的另一款软件Amos背单词,最早的想法是对每个单词的掌握程度都建档,并根据记忆程度的不同自动区分复习方法,例如初学时只记意思,再慢慢的背读音、记拼写、学用法。一段时间后再把实在记不住的再放到一块重点记忆。最大程度提高大脑的使用效率。


2. 设计

思路确定后,我们需要针对思路进行设计。因为思路并不能成为行动的指南,而设计可以。这是一个非常关键的步骤,而设计也包含了许多部分。

  1. 如何使用软件来实现自己的思路,软件需要有哪些功能,这些功能又是如何工作和配合的(定位);
  2. 这些功能需要的界面是什么样子的,有多少按钮、图片、文字,有多少层级,风格和位置能否确定(UI);
  3. 这些页面如何配合功能进行动态展现、跳转,如何更好的呈现软件的创作意图和风格的统一(UX);
  4. 需要有哪些数据,不同的数据类型和关联,数据库的结构如何进行设计(数据库);
  5. 是否有在线和客户端两部分,假如有的话分别需要做什么处理来进行配合工作(服务器)。
当然,虽然我列举所有我认为必要的设计,但在这个阶段的设计可以比较粗糙,毕竟在开发的过程中,设计方案会进行不断的改变和细化。但是无论如何,开发的路线要在开头定下来,毕竟伟人说过,方向比努力更重要。

这部分需要的工具有进行头脑风暴和思维整理的脑图类软件,例如xmind、MindNode、iThoughtsX等;以及一些流程图的软件,例如微软的Visio、Omni系列的OmniGraffle等;还有画草图的软件,你可以用铅笔在白纸上画,刚开始我就是这么做的,毕竟在思路不清晰的时候涂涂改改很方便。不过后面我就改用iPad Pro + Apple Pencil,使用Notability和GoodNotes来进行绘制。
这里插一句,对于有设计需求的人来说,iPad Pro真的是太好用了。
Amos背单词的设计草图


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、打开一些原本不太注意的软件时,我会产生一种敬畏感。因为我明白了在这些简单的界面后面有多少人付出了怎样的努力。

而之后更新的过程,就是将这个过程一遍又一遍重复的过程。


结尾

我最后想说的,其实是关于动机。我并不是一个科班出身的程序员,编程是自学的,因为我想随心所欲的做产品。而保持更新两年6个大版本更不是来自老板的监督,而是热情。记得有次在朋友圈转发了一篇最美推荐我App的文章,我有一个刚学编程时经常请教问题的在网易工作的朋友留言说:

果然,兴趣是最好的老师。

由于我有心理学的背景,在学编程之前我就会研究关于自我管理和工作效率的机制等。而我的工作却和此基本无关,所以做独立开发者更多是先前研究的一个延续。就像我在知乎就写过一些关于自我管理的方法论答案:https://www.zhihu.com/question/21097892/answer/19152921

所以找到对“创造”的兴趣点,或者做产品的真正理由,或许是比一系列流程更重要的核心。它可以帮你开始,也可以帮你在半夜敲代码的时候,感受到快乐。