180天做180个“网站”来学编程,今天是第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 上。
然而如果你只是。。。如何?当我告诉人们我正在做的,他们经常是立刻开始挑漏洞。我被问到过很多类似这样的问题,“为什么你不休息一天,然后明天做两个?”我知道大家是好意,但是没有任何漏洞,因为我定下的规则,要保证一天不漏。
这个很难。每天做出新的东西很难。新概念的挖掘会枯竭,头脑风暴模式到执行模式的切换不是无缝连接的。但是 这个项目里最难的部分,在某种意义上来说,是我每天都感到一败涂地。走出去的每一个网站都是半成品。因为我是个完美主义者,重做或者扩展网站的诱惑力对我 来说相当强。前进的路不是一直缝缝补补和东敲西打来完美它。前进的路应该是移步到下一个概念并做出来。
网站
Day 114 Image Palette
Day 113 Window Master
Day 112 Check Sketch
Day 111 Down the Weight
Day 110 Effects
Day 109 ColorWorks
Day 108 Algae Tank
Day 107 Serious Question
Day 106 Wish
Day 105 Infinite Descent
Day 104 Emergency Off
Day 103 Word Clock
Day 102 Drying Paint
Day 101 Globulator
Day 100 Song Machine
Day 99 TOS
Day 98 No One Is Watching
Day 97 Text to Braille
Day 96 PostBored
Day 95 Sparklers
Day 94 Mastermind
Day 93 Swivel
Day 92 Typing Test
Day 91 Pinwheel
Day 90 Skinny Drinks
Day 89 Hourglass
Day 88 Quick Words
Day 87 Countdown Clock
Day 86 Snare
Day 85 Fishy Friend
Day 84 Liquor Likes
Day 83 Hollywood
Day 82 Text Scroller
Day 81 Capture
Day 80 Tiny Notes
Day 79 Present Value Calculator
Day 78 Hangman
Day 77 YourSpace
Day 76 PixShow
Day 75 King of the Comments!
Day 74 Page View Graph
Day 73 Keep It Up
Day 72 Make A Dude
Day 71 One Page
Day 70 Click Counter
Day 69 Leave A Note
Day 68 Metronome
Day 67 World Time
Day 66 Alien Attack
Day 65 Fade
Day 64 Screen Flood
Day 63 Memory Orbs
Day 62 Confused Robot
Day 61 Fix It
Day 60 Fizz Buzz
Day 59 Bubble Wrap
Day 58 Fireworks
Day 57 Bug Blaster
Day 56 Hooray
Day 55 Paratroopers
Day 54 Calculator
Day 53 Circle Invaders
Day 52 Etch A Sketch
Day 51 Memory
Day 50 Color War
Day 49 Weather Now
Day 48 Static
Day 47 PONG
Day 46 Snake
Day 45 Color Perception Test
Day 44 Analog Clock
Day 43 Seeing Spots
Day 42 Magnetic Poetry
Day 41 Light Bulb
Day 40 Popping Bubbles
Day 39 Pixel Painter
Day 38 Type Attack
Day 37 Bouncy Balls
Day 36 Little Dude
Day 35 Buttons!
Day 34 Maneki-neko
Day 33 Random Word Generator
Day 32 Particle Waves
Day 31 Endless Throbbers
Day 30 Silly Kitty
Day 29 Magic 8 Ball
Day 28 The Click Challenge
Day 27 Rain Maker
Day 26 Simon
Day 25 SCRAMBLED!
Day 24 What is Your Email’s Impact?
Day 23 Stopwatch
Day 22 Keep It Straight
Day 21 Teleprompter
Day 20 Smushing Fireflies
Day 19 How Much of an SF Hipster are You?
Day 18 Building Blocks
Day 17 Party Time?
Day 16 Caterpillar
Day 15 Dropping Boxes
Day 14 Tough Love
Day 13 Rock Paper Scissors
Day 12 Dice Roller
Day 11 Color Clock
Day 10 Sushi Jiggler
Day 9 Bouncing Ball
Day 8 More Drop Shadow!
Day 7 Technicolor Boxes
Day 6 Day Tracker
Day 5 Secret Message
Day 4 Paint a Mondrian
Day 3 Get a Random Color Background
Day 2 Make a Deal!
Day 1 Homepage
英文原文:I’m learning to code by building 180 websites in 180 days. Today is day 115.