那么,你想要从事移动开发?也许你想通过应用商店就可以获得预想的上百万的收入,或者仅仅只是在寻找一个新的挑战。无论如何,当你想设计你自己的app时肯定需要考虑许多具体的问题,当然我不是指的编程这方面。
在你开始之前,你需要弄清楚你想解决什么问题。你的用户是谁?他们在哪?他们将如何使用它?如果他们在同一时刻使用会对你的应用程序产生什么影响?
当你想到这些问题的答案的时候你可以把它们写下来,刻在墙上。当你面对一些困难的选择的时候可以回顾这些答案,也许它们会给你指明正确的方向。
1、选择你的平台
选择什么样的平台取决与你想做什么以及你的用户是谁。这些平台的最顶层是web。如果你想出售你的应用程序,那么你可能想要将它放在应用商店。如果你需要使用相机或者其他的设备的API,那么你可以使用本地的方法,或者使用一些封装好了的框架比如AIR/PhoneGap/Titanium。
这里没有明确的答案,你选择什么样的平台取决于很多的事情,因此不妨回顾一下刻在墙上的那些话,也许它们会告诉你答案。
2、甭想快速暴富
很多人对比了当前的应用商店的热潮和19世纪40年代末的加利福尼亚淘金热,正如当初的淘金热,有人成功有人失败,更多的是失败。我不建议人们只是为了赚钱而加入这行,那还不如到最近的赌场堵上几千英镑来的现实。
但是我们经常听到媒体上鼓吹一些具大的成功范例。我最喜欢的故事是加拿大的开发者 Matt Rix 花了几个月的晚上,做出了一款游戏,最终超越愤怒的小鸟,排名前10位,这可不是一件容易的事。那款游戏叫做 Trainyard ,他将它开源了,并且共享了数据。
两个月前,Flurry,一个移动应用分析公司发布报告称,目前苹果应用商店里面有超过50万应用程序,同时安卓电子市场里面也有将近35万。
再次强调这(指的致富)不是一件容易的事。
3、阅读HIG
Human Interface Guidelines(人性化界面指南)或者说HIG是一个所有开发平台都具有的文档,它告诉你怎么样去创建一个良好的用户界面,让用户在使用的时候感觉就像在家一样自然舒适。每个平台都是不同的,因此你需要考虑到每个细微的差别。
例如,iOS用户习惯在左上角有一个返回按钮,但对于Android来说,大多数机型都会有一个物理的返回按钮,因此在应用程序上面再增加一个只能带来不必要的冗余和混乱。
在黑莓平板上,用户希望通过下拉顶部状态栏来显示设置选项。用户往往不会感谢你提供了这些已知的人性化的行为,但是如果你没有这样做,他们一定会愤怒。
因此阅读HIG从而了解这些概念,但是请记住,这些都是简单的指导方针,但不是规则,更加不是分类的清单。
4、让功能具有趣味性
开发一个实用的应用程序并不意味着它一定会很无聊。我们在2009年开发的一个应用程序 Flash on the Beach 中,使用了一套标准的 iOS 组件,但是设计出来的外观和体验完全不同。我们希望让这个应用具有自己独特的个性,但是又不会让用户想要疏远。这在当时不是很常见,因此还获得了一个 Gulltaggen 奖。
我最喜欢的iPhone相机应用是Camera+,它的按钮和标题看起来很普通,但是具有可爱的自定义字体风格。
Tweetbot是我最喜欢的Twitter客户端,它结合了阴影和渐变的巧妙应用,使自定义提示框与应用的其他设计搭配得非常融洽,整个应用看起来非常漂亮,这就是对细节的注重。
在他的书 Tapworthy 里面,乔希·克拉克提到了“tap-worthiness”,我更喜欢“lickability”这个词,正是这种对细节的注重让我感觉非常好,甚至想要舔我的手机。
因此我们的应用可以遵循那些准则,同时仍然具有趣味性。现在在iOS5上通过使用新外观的API使这件事变得更加容易。
5、挑战惯例
这方面最明显的例子就是“pull to refresh”(下拉刷新)。你可能知道我具体在说什么。自从布里切尔在Tweetie 2 上介绍了这个词,这个设计概念已经飞速的传播到了其他的手机操作系统。
这个概念是简单的,你将一个列表下拉到中间某个位置,然后释放,这时就会产生一些事件,例如刷新数据,就好像你的Twitter信息。尽管当时没有很直观的产品,一旦你想到了它,它就是一个天才的、完美的“令人惊喜”的例子(Although not immediately obvious at first, once you get it, it's genius and is a perfect example of 'surprise and delight')。
今天我们可以看到许多使用了“pull to refresh”的应用,比如Gowalla, Facebook, Google+, Tweetbot, foursquare, oink, Fribi 等等,将来还会有越来越多的应用会使用它。
另外一个流行的模式是提高中间底部的工具栏按钮。Oink, foursquare, Fribi以及其他的许多应用都采用了这种方法,让人们关注应用程序的重点。
6、场景行为是不同的
当开发一个应用的时候,你只有30秒,也许是一分钟的时间去获得用户的注意。你的应用必须让用户一眼就能看懂并上手。千万不要使用复杂的界面,只需要给我们细节,对不对?
嗯,是但又不是(Well, yes. And no)。有时候,我在沙发上,通过放在膝盖上的平板看电视。或坐在我的浴室里无聊。统计说,其不只是我!
那么你的用户在哪里?他们会在做什么?设计也应该相应的考虑这些。
7、内容也应该不同
简单是好的,但是简单并不意味着愚蠢————我们需要专注于我们的应用程序的核心功能并编写高效的相关的copy。
然而micro-copy非常难写,超级难。
8、我的手指很粗
我的手指很肥因此它至少需要44像素的区域。如果不这样做那么点击会变得非常有难度。我们在FOTB2010这个应用里面就犯了这样的错误。
这个后退按钮有10像素高,但是具有一个巨大的触摸区域从而使得它容易点击。那么问题在哪里呢?它几乎看不到。一定要避免这种情况!
9、独立的解决方案
如果你将要为不同的设备开发一个应用,那么你需要大量的资源。通过将图像放大去适应一个平板不是一个好的方法。
最简单的方式是叫你的设计师一开始就创建各种规格的资源,这样当你需要在iTunes上面使用一个512x512的图标的时候就不会有问题了。
10、设计一个漂亮的图标
俗话说得好,你只有一次机会让用户留下良好的第一印象,你的图标是你的应用实现这一目标的基础。
我们可以在空白的画布上去做一些伟大的事情,通过这个机会,采用有效和漂亮的方法去解决你的问题。
我喜欢这样。
因此,让我们花些时间和精力去完善这些细节。去年,为了Flash on the Beach,我们开发了FOTB.me,这是我们第一次尝试只针对移动设备开发的webapp。
当网站被添加到iOS的主屏幕时,你可以自定义图标和启动画面。因此我们通过这个机会创建了一系列的图标和启动画面,一套适用于旧的iPhone,一套适用于新的iPhone(它具有“视网膜”屏幕),一套适用于横竖屏的iPad。
但是,这只会被极少数人看到。但如果他们注意到了,我希望他们会感到惊讶甚至微笑。如果是这样,那真是太棒了。
11、我的手机就是我的身份
这一切问题的原因是我的手机会透露很多我的信息。
你可以看到我安装了很多的应用程序,但是它们都整齐地归类在不同的文件夹,尽管我的办公桌上一团糟。这说明了什么?我也不知道。
底线就是我无法容忍我漂亮的桌面屏幕上是一个丑陋的图标————因为那会说明我是怎样的一个人呢?
12、不要让我去读那些他妈的手册(RTFM)
拜托!想想小孩。
如果你认为人们不会这样想,那你自己读一下桌面软件的说明书,那会比使用应用程序多花上两三倍的时间。
当iPad出来的时候,有一个杂志应用(这里就不点名了),使用了大量的手势导航。开始我还觉得很酷,这就像一个Minority Report(电影,“少数派报告”)那样的东西,很有趣。
一个星期之后我就不知道该如何使用它了,帮助屏幕也隐藏了起来,因此唯一的方法就是重新安装它。这可不是一个好的体验。
如果你想让使用一些疯狂的基于手势的导航,我们不会阻止你。但是如果你必须这样做,请将帮助屏幕放在最近的地方,并且最好能让你的应用值得我们花费这些时间。
13、不要伪装
我不是那种模仿本地应用程序外观和感受的webapp的粉丝。有一些UI框架会尽力让它们看起来就像本地控制。但是当用户从应用商店将它们下下来之后问题就产生了。
这些webapp本身就运行的比较慢,但是由于它们的外观和感受与其他的应用程序相似,因此用户会对它们产生错误的期望,从而将它们下载下来。它们做出了隐含的承诺但是却没有办法达到。
我会避免它。
14、你的想法不是独创的
NAS早在2001年就这么说过,“没有什么想法是独创的,太阳底下没有什么是新的事物。重点不是你要做什么,而是你怎么实现它。”“没有什么想法是独创的”,
不幸的事实是,想法是多如牛毛,执行就是一切。一个精心设计的产品在合适的时间加上一点点运气就能走很远。
15、为您自己打造
这样你能保证至少有一个幸福的用户。更重要的是,如果你为你自己打造,你会很清楚的知道你到底想要解决什么,怎样才能有的放矢。
16、听取用户的建议
如果你很幸运,在某些方面你的用户会支付你费用,所以有和他们沟通的途径是非常重要的。使用类似于GetSatisfaction的服务和用户交流,不管是反馈错误或提出新的功能建议。这里的关键是,它是公开透明的沟通。
Twitter就是这样操作的,但是还可以改进,你可以停止重复你的一个好主意(Twitter works too but can be a lot more work and you may end up repeating yourself a good deal)。
尽管我们听取用户的建议,并且他们有时候确实能提出一些伟大的想法,但是你也不必非要实现他们说的每件事,相信你自己的直觉。
17、潜近你的用户
分析非常重要的。它会让我们从用户的行为里面学到很多东西,并且会让我们看到用户是怎样使用你的应用的。
对于FOTB.me我们使用了Google Analytics,主要是针对Android,iPhone,iPad和PlayBook。我在Twitter上面看到有人说
@FOTBme I was hoping for this year when I heard web app, but on Opera/Symbian the site doesn't work at all...
(当我听到webapp之后期待了一整年的FOTB.me,结果它在Opera/Symbian上面完全不能用)
— Thomas Kr?ftner (@tkraftner) September 11, 2011
一开始我想,废话!这能影响多少人呢?结果通过Google Analytics 我发现4,241个访问者里面只有四个人受到影响。虽然不幸有0.09%,但是我们还是可以容忍这点。当然你也可能没有这么幸运。
几个小时后我们看到影响增大到了20个用户,0.5%的比例,但是我们仍然可以接受。
重点是,如果没有这些统计资料,我们没有办法知道这个问题到底有多大或者多小。有了这些数据(得知问题并不大)可以让我们睡个好觉。
18、原型!
这是一个伟大的工具让你可以向其他人表明你的想法并且可以检测技术上的可行性。我们倾向于写一套典型的、小的函数去检测解决一个问题的可能的方法。无论你做什么,首先在设备上实现你的原型。没有什么比在设备上直接测试更具有说服力,即使是滑动浏览一系列的图片(Nothing beats testing on the device itself, even if it means a series of images you can swipe through)。
这里有很多的工具可以让你创建原型如 Prototypes, Balsamiq and FieldTest,你甚至可以使用Keynote。
无论你选择什么,将它放在设备上并展示给你的朋友,以一杯啤酒的代价让他们给你反馈。但是当你完成了这些之后,扔掉这个原型(Whatever you choose, get it on a device and show a friend over a beer to get their feedback. But once you're done, throw the prototype away)。
我是说真的,扔掉它!这的确很难舍得,但你要知道你写的任何代码,一旦做成了产品,永远不会死(I mean it, throw it away! This takes discipline, but know that any code you write – once it makes it into production – will never die)。
无论用什么方式,你写原型很快。但是你不会希望用接下来的几年时间维护修改那段代码。扔掉它(You write prototypes fast, in whatever way works. Hack it up! But you do not want to spend the next few years supporting that code. Throw it away)。
19、开始
开始实现你的想法,因为是时候将它做出来了。这很难但是也很令人激动,这些想法终于不再只是卡在你的脑海中了,将它们带到现实中来!
如果从一开始就想把所有的事情做的很完美那很容易失败,你不需要把它做的很完美,但是我们会尽力。
20、我们可以使世界变得更好
这是一个崇高的目标,但我就是这么想的。作为设计者和开发者我们有这个能力去创造一些不仅仅影响我们自己而且也会影响其他人生活的东西。
如果我们让生活变得更加容易,更加简单,哪怕只是一点点,同时解决了某个问题,那我们就做了好事,可以让我们引以为豪的好事。