零编程基础的我是如何在 15 岁之前仅用 9 个月开发了 9 款 App?

270 阅读13分钟

​​作者:Samarth Jajoo​

原文来自CSDN公众号

最近一年我做了很多事情,在这段日子里我花了大量的时间来学习、练习编程然后构建实际的项目。

本文我将给大家分享自己这 9 个月里关于编程的心路历程,如何接触的编程,如何克服拖延症,如何将自己从迷茫中拯救出来,如何在这 9 个月内构建了 9 个应用程序,以及如何发现了自己最喜欢做的事情。

阅读为我打开科技世界的大门

我之所以能够进入科技领域,这一切都源于阅读。我一直以来都非常热爱阅读,当我拿到父亲送我的 Kindle 时,简直爱不释手!在头六个月里,我每天使用它的时间都超过一小时。我甚至还为它写了一篇评论文章,并且很幸运地发表在了当地的报纸上。

当时 11 岁的我有一些想法,我觉得这些想法可以让 Kindle 变得更酷,于是我给杰夫.贝佐斯发了一封电子邮件。邮件如下:

大家可能很想知道我怎么会有杰夫.贝佐斯的邮箱地址。实际上我并没有。起初我想通过谷歌进行搜索,但是并没有获得有用的结果,最后我把杰夫和贝佐斯以及他名字的首字母进行随意组合,抱着试一试的心态把邮件发给了多个名字组合。

事实证明我的方法是正确的,其中有一个真的是杰夫.贝佐斯的邮箱地址。大约两个月后,我母亲接到一个电话(我把她的电话号码写在电子邮件中),电话那头说要找我。

以下是我们电话对话的内容:

亚马逊员工(后面简称 A):你好,请问是萨玛尔吗?

我:是的,我是萨玛尔。你也可以叫我萨姆。

A:好的,萨姆,自我介绍一下,我是一名亚马逊的员工。你之前给杰夫.贝佐斯发了一封邮件,我致电的目的是想跟你谈谈这件事。我们很乐意听到你关于亚马逊和 Kindle的想法,在此我想邀请你到访我们在印度金奈的办公室,这个办公室主要负责研发 Kindle 以及其他更多的设备。

听到这里,我简直不敢相信,我深深地怀疑这是不是有人在跟我开玩笑。

我:不好意思,请稍等一分钟。

于是我把电话静音,急匆匆地去找到爸妈,把刚才发生的事情告诉了他们,他们让我继续和那个人通话。

我:哇,这简直太不可思议了!你能告诉我更多的细节吗?

A:当然,我们会在本月内随时恭候你和你父母的光临,并免费为你们提供差旅。你可以来到我们的办公区,看看我们正在构建的一些很酷的新东西,甚至可以与我们的研发团队碰面并分享你的想法。

此时我依然无法相信眼前的事情是真的!

我:这听起来很棒!我可以和父母商量一下再回复你吗?

A:当然没问题,我发了一封电子邮件给你,你们商量好之后直接回复我邮件即可。

挂掉电话之后,我花了 30 分钟的时间搜索这个人的名字。我通过查看 LinkedIn 个人资料来确认他是否真的在亚马逊工作。最终确认无误之后,我整个人陷入了疯狂!

两个星期后,我和父母去了位于印度金奈的亚马逊办公室。

我参观了他们的研发团队,看到办公室里的开发人员面对非常炫酷的屏幕打字。我询问身边的向导这是在干嘛,她告诉我说,“他们在编程”,他们正在为 Kindle 开发应用程序。我对应用程序有一点点了解,我在 iPad 上玩的游戏就是应用程序的一种。

那个时候,我第一次萌生了想要学习编程并构建自己的应用程序的想法。

学习编程基础

回到家之后,我立即在谷歌上搜索“编程”这个关键字。搜索结果是无数个关于 Python的教程以及其他一些对我来说看起来非常复杂的东西。于是我很快就忘记了编程这件事,继续读我的书。

一年之后,我突然发现越来越多的东西都搬到了的互联网上并以网站的形式呈现给大家,于是我也想做一个自己的网站。我搜索如何才能做到这一点,并在codecademy.com 上参加了一个课程。很快我就构建了一个网站,虽然它功能简单并且外观并不美观,但是我觉得它很有趣。于是我把它发布了出去,全世界都可以访问!

我希望自己网站能够实现更多的功能并且外观更好看一些。通过了解之后,我发现自己需要学习 JavaScript ,这样才能增强网站的“交互性”。于是我通过搜索“如何学习 JavaScript” 找到了大量的课程,学习这些课程总共花费了数千卢比。

