180天做180个“网站”来学编程,今天是第115天

jopen 8年前

        我要在 180 天里通过建立 180 个“网站”来学习写程序。今天是第 115 天。

        4 个多月前,我决定要学学编程。

        请无视我以前没有编程经验,在学校也从来没有上过任何“技术”课程。我决定要在 180 天里建立 180 个“网站”,一天不落。

        今天是第 115 天。

        背景

        我是学艺术的。吸引我学习艺术的缘由是它可以探索人们如何向外界表达他们自己。我们穿什么衣服,我们的兴趣爱好,还有沟通方式。过去的日子里我尝试着用绘画和雕刻来捕捉这种自我投影。

        然而如今是 2013 年,我们不再受制于物理媒介。我们有网络!网络很棒,因为它把过去阻碍我们沟通的屏障打破了。沟通的门槛如此低,以至于我们为了沟通和相互交流而被迫建立虚拟身份。

180天做180个“网站”来学编程,今天是第115天

        我觉得这种虚拟的交互太不可思议了,但我并不满足于做旁观者打打酱油。我想要建立起沟通的通道,使得这些交互成为可能。

        学习编程最好的途径是什么?冥思苦想了很长时间,我决定就他*的开始做吧。但是不能只是漫无目的地开始,我下决心坚持一种简单而又严格的结构:

        1. 每天建立一个网站,连续 180 天。

        2. 每个网站必须要发一贴

        3. 我写的每句代码必须在 GitHub(开源)上公开,这样大家都能看到。

        把自己学习中的错误和误区都公开是很让人没面子的。但事实上,如果你想学习编程,你就要准备犯很多错误。不要认为仅仅因为你的代码可能看起来有 点二,就意味着应该停止编程。还有你不必成为某类人,你不必成为数学奇才,不必要任何预备知识,因为编译器并不介意你蠢。你需要的只是敲下键盘。

180天做180个“网站”来学编程,今天是第115天

        不上速成营(bootcamp),不用参考书。当我决定了要编程,第一步就是解决如何着手的问题。有很多选项可供考虑。有无数课程可以学习,有无数速成营可以注册,但是它们都不是我要的。我认为学习编程很像学习轮滑。你可能需要人帮你扶上溜冰鞋,但是获得真正的技巧你得自己走两步。

        我认为最好的学习方法就是解决实际碰到的问题。这就是我决定不去遵照课程和参考书的主要原因。通过遵循自己的路径,我能够以最符合逻辑的顺序, 也就是我恰好遇到问题的时候,处理新鲜概念和问题。当我遇到难题时,我就去 Stack Overflow 上搜索。如果我要迈出一大步,像开始一门新的语言或者平台,我只会找参考书做一下引导,到我能迈过去就可以了。

180天做180个“网站”来学编程,今天是第115天

        日复一日。在家工作的主意可不怎么高明,因此我绝大多数编程是在 SoMa 的一个相当不错的合伙办公室。这里提供我一个办公桌,能够给家里打电话,除此之外,我还有免费的可乐喝,还有果冻豆吃。硬件方面,我用 13 吋的 Macbook Pro,连接两个显示器,因为如果要说有什么是我钟爱的,那一定是大显示屏。我桌上还有一个小 Jambox 扬声器,晚间舞会上会用。

        我每星期的开始会写一篇博客,总结一下上个星期的自我感觉。我每天把代码推送到 GitHub,部署当天的网站,然后发一个每日帖。做完之后,我通常会在让网站上线前修正无数先前留下的 bug 和错别字。目前这样已经做了 114 次了。

180天做180个“网站”来学编程,今天是第115天

        从 CSS 到 Javascript 再到 Rails。起初我的网站十分简陋,一点 html,一点 css 还有数行 javascript。随着时间的推移,它们变得越来越复杂。我做过游戏计算器时钟,还有傻喵星人。现在我十分惬意地使用 CSS,流利地用 javascript 做开发。最近,我开始用 Rails 来建立动态网站,这样可以让人相互沟通,还可以创建个人档案。用 Rails 编程超有意思,因为它允许我从做游戏和玩具过渡到构建实际工具上。我不确定下一步接着尝试什么技术,或者项目最后我要用什么平台,反正非常酷就是了。

        这个项目还没有一个清晰的路径,让我探寻那些能发挥我想象力的某种观念。我要在下一步从事的工作似乎很大程度上受我当前正在从事的工作的影响。比我当初猜想的程度还要更甚。项目早期,我想制作一个很简单的天气 app, 我需要找到怎样查询天气数据的办法。出乎意料的是我对 API 开始产生兴趣了。但是 ajax 不能工作在跨网域上,所以这让我转向 jsonp。老实说,我从来没有想到我会对 JSONP 产生兴趣。到后来,因为支持 JSONP 的 API 极度缺乏,我突发灵感,事不宜迟开始工作在 Rails 上。

        然而如果你只是。。。如何?当我告诉人们我正在做的,他们经常是立刻开始挑漏洞。我被问到过很多类似这样的问题,“为什么你不休息一天,然后明天做两个?”我知道大家是好意,但是没有任何漏洞,因为我定下的规则,要保证一天不漏。

180天做180个“网站”来学编程,今天是第115天

        这个很难。每天做出新的东西很难。新概念的挖掘会枯竭,头脑风暴模式到执行模式的切换不是无缝连接的。但是 这个项目里最难的部分,在某种意义上来说,是我每天都感到一败涂地。走出去的每一个网站都是半成品。因为我是个完美主义者,重做或者扩展网站的诱惑力对我 来说相当强。前进的路不是一直缝缝补补和东敲西打来完美它。前进的路应该是移步到下一个概念并做出来。

        网站

        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.

        译者:deepfish 译文:链接