您的当前位置:首页正文

设计师如何4个月写出一款应用

来源:东饰资讯网

GAget(OS X上的小型Google Analytics widget应用)背后的故事

OK,其实吧,我这个标题有点误导性。我四个月前才开始学习Swift,在此之前,我没怎么接触过编程。我从没有开发过任何平台上的native app。现在想起来,我当时可能根本不知道自己在干啥。

为了让大家理解我如何做这件事,首先得讲清楚我为什么做这件事。

回到过去

我一直爱玩电脑。在我差不多8岁的时候,我爸给我买了第一台电脑,没玩几下我就上瘾了。那台破电脑跑着DOS系统,屏幕是CRT的渣屏,但是不管怎样,在它的帮助下我能做很多我想做的事情。这特么是多牛逼的事儿啊!当然了,我当时还是主要以玩游戏为主,但同时,这也让我爱上了所有跟电脑相关的东西。我逐渐学习到了电脑的工作原理,把各个程序里所有能点的东西都点了个遍,顺便还成为了朋友们口中的“技术通”。

接下来的几年里,我还是痴迷于玩游戏。我超爱反恐精英。这款游戏当时特别火,所以我总是有机会给自己所在的战队建网站。我喜欢设计和构建页面,但一段时间后,我开始致力于视觉效果和易用性方面的事情。我不断学习图像和用户体验知识,还顺带着经历了最新一波网页开发风潮。

今天,我作为全职UI设计师在一家匈牙利机构供职。对于当下流行的NodeAngularBootstrap框架,我是一点儿经验都没有。不过呢,这对我来说也不是什么大事。

但是,毕竟我还有些私人的设计项目,所以还是一直关注着HTML、CSS和JavaScript的相关动向。

GAget的创意

Paste_Image.png

大家给我点了一些赞,正是这些赞让我有动力继续深入下去。我发现widgets基本都是用HTML和JavaScript写的,于是我开始更认真地考虑开发这个东西。我想说的是,这可是我最熟悉的两种语言啊有木有。

几天之内,我在Dashboard上面做好了产品原型。我将其命名为GAget[读音跟gadget相同]——它是Google、Analytics和widget的缩写。这名字有点傻,不过聊胜于无嘛。

两周之后,也就是2011年8月,我发布了这个widget。

一段时间后,我就不再更新关于GAget的书签了...

Paste_Image.png

我必须全力以赴。

下一步做什么?

不过,塞翁失马,焉知非福:苹果向开发者开放了通知中心,而通知中心可以显示widget。好!支持!威武!有希望了!或许我这个小widget的成功故事可以继续了!

Paste_Image.png

我开始读关于Today extensions(这是苹果对widget的称呼)的官方文档。可是,那上都是些本地化的Objective-C代码。什么鬼啊哎!什么编译器、内存泄露、多线程进程……我可一点都不想弄这种事。对一个没做过这些的人来说,这些词完全就是天书。但我做出了决定,GAget必须成为一个本地化的widget才行!

最大的问题是,我根本不知道从哪儿开始。

Objective-C的纠结

@​i​n​t​e​r​f​a​c​e​ ​​R​e​m​i​n​d​e​r​V​i​e​w​C​o​n​t​r​o​l​l​e​r​(​)​
@​p​r​o​p​e​r​t​y​ ​(​n​o​n​a​t​o​m​i​c​,​ ​w​e​a​k​)​ ​I​B​O​u​t​l​e​t​ ​U​I​D​a​t​e​P​i​c​k​e​r​ ​*​d​a​t​e​P​i​c​k​e​r​;​
@​e​n​d​

interfacepropertynonatomicweak,这都是什么鬼?@和在这儿摆着是几个意思?好吧,老子唯一能看懂的就是end*了!谢谢!

更快更Swift的编程方式

那本书的教程对我来说完全无从下手。挣扎了几个月,本地化的widget还是如海市蜃楼一般。

那感觉竟如春风拂面般舒爽。代码看上去变熟悉了,就跟复杂版的JavaScript差不多!我搞定了Xcode,然后开始看着教程依葫芦画瓢。

我的目标是开发一个OS X widget,但大多数教程的重点只是Swift语言本身或iPhone应用开发,所以,“路漫漫其修远兮,吾将上下而求索”啊。我仍有很多问题没找到答案,例如:

-Widget如何与应用程序通信?(核心数据和app组)
-我能否使用鼠标悬停互动?(不能)
-如何才能只打开widget中的一行?(自动布局,再加上一些手动的高度调整)

我努力找到了所有我需要的东西,然后发现学习进展比我预想的还要快:Yosemite版本的GAget开始成形了。

Paste_Image.png

4个月之前,我根本搞不懂MVC、多线程进程、app对象、view controller、核心数据这些名词。不过,度过了无数个有教程和Stack Overflow陪伴的夜晚之后,我学会了Swift和OS X开发的基础知识。

除了一门新的编程语言之外,我还学到哪些

我明白,在Swift出来之前,开发个人项目是很耗费时间的事情。你可以做想做的事情而不用去管上司或者客户。你可以随便添加或删除功能,并且按照自己的节奏工作。

Deadlines

我发现,给自己一个最后期限是激励自己的绝好方式。每个新年前夜,我都跟我妻子坐下来,写一份下一年年我们想完成的事情的清单。这一次我列出来的是,我希望在1月末发布GAget的新版本:这是我的deadline。

虽然我最终还是比deadline晚了一个月(由于苹果的审查进程和一些其他的项目),但我为了完成这一目标,整个1月都在倾尽全力地工作。在纸上写下来要做的事情绝对是一个强大的动力。

学习周期

我还发现了学习新东西的三个阶段:激情阶段、彷徨阶段和解决阶段。

Paste_Image.png

1.激情阶段:一开始都是在这个阶段。你有一个新的构思并且开始学习新东西,所有事情看起来都很好,你开始设想下一步该做的事情。你很有动力,而且你的工作是你所熟悉和擅长的。但无论怎样,最后你总是会发现自己知识上存在着瓶颈。

2.彷徨阶段:当你碰到第一个实际问题的时候,你的激情和动力开始被消磨。你会感到茫然无助,不知所措。你甚至会感到绝望:会为了一个答案而对着Google发疯。

3.解决阶段:终于!那个烦死人的问题,你终于把答案给找着了。你发现自己正在以更快的速度进步,并且重拾了激情和动力。你返回到了第一阶段。

所以,当下一个循环开始的时候,你得记住:彷徨阶段可能会很长、很难熬,但终有一天你会乘舟破浪、到达彼岸。而寻找彼岸的过程本身,就是人生的乐趣所在。

---------------update-----------------

看到评论中大家看到了我的梗,深感欣慰。其实还有一两个梗...

Paste_Image.png
显示全文