我学会了循环、数组、函数、递归、作用域以及其他概念。但是最重要的东西我没有学会,那就是:真正动手构建一个项目。

很长一段时间我都陷入了学习编程基础知识的泥潭中,甚至忘记了自己学习编程的初衷。当人们问我为什么学习编程时,我的回答显得苍白无力:因为这项技能很重要。

一年之后,碰巧在不同社区中遇到了一些编程高手,他们让我意识到自己的学习方式效率非常低下。

社区的启发

我加入的第一个社区是黑客俱乐部,里面汇集了一群像我一样正在学习编程的中学生!有的黑客俱乐部成员在学校开设了自己的编程俱乐部,目的是教他们的同学编程,但这不是真正让我感兴趣的地方。

通过黑客俱乐部我了解到了名为“发布”的东西,它的意思是构建一些程序并分享给全世界的人来使用。看起来很简单,对吧?黑客俱乐部的很多成员都开发了自己的小项目,并通过#ship-it指令将这些项目放在 Slack 频道上。他们借助这个平台获取了关于自己应用程序的反馈和建议。

我还加入了另外一个名为 Feathrd 的社区。同样,其成员主要是一群做了很多炫酷事情的在校学生!有些人的项目在 Github 收获了1000多颗星,还有的人通过自己的应用程序赚到了不菲的真金白银!简直太酷了!

这深深地打击了我,但同时也给了我启发,那就是:我不需要花太多精力来学习编程基础知识,我需要做的是真正动手开发一些程序并将其发布出去。

于是,我花了三个小时来思考,试图想到一个有价值的应用程序。但最后我都无法想出一个好的点子,我的大脑一片空白。

寻找灵感

我喜欢阅读,因此我经常需要下载书籍并获取它的详细信息,但是这个过程有点繁琐。我想构建一个界面,从而让整个过程更加方便和简单。这个想法促成了我的第一个项目。

你们可能会认为对于已经学习编程一年之久的我来说,完成这个项目非常容易,但事实并非如此。

我不知道如何开始,于是向黑客俱乐部和 Feathrd 社区的 Slack 频道寻求帮助。最后我了解到自己需要使用一个称为 API 的东西从书商那里获取数据,然后他们会给我发送一个叫做 JSON 的东西。

我无法理解这些东西,于是使用谷歌搜索,但是搜索结果依然让我很迷惑。我只好继续硬着头皮在社区询问,希望有人能够对这些术语的含义进行更深入的解释。幸运的是,社区的人都超级好,大家很热心帮助我。

在此我学到了非常重要的一课:不要害怕寻求帮助(当然前提是你已经尝试了使用谷歌搜索寻找答案)。

一个星期的时间,我就完成了这个终端应用程序的开发,它可以帮助你把一本书下载到电脑上!这是我第一次发布应用,在这一周里我学到的东西比过去一年里学到的都要多!我终于做了一些实实在在有用的事情。

真正动手编程,而不是纸上谈兵

第一次成功发布程序之后,我写了一个关于如何学习编程的指南。

我继续优化我的终端应用程序,在之后的三个月里,它逐渐演变成了一个真正的 Web 应用程序!我开始痴迷于发布应用程序。

在那之后的 9 个月里我陆续发布了 9 款应用。

我并没有强行规定自己要在 9 个月内制作 9 款应用,应用的诞生都是偶然的。有时候几个月的时间我都不会开发一款应用,而有时候几个星期的时间我会发布多个。主要取决于想法和需求,有时候我发现一个痛点就会产生做一个应用的想法,有时候看到一些很酷的技术时我会想到更好的做法来优化它。

以 Chhota 为例,它是我在周末做的一个缩短 URL 的工具。我想缩短自己域名的 URL,但我并不想自己构建服务器,或者白白支付 99 美金给 Bit.ly。Chhota 是一个 JS 脚本,可以放入推文中(甚至在 280 个字符之前!),通过将 URL 重定向到谷歌的 URL 缩短器来缩短 URL。

例如:jajoosam.tech/#$mR2d 在缩短之后就变成了 goo.gl/mR2d

我主要利用周末和放学后的空闲时间来开发应用程序。获得想法并不难,因为任何一个微小的创意都可以转化为一个程序。

我的工作流程是:

获取想法 ⇒ 分享想法 ⇒ 项目预研 ⇒ 开发项目 ⇒ 发布项目

正在进行的工作

之所以我有持续不断发布项目的动力,主要源于自己加入了 WIP 社区。WIP 社区汇集了大量非常优秀的开发者,他们在一个电报小组上讨论并公开跟踪自己的发布目标。

