在两个月内,从开始学习代码,到发布一个 Web App

4,769 阅读5分钟
原文链接: zhuanlan.zhihu.com

作者:Andrey Azimov

原文:I learned to code, build a web app and launch it on Product Hunt in 2 months

译者:Garrik

转载请表面出处


两个月以前我开始踏上了我的 Web App 制作之旅。 它是一个非常基础的网页应用叫做 When To Surf。 这是一款面向冲浪爱好者的APP, 通过它你能查询每天最佳的冲浪时间。 今天这款应用正式上线了。

我是Andrey

我来自乌克兰,为Railsware远程工作。 像很多在科技公司工作的人们一样, 我梦想着拥有一款属于自己的,每天被人们所使用的应用。 我梦想着有一天我能够实现这个愿望。


现有问题

现在, 我在巴厘岛远程工作。 恰巧巴厘岛是一个世界上最负盛名的冲浪圣地。 我在这里开始学习冲浪。 但当我开始准备冲浪的时候, 我发现我很难去理解现有的冲浪预测应用,例如Magic Seaweed,所提供给我的大量的数据,像潮汐,膨胀,周期,风速,方向等等。

上面这款应用提供了整整十页内容去指导用户如何去理解那些数据。 拥有大量的数据无疑是很好的,但是如果大多数人都无法理解它们,对于用户来说这款应用实在是缺乏可用性。

要是我能够把这些原始数据用代码进行分析,然后提示这些数据的可用性,这样会不会更好呢?

我很想去实现这个想法,但是我知道我不能。 因为我从来没有正式的写过代码。 而且我也完全不知道从何开始。 我甚至没有钱去雇佣一个团队去为我制作这款软件。 所以我只能选择暂时放弃。


Pieter Levels

几个月之后, 在Dojo, 这是一个在巴厘岛的众创空间,我遇到了Peter Levels, 他设立了一个目标在十二个月内创立十二个创业公司 并上线 Nomad List。 他的行动启发了我去尝试创立自己的应用,并且他建议我去看这个视频

下面是他的理论:

  • 解决你自己遇到的问题
  • 远离那些创业讲座
  • 用搜索引擎去学习写代码
  • 远离课程,书籍, 培训机构
  • 做现在你自己技术允许的事情(e.g. 不要去浪费时间学那些对于你来说太难的新东西)
  • 靠自己去做

按照他的这些概念我想要去尝试写代码并且创立自己的应用。 我并没有准备去做一个技术大牛, 能够用代码实现我的想法就足够了。


开始吧

在2016年11月3号,我在Namecheap花 $6 买了whentosurf.co这个域名。 仅仅是买了一个域名,就已经让我激动万分了。

之后我在atspace.com上面找到了免费的主机,并且把我的第一个“Hello World” HTML页面上传了上去。

我开始去想我可以在哪里得到我需要的数据呢? 我在Google上面搜索天气APIs,之后我找到了World Weather API. 它提供两个月的免费使用时间,我可以在上面找到一切我想要的数据。

对于打代码我可以说是完全小白。 所以我开始尝试那些我以前见过的代码语言。

我的第一个计划非常简单:从API上得到数据然后打印在我的HTML页面上。 这应该是非常容易。 我还想通过改变一行代码去测试是否这些数据能够快速应用。 在没有应用任何框架,服务器,编译的情况下这应该也不会很难。 不像那些大公司每天只改几行代码,做事缜密。 我应该快速开发。


前进,前进,前进

我开始第一次尝试写JavaScript。 对于很多新手来说, 只用一个浏览器去编译你的代码是很棒的。 但是Javascript还是有些难对于我来说。 尤其是异步回调函数更是让我难以理解。

