英文原文:I’m learning to code by building 180 websites in 180 days. Today is day 115. 我要在 180 天里通过建立 180 个“网站”来学习写程序。今天是第 115 天。 4 个多月前,我决定要学学编程。 请无视我以前没有编程经验,在学校也从来没有上过任何“技术”课程。我决定要在 180 天里建立 180 个“网站”,一天不落。 今天是第 115 天。 背景 我是学艺术的。吸引我学习艺术的缘由是它可以探索人们如何向外界表达他们自己。我们穿什么衣服,我们的兴趣爱好,还有沟通方式。过去的日子里我尝试着用绘画和雕刻来捕捉这种自我投影。 然而如今是 2013 年,我们不再受制于物理媒介。我们有网络!网络很棒,因为它把过去阻碍我们沟通的屏障打破了。沟通的门槛如此低,以至于我们为了沟通和相互交流而被迫建立虚拟身份。 我觉得这种虚拟的交互太不可思议了,但我并不满足于做旁观者打打酱油。我想要建立起沟通的通道,使得这些交互成为可能。 学习编程最好的途径是什么?冥思苦想了很长时间,我决定就他*的开始做吧。但是不能只是漫无目的地开始,我下决心坚持一种简单而又严格的结构: 1. 每天建立一个网站,连续 180 天。 2. 每个网站必须要发一贴。 3. 我写的每句代码必须在 GitHub(开源)上公开,这样大家都能看到。 把自己学习中的错误和误区都公开是很让人没面子的。但事实上,如果你想学习编程,你就要准备犯很多错误。不要认为仅仅因为你的代码可能看起来有点二,就意味着应该停止编程。还有你不必成为某类人,你不必成为数学奇才,不必要任何预备知识,因为编译器并不介意你蠢。你需要的只是敲下键盘。 不上速成营(bootcamp),不用参考书。当我决定了要编程,第一步就是解决如何着手的问题。有很多选项可供考虑。有无数课程可以学习,有无数速成营可以注册,但是它们都不是我要的。我认为学习编程很像学习轮滑。你可能需要人帮你扶上溜冰鞋,但是获得真正的技巧你得自己走两步。 我认为最好的学习方法就是解决实际碰到的问题。这就是我决定不去遵照课程和参考书的主要原因。通过遵循自己的路径,我能够以最符合逻辑的顺序,也就是我恰好遇到问题的时候,处理新鲜概念和问题。当我遇到难题时,我就去 Stack Overflow 上搜索。如果我要迈出一大步,像开始一门新的语言或者平台,我只会找参考书做一下引导,到我能迈过去就可以了。 日复一日。在家工作的主意可不怎么高明,因此我绝大多数编程是在 SoMa 的一个相当不错的合伙办公室。这里提供我一个办公桌,能够给家里打电话,除此之外,我还有免费的可乐喝,还有果冻豆吃。硬件方面,我用 13 吋的 Macbook Pro,连接两个显示器,因为如果要说有什么是我钟爱的,那一定是大显示屏。我桌上还有一个小 Jambox 扬声器,晚间舞会上会用。 我每星期的开始会写一篇博客,总结一下上个星期的自我感觉。我每天把代码推送到 GitHub,部署当天的网站,然后发一个每日帖。做完之后,我通常会在让网站上线前修正无数先前留下的 bug 和错别字。目前这样已经做了 114 次了。 从 CSS 到 Javascript 再到 Rails。起初我的网站十分简陋,一点 html,一点 css 还有数行 javascript。随着时间的推移,它们变得越来越复杂。我做过游戏,计算器,时钟,还有傻喵星人。现在我十分惬意地使用 CSS,流利地用 javascript 做开发。最近,我开始用 Rails 来建立动态网站,这样可以让人相互沟通,还可以创建个人档案。用 Rails 编程超有意思,因为它允许我从做游戏和玩具过渡到构建实际工具上。我不确定下一步接着尝试什么技术,或者项目最后我要用什么平台,反正非常酷就是了。 这个项目还没有一个清晰的路径,让我探寻那些能发挥我想象力的某种观念。我要在下一步从事的工作似乎很大程度上受我当前正在从事的工作的影响。比我当初猜想的程度还要更甚。项目早期,我想制作一个很简单的天气 app,我需要找到怎样查询天气数据的办法。出乎意料的是我对 API 开始产生兴趣了。但是 ajax 不能工作在跨网域上,所以这让我转向 jsonp。老实说,我从来没有想到我会对 JSONP 产生兴趣。到后来,因为支持 JSONP 的 API 极度缺乏,我突发灵感,事不宜迟开始工作在 Rails 上。 |