看到 Pieter Levels 的应用程序请求后,我开始在 WIP 上活跃起来。

作为回应,我在24小时之内创建了一个名为 Syncr 的应用程序。

迄今为止,Syncr 已经为我带来了近百美元的收入。

全部公开

我的所有应用都发布在 Product Hunt,在那里我得到了一些很好的反馈和赞扬。我的应用甚至有几次进入了 Top 5榜单!

能够在 Product Hunt 的 Top 5榜单上露脸是件非常令人鼓舞的事情,就像文章登上黑客新闻(已经两次了)的头版一样!

​开发一款大家喜欢的应用感觉很棒,甚至还有人会付钱给我!但我开发应用的主要原因是享受开发过程的乐趣。登上黑客新闻的头版或者进入 Product Hunt 的 Top 5榜单让我很有成就感,此外,在 WIP 上发布应用也会给我带来自豪感。

可能很多人都知道 glitch 这款强大的工具,我的所有应用程序几乎都是用它来构建的。Glitch 提供商的 CEO 在一条推文中提到了我。

这个小孩使用 @Glitch 开发的应用程序非常有趣!https://t.co/KIExGeToJn  — @anildash

NameCheap 的 CEO 甚至还询问我是否需要工作:

@yesnoornext @jajoosam 你需要工作吗?  — @NameCheapCEO

这真的太不可思议了!

谷歌分析显示,我发布的应用有超过8万的用户和访问者,这让我无比自豪。

我的收获

我从未经历过一个耗时漫长的项目,我几乎都是在三个月以内完成一个应用,甚至我的大部分应用程序都是在一两个周末内完成的。我的目标是快速发布,于是我一直都是临时解决问题,而不是真正解决问题。

因为我对文件操作很熟悉,于是我所有项目的数据库都是文本文件的形式。此外,我从来没有在应用程序中进行任何形式的身份验证。这并不影响功能,并且能够快速发布,因此我采取了非常简单的方法。

我没有严格按照 MVP 模式去构建应用。主要有两个原因:

  1. 我缺乏耐心,一直沉迷于尽快发布应用。 2. 我使用的开发工具有些陈旧,于是我不想真正解决问题,临时解决我就满足了。

展望未来

我想改变现状,开发一款真正的产品。我将继续做大量的小应用,同时继续专注于构建伟大的产品。我希望自己能够真正解决问题,此外, 我会找机会升级自己技术工具箱。

我想在不久的将来做一些很酷的事情:

开发原生移动应用

构建一个更加智能的缩短工具

开发硬件项目(我已经有一些想法了!)

构建一些 UI 美观的应用程序

经验教训

到目前为止,我在这段从事编程的疯狂旅程中收获了一些经验教训:

不要忘记你做某事的真正原因。对我来说,就是我曾经忘记了自己为什么学习编程。这就造成了我学习编程知识和真正开始动手编程之间的时间长达两年之久。

参加课程并不总是有效,至少对我来说是这样。 我认为最好的学习方法是实际动手。

社区能够激励和帮助你,同时你也可以激励和帮助他人。这些社区有 WIP、 Feathrd、黑客俱乐部。

学习过程做好记录。

并非所有的应用程序都需要合理的架构且精心构建。有些时候,拼凑解决问题从而快速发布也是可以的。

关于这九个项目

按照时间顺序排列,这9个项目分别是:

Urbansaurus -  谷歌城市词汇:https://www.producthunt.com/posts/urbansaurus

Chhota -  一个没有数据库的前端 URL 缩短器:https://www.producthunt.com/posts/chhota

Pagiga -  基于谷歌表单且支持 Markdown 的博客:https://www.producthunt.com/posts/pagiga

rnr -  无需现金的捐款网站:https://www.producthunt.com/posts/ernr

Syncr -  源于 YouTube 的视频播客:https://www.producthunt.com/posts/syncr

Pingr -  即时通知系统:https://www.producthunt.com/posts/pingr

Writt - 在电报中制作丰富并且可分享的笔记:https://www.producthunt.com/posts/writt

Polltime - 无处不在且可调整的民意调查系统:https://www.producthunt.com/posts/polltime

Wrish - 支持自动快速保存的在线记事本:https://www.producthunt.com/posts/wrish。

原文:https://medium.com/m/global-identity?redirectUrl=https://medium.freecodecamp.org/how-i-went-from-not-knowing-how-to-code-to-shipping-9-projects-in-9-months-all-before-my-15th-7ec3666072c3

作者:Samarth Jajoo

译者:安翔,责编:郭芮