var getJSON = function(url, callback) {
    var xhr = new XMLHttpRequest();

天哪,太难了


Python

当我想到Python, 它的代码有很好的可读性, 但是我需要去安装Django框架,并且需要为它设置一个服务器。 所以的之一切就只是为了运行代码! 我毅然决然的跳过了Python.


PHP

我又尝试了PHP, 我知道很多人并不喜欢PHP, 你需要Ruby, Node, React等等。 但是我并不在乎。 因为它的学习成本是最低的对我来说。 PHP在我的macOs和浏览器里已经预安装好了。 不用再费额外力气了。

在几分钟之内,我调用了我的第一个API并且得到了数据。

下面就是我最开始的代码:

$url=’http://api.worldweatheronline.com/premium/v1/marine.ashx?key=2a5fc1776e234e14a7e172153160312&q=-8.659263,115.130158&format=json&tide=yes&tp=1&date=;

$json = file_get_contents($url);

$data = json_decode($json);

$swell_period = $data->data->weather[0]->hourly[0]->swellPeriod_secs;

在一夜之间我做出了我的第一个Web应用:

几天之后,我在网上找到了一些设计启发,并且做出了新的界面:

我真的很骄傲


No git

与此同时,我身边的很多人建议我用GitHub, 不要再用FTP上传文件了。

但是我真的不喜欢每次像这样用git

git add
git commit -m "Bla Bla Commment"
git push origin master

相反的,我只是创建一个文件夹,然后备份昨天的数据。 虽然我不用git。 但是我还是有我自己基本的版本控制系统。


设置我的Web服务器

我的免费主机确实是有点太破了。 几周之后,它就开始不好好运行了, 大家开始建议我部署自己的VPS。

我有点慌了,我确实很想解决服务器的问题。 但是我的主机已经开始停止工作了。 所以我在DigitalOcean花了$5,按照他们的教程一步一步的搭建。 Oskar,一个瑞士小伙子,我在众创空间遇到了他,当我在VPS上遇到问题的时候他帮了我很多。


搬到HTTPS

这个小障碍没能阻止我前进。 我现在需要从浏览器获得用户的定位。 我用JavaScript去实现它。 但是Chrome只允许获取定在拥有HTTPS认证的站点。 所以要想做到这一点我开始学习部署Lets Encrypt。 这个东西这的非常难, 但是我还是再一次按照教程一步一步的实现了它。 之后我的站点搬到了HTTPS:


已经半程了

一个月之后, 我的代码开始变得越来越臃肿。 但是通过我的那些疯狂注释,我还是知道每一段代码都是在做什么的。


获得用户回馈

来自Lean SartupEric Ries建议我尽早去获悉用户的使用感受。

另一个我在众创空间遇到的人Marc,建议我把应用运行到Ipad上,并和一个意见箱一起安放在墙上。 这个建议很合理,因为在这里40%的人都是冲浪者(从沙滩到Dojo只需要一分钟)。 我的意见箱就像下面这样:

一天之后,我只获得了很少的一些意见。 很明显这个方法行不通呀。 冲浪者们看见这个应用并不是很激动。 大家并不很对这个应用感兴趣。


绝望黑沼泽

当我最初的热血开始燃烧殆尽。 激动已经不再。 它开始变得有些痛苦了。 我白天要做我的主要工作, 晚上还要熬夜去完成这个应用。

我给我的冲浪教练看我的应用, 他很快就说这行不通, 因为影响最佳冲浪时间的因素实在太多了。

我意识到他可能是对的,因为我还没能成功预测冲浪时间呢。 我的数据不够广泛,我的能力也不够去整合分析这些数据然后得出一个最佳时间。

我的应用现在也只能在巴厘岛用,我也没能让它足够可靠到能够应用在世界各地。 我希望世界上所有的冲浪爱好者都能打开 http://whentosurf.co 然后立刻获得和他相关的冲浪信息。

我想要放弃了,因为为什么我要做一个没人愿意用的应用呢? 而且我要怎么获得所有的数据来让我的应用在全世界得以应用呢?

我的眼睛也感染了。 我的眼睛非常红,不能够长时间盯着电脑屏幕。

但我还是滴完眼药水,继续打代码 : )


第二回合

我和我的朋友们谈论了这一切, 他们告诉我别管那么多,继续开发就是了。 Pieter告诉我这个很正常的,而且很多人在这里都选择放弃了,只是因为害怕没能继续下去。

在下一周我开始硬核起来,我用一个建立在金钱上的责任分配系统去督促我们完成任务,完成我的冲浪应用。

哪怕没人用我的应用,我也要完成它,我也要让它最终上线。

从晚上八点到早上六点, 我们听着歌,喝着茶。


最佳时间的公式

如果我想知道怎么获得最佳冲浪时间,但我还不会用代码实现它。 我只能去尝试些别的方法了。 我列了一个表格,然后实验各种公式:

试验过后,我把它们转换成代码


终于差不多了

现在我的应用开始可以为全世界任何一个地方进行评分。 即使这个地方并没有海滩。没关系,这只是我的第一个版本。至少它现在已经差不多像样了:


准备上线

第一个基本版本已经正式上线了。 这篇博客在这里也该差不多结束了,因为我才刚刚上线这款应用不是吗。 我会持续更新后续内容的。

我的计划是:

  • 我在Product Hunt上提交了这款应用(我不想依靠他人,相反的我想靠应用本身去获得成功。)

UPD: JUST LAUNCHED: When to Surf - Product Hunt

  • 在网上和社交媒体上与冲浪爱好者小组进行联系,和他们分享这款应用,并且获得回馈,持续改进应用。

  • 获得用户的邮箱在应用底部栏,根据他们的定位,我可以持续为他们发送最新的冲浪信息。(虽然我还没有些这部分代码)为了让他们能够持续访问应用。

  • 如果这一切都开始起作用了, 提供给新手更好的使用体验,以与像Magic Seaweed这样的大应用进行对抗。

花费的时间 & 金钱

时间

我用 Toggl记录下来我所花的时间,大概有118个小时

金钱

  • 域名 = $6/年
  • 服务器 = $5/年
  • 总共:$11

如果我让一个软件公司来开发这款应用,我敢肯定他们一定会花 $29,989以上 : )


工具使用

我用了:


我的代码是开源哒

我的代码在GitHub上是开源的。纯硬核,无MVC,全都放在了一个文件里。


我学到了什么?

  • 解决自己遇到的问题。 这样做更好,因为这些问题是你真的关心的。 把找到最佳冲浪时间点作为我的执念,这样可以让问题更简单(但依旧很难)。 你是你的第一个用户!

  • 找那些站在你的目标上的人做你的导师,众创空间是一个很好的地方,那里已经有很多人已经做出了成功案例。

  • 通过做而学。 别花时间去看教材啦。 学会用搜索引擎配合那些你所知道的知识。 如果你真的需要一位导师,真正好的是那些不要钱的,因为他们已经成功了,不再需要你的钱了!别去找所谓的创业导师,他们只是想吸走你的钱而已。

  • 别怕新技术。 我开始时害怕写代码,之后是APIs,设置服务器,再之后是HTTPS。 但是当我真的使用它们的时候,其实这些就是纸老虎而已。

  • 前进,前进,前进!千万别放弃。不断地尝试直到你完成了你的应用。


保持联系

这就是我与我写在胳膊上的日常计划 : )

如果你喜欢我的故事,你可以在Twitter上与我取得联系。 告诉我你对我的代码和应用的看法,怎么能让我的应用变得更好。

谢谢,

Andrey。


声明:本文以获得原作者授权,转载中文译本请联系译者,转载原文请联系作者。