如何在20小时内开发一款应用
传统的应用程序开发流程包括集思广益、形成想法、验证、功能选择、设计迭代,以及最后的开发工作,这一连串的事件通常需要至少一个月的时间才能完成。这一次,我们决定在一天之内便完成从想法到应用开发的过程。当然,我们在20小时内所创建的应用程序虽然功能丰富,但其设计、安全性和可靠性还远远不及发行版的质量。本文除了记录我们的经验以外,还希望能够为那些长期以来一直有想法却迟迟未开展应用程序开发工作的朋友提供动力。
犯罪预警应用的开发时间表
第0~2小时
我在一个周日的下午一点与Sivamani会面。在见面之前,我们已经大概讨论过要开发一个iOS应用程序,帮助人们避免成为犯罪的受害者。我们一直以来都是攻击和破坏行为的受害者,所以希望建立一个预警系统,能够在人们无意进入犯罪高发区时通知他们。我们决定由该应用监控用户的位置,显示其对位置危险等级的评估,并列出该地区最常见的罪行。这样,用户能够避免汽车受损和人身攻击的危险。通过所提供的犯罪报告热点图以及定位系统,用户还能够根据自身的判断来调整地图上的热点。在前两个小时结束时,我们已经列出了想要的所有功能,并确保我们意见一致。
第2~5小时
我们中的两个人开始在线下收集原始数据,大约花费一个小时确定了几个数据源。这些数据源包括纵火、抢劫、攻击、蓄意破坏和性犯罪报告。使用Semantics3的Web收集程序,我们能够在半个小时内掌握数据,随后再用半个小时整理数据并将数据移植到SQL上。我们决定先专注于加州地区,因为这一天的目标是启动产品并使之正常运行,而不深入其他工作内容。同时,Sivamani开始启动iOS应用程序的基础架构工作,我也开始着手API方面的工作。
第5~9小时
API会接收来自应用程序的经度和纬度坐标,并返回该地点“危险等级”评估、该评估中的“置信度”以及进行评估所使用的原始数据的节流清单。我需要花费数个小时用Restify和Sequelize搭建一个MySQL ORM基本服务器,确保代码保留异步调用需要再花费两个小时。
同时,Vinoth已经使用JavaScript实现了一个算法,该算法考虑了每个罪行的地点和性质以及与该数据相关的源数据,其中包括罪行发生的日期和时间。Sivamani已完成了应用程序大部分功能的架构,包括定期轮询GPS和设计要显示罪行统计和详情内容的页面。该应用程序能够与我们为测试所建立的模拟静态API进行通信。
第9~14小时
我们本可以通过SQL查询的内嵌移动Haversian距离功能实现地理搜索,但显然,这不是长久之计。因此,我们改用Sphinx search,在唯一可用的Node-Sphinx连接器Limestone上努力了数小时后,终于使Sphinx地理搜索运行起来(支持地理搜索的Limestone代码很快将启动,目前的版本无法提供足够的支持)。
同时,Vinoth致力于将来自多个源的数据合并在一起,尤其是合并性犯罪和与一般犯罪的数据。然后,他将聚集算法合并到Node服务器,调整JSON响应以满足应用程序的要求,最后得到并调用API。此时,Sivamani已经完成了应用程序的地图和显示详细内容的视图,并使之与API协同工作。
第14~20小时
同时,Sivamani想到了一个有趣的功能。因为儿童很容易不慎进入危险区域,并且不可能想到用预警应用程序获取信息,因此他添加了一个“儿童模式”。从本质上来说,该应用程序将在孩子处于危险时自动向孩子的两个紧急联络人发送短信。Sivamani通过集成Hoiio API来实现这个功能,不久后,他调整了该应用程序的图形和色彩,并添加了精巧的修饰。
当Vinoth优化了API和测试算法时,我决定开始编写Android应用程序。我以前已经编写了多个应用程序,这些应用程序都需要多个地理位置和映射;因此,使用我以前编写的一些代码,便能够搭建基本框架。此后,我着手于快速复制Sivamani在iOS上所进行的工作。在第20个小时的最后,完成了Android应用程序,虽然里面没有Sivamani所集成的一些很酷的功能。