编程零基础的设计师如何在 4 个月内开发出来一款 App?
创见干货:
本文作者是一名设计师,对编程一无所知。然而在短短四个月的时间里面,竟然开发出来了一款人气极高的 App。想知道他是怎么做到的吗?他又有哪些切身的体会跟我们分享呢?
我是一名设计师,从对编程一无所知,到发布出来一款 App, 只花了 4 个月的时间。
这是一个有关 GAget 的故事,一款在 OS X 环境下的实现 Google 数据分析的小插件。好吧,我先直言不讳的告诉你。这个标题有点儿「标题党」的嫌疑,会让你产生误会。其实,我在 4 个月之前才开始学习 Swift 语言,而在此之前我是多多少少了解一点编程知识的。但是我从来没有在任何的平台上面开发过任何原创的 App。如果你想知道我是怎么做到这一切的,我可以讲讲这其中的原因。
回到过去
我从小就喜欢计算机。当我在 8 岁的时候我爸就给我买了第一台属于自己的电脑,我在看到它的第一眼时就深深的迷住了。当时这台机子还运行的是 DOS 系统,模糊的 CRT 屏幕,尽管质量不怎么样,但是它确实能够执行你想要做的一些任务!这就足以让那时的我为之目眩神迷了!当然,和其他很多孩子一样,我在上面做的最多的事情 也就是玩儿游戏,不过也是通过游戏,我逐渐深爱上了整个的计算系统。我当时就开始学习了解台式机电脑是如何工作的,是如何使得一款程序能够运行的,最后身 边很多朋友都来向我请教电脑问题。
很快,时间跳到了 1999 年。那时候是 56k 的拨号解调器以及 ADSL 宽带。当互联网逐渐从匈牙利兴起的时候,我仍然非常痴迷于电脑。每天下午的大部分时间,我都待在学校的机房里面浏览当时名叫「Geocities」类型的 网站(注:因特网上的大型网站名称,由虚拟城市构成,向用户提供多种服务和咨询,用户可以建立并显示不同题材的网页。)那在当时我的眼中真的是美妙无比的 网站,我想要成为打造这种网站的一员。
于是,我开始学习 HTML 语言,开始创建我自己的第一个网站。那时候正值 1999 年,正准备跨越千年,我就将其命名为了 Zolee Site Millenium。它运行在我们学校的服务器上,只有通过 Frankensteinian 的地址才能够浏览,这种地址就类似于 www.kkt.piar.school.gov.hu/~hosszu2 这样的地址。尽管有着种种的限制条件,但是我确信我真的已经存在于网络当中,我开始踏入了全新的名叫互联网的世界,并且征服了其中一个小小的角落,那种感 觉真的棒极了。
之后的好多年里,我仍然深爱着游戏。我打了很多年的反恐精英,当反恐精英成为了最热门的游戏的时候,我还专门为自己的战队建了一个网站。但是我并没有在网站开发的路上继续精深下去,当时我正在学用户体验和界面设计,于是网站开发的风潮就这样与我擦肩而过了。
缘起
我在匈牙利宜家公司的做人机交互的全职设计师。对目前顶级的框架,比如 Node,Angular 以及 Bootstrap 完全不了解。不过我一直没有放弃 HTML,CSS 以及 JavaScript 相关领域的学习,闲暇之余自己私下里面搞搞个人的一些小项目。
在 2011 年的时候,我的网站大换样,整个设计重新做了一遍,并且在 DeviantArt 网站上得到了推介。之后的每天里,用户不断的到我的网站上浏览,我对此感到兴奋无比,但是我又在另外一方面感到沮丧。不是因为访客的数目,而是因为我根本 没有什么途径来追踪查询他们。当时我就面临两个选择:要么我继续使用 Google Analytics,要么我需要一款简单的 App 为我服务。这应该是在 OS X 的操作面板上的插件工具。我当时按照这个思路就开始寻找了。
但是后来我发现当时市面上的这些插件也好,小工具也罢,要么都太丑,要么太不好用,有的甚至是没有办法给我充足的数据。所以作为一个设计师,我的 头脑里自然而然的产生了一种想法,是不是我应该去想到一个最好的解决方案,并由此产生了一些设计思路,并将其发布在了 Dribble 上。
随之而来的是几十个点赞,这鼓舞了我,让我继续深入探索这个课题。于是我又发现当时现存的那些工具从本质上来说都是 HTML + JavaScript 的 APp,所以我开始非常认真的思考并真的动手开发。因为毕竟这是我曾经非常熟悉的两款语言。十几天后,一个能够运行起来的原型产品问世了!我给它取名是 GAget,(发音与 gadget 很相似),这个名字看上去有点儿傻,但是真的给人们留下了非常深刻的印象。
两个星期后,这款插件发布了出来,具体时间是 2011 年的 8 月份。
之后大家所给出来的反馈真的是惊人的。MacStories,SwissMiss 以及好多不怎么知名的博客都推荐了 GAget,一份匈牙利发布的 PC World 杂志上面甚至都出现了我的名字!
接下来该干什么?
如今,这款插件已经得到了 84000 次的下载量,每个星期都被数千人在使用着。我还和我其中的一个朋友开发出来了一款 iPhone 版本。但是好景不长,当 Apple 发布了 Yosemite,并且中断了 Dashcode 的开发之后,GAget 的未来就开始显得有点儿暗淡了。
不过,正如那句老话:「上帝给你关上了一扇门,自然会给你打开另外一扇门。」Apple 为程序员开放了通知中心,使得程序员可以将小工具在那里显示!是啊! 也许我的这个小插件还能够继续辉煌下去!
我开始阅读 Apple 有关插件的一些文档。不过它们都是原生的 Objective-C 代码!这我可不想做!因为之前从来没有尝试过。所以我下定决心,GAget 需要转变成为一款原生的插件!
目前最大的问题是我不知道从何处着手。
接触 Swift
后来我忽然想起来,Apple 在推出了 Yosemite 的同时,还推出了一款全新的编程语言 Swift。这对于每一个人都是全新的。很多科技界的大佬明星们都在写文章谈论它,讨论它怎么糟糕,又或者是在你碰 Swift 之前应该首先学习一下 Objective-C 语言。这种热闹的景象使得我的目光投向了它的身上,我将其下载下来,开始阅读它的文档。
之后的感受犹如春风拂面!所有的代码都似曾相识,欧一些就像是稍微复杂一点的 JavaScript。我燃起了热情,开始照着教程里面的一些示范照猫画虎的开始了自己的编程之路。
我的主要目标就是在 OS X 环境下开发出来一款插件,但是大部分的教程都是集中在 Swift 语言本身,以及 iPhone 的 App 身上,所以我必须继续搜索有用的信息,我当时还有很多没有办法解决,急需获得解释的问题,比如:
一款插件工具和一个内置的 App 是如何进行信息传递的?(核心数据和 App 组)
我是否能够利用悬浮互动?(不行)
当我关掉其他插件的时候,我如何只打开其中的一排插件?(自动布局和一些手动的高度调整)
Apple 有关插件工具的文档 让我开始在 GitHub 以及 Stack Overflow 上深度学习这些源代码,我花了数不清多少个小时想找出其中的答案。一路上,我把有用的一些链接全部收集起来,联系起来。我一点一滴的学习,最终,功夫不负有心人,这款 App 终于被我开发出来了!
四个月前,我完全不知道什么是「MVC」,什么是「多线程进程」,「App 目标」,「视野控制」,「核心数据」。 但是多谢网上的各种教程,Stack Overflow 这个网站,以及曾经熬过了无数个不眠不休的夜晚的我 。在四个月后,我掌握了 Swift 和 OS X 开发的一些基础
除了学了一门新的编程语言之外,我还学到的其他东西
我知道凭借着一己之力去打造一款个人的项目是一件非常酷的事情,你不需要走各种审批手续,不需要看你老板的脸色,按照自己的喜好去增添删减功能,而且还拥有一个自己独立的工作空间。但除了这些之外,我在自己的项目上还收获到了以下这几点道理:
时间底线
我发现, 给自己一个最后的时间底线能够极大的调动起来工作的积极性 。每一年的年末最后一天,我和我老婆都会坐在桌子跟前,非常认真的写一个愿望清单,上面写满了我们将在下一年达成的各种愿望。这次我就写下来:直到 1 月底的时候,我要发布 GAget 的新版本,这就是我的时间底线。
即便最终我还是没有真正按照这个时间底线来发布,而是往后拖了整整一个月的时间(这其中因为其他的几个项目以及 Apple 的审核流程),我还是觉得设立了时间底线能够给人以工作的压力和动力。这非常管用!
循环式的学习方式
我同样发现在学习阶段你会历经这么三个阶段:兴奋的心情,辛苦的付出,最终的解决,这三个因素构成了一个环状,相互促进影响。
兴奋阶段。你往往都是从兴奋阶段开始的。你有了一个不错的想法,开始学习一些新的东西。你所接触的这一切都是看起来那么美好,那么充满想象力,你迫不及待的想知道下一步该做些什么。你的动力澎湃十足,对于你所知道的东西一直在进行测试。但是,最终你会受限于知识的瓶颈。
煎熬阶段:你开始遇见了你的第一个问题,兴奋和野心随之一落千丈。你根本不知道什么能帮得到你,你也不知道该去搜索什么。绝望是现在最主要的心情。
解决阶段:最终,你找到了那个让你堵塞心情的问题的答案。你比之前更加快速的行动,曾经丢失的兴奋以及野心重新回来了!你重新回到了第一个阶段,然后循环往复。
所以在下次你即将出发的时候,请记得第二阶段往往时间最长,最为辛苦,但是解决方案就在不远的地方等着你,找到它便是整个过程中最有趣的部分。
来源: Medium 由Tech2ipo/创见花满楼编译