• 超酷的學習計畫 -- 連續 180 天撰寫出 180 個不同的網站

有個學藝術的人,叫 Jennifer Dewalt,大約在 4 個月前,她決定要實作網站 (Website) 來達到練習撰寫程式的目的,他在自己的部落格上描述:我將連續在 180 天內建立 180 個網站,中間不會有中斷的時候,今天已經是第 122 天了。

她說:「在做出這個決定之前,我必須聲明一件事:過去我並沒有任何的編程經驗,也沒有在學校裡修過任何跟『資訊科技』相關的課程。」

(以下以第一人稱撰寫)

  • 看這個人 -- 架網站也可以從零開始

各位已經知道我不具備任何資訊相關背景,而且是藝術相關背景。而一開始吸引我朝向藝術發展的原因,是因為它是一種探索人們如何對外展現自己的方式之一,例如,是什麼決定我們的穿著風格,是什麼塑造了每個人不同的性格,以及我們如何與人互動等等。過去,我嘗試透過繪圖與雕塑的學習來捕捉 / 理解自我的投射。

而有了網際網路之後真的是太棒了 -- 因為它瓦解了許多溝通上的障礙。雖然溝通的障礙降低了,但是,某些時候我們會因為某些原因想在網路上建立起虛擬身份,以達到和他人交流 / 互動的目的。

  • 只有自律才能無堅不摧

學習編碼的最佳方式是什麼?思考這個問題花了我許多時間,最後,我決定遵循下列幾項簡單而規律的守則:

1. 利用 180 天而且每天不間斷地建立 180 個不同的網站。

2. 每一個網站都必須發佈在部落格上。

3. 我所撰寫的程式都會透過  GitHub 這個開放源碼的線上分散式版本控制系統,進行開發、除錯、測試等等過程,也讓對我所撰寫的程式有興趣的人都可以看得到。

編程,是可怕的,它和我原有的認知並不相同。如果你想學習撰寫程式,你就會發現自己創造了一大堆的錯誤語法,這結果可能會讓你覺得自己像個笨蛋,可是,告訴你一個事實 -- 這是初學者都會遇到的情況,你並不是唯一的特例,因此,這不該成為你停止學習的藉口。

另外,還有一點想跟各位網友分享的是 -- 寫程式並不需要什麼特殊的天份,比如數學很棒,或是需要具備什麼條件才能寫程式 -- 你只需要一個 「開始」。

  • 能力是在解決問題中建立起來的

當我決定開始撰寫程式時,我並沒有參加訓練課程 / 訓練營,甚至沒有參考書,我所做的第一個步驟,就是把它實作出來。

其實,有很多的課程 / 訓練營是你可以報名參加的,但它們都沒有能夠吸引我的地方。我覺得學習撰寫程式,跟溜冰是很類似的,就是你在過程中可能需要有人指導,但,你必須依賴自己真正動手做才能從中獲得寶貴的經驗與技巧。

我認為最好的學習方法就是透過解決問題來增進自己的能力,這也是不想參加相關課程或是相關參考書的主因。當我在實作過程中遭遇難題時,會透過像 Stack Overflow 這類的論壇來尋找可能的解決方法。

在家裡撰寫程式絕不會是個好主意,所以,我的編程工作都是在 SoMa 完成的。在 SoMa 除了有我專屬的桌子跟電話,還有無糖的可樂跟 Jelly Beans 可以吃。在電腦的硬體設備部份,我用的是 13 吋的 MacBook Pro 而且連接兩個顯示器,以避免錯過我喜愛的內容。

每天我都會把程式碼上傳到 Github,以便部署每天所撰寫的網站,以及撰寫部落格上的文章。在部署程式之前,我通常都必須修改多得不得了的錯誤語法以及拼字上的錯誤。到目前為止,我已經重複這些工作 114 次以上了。

  • 寫程式可以嚴謹,但切忌死腦筋

剛開始時,我的網站是利用 CSS 到 JavaScript 到 Rails 等程式語言所撰寫出來的,這些語言都屬於輕量級的,也就是比較簡單的意思。後來開始越來越複雜,我做了一些遊戲、計算機、時鐘和一些可愛的小貓等等。到現在,我對 CSS 和 JavaScript 已經能夠得心應手了。最近,我開始利用 Rails 來建構動態網站,以便能和現這些遊戲的人互動,Rails 是一個很棒的工具,它能讓我實踐我想達到的效果。

在這個計畫的早期,我想過要做一個簡單的天氣應用程式,所以,我必須取得天氣的相關資料,當時,我開始對設計應用程式介面 (Application Programming Interface,API) 產生興趣,但 AJAX 無法跨網域,只好採用 JSONP。事實上,我從不認為我會對 JSONP 感興趣,但因為這個事件我開始採用 JSONP,也開始用 Rails 來實作我的網站。

當別人知道我的計畫時,好像都覺得不可思議,並且,開始試圖抓出我的話中是否有語病。我常被問及像是,「你可以休息一天,明天再補今天沒做的就好啦?」這對別人而言或許是適當的,但是,我所定下的規則並不允許這種狀況發生。

每天都要設計不同的主題的網站是一件困難的任務 -- 新的想法總有耗盡的時候 -- 尤其是將想法轉換為執行細節時更是無法總是十分流暢。但這個計畫中最困難的一件事情是 -- 我中斷了自己的計畫 -- 使得網站無法順利完成,或是因為完美主義作祟,因而陷入重做或是將完成的期限延長的循環中。問題在於,不能因為要求完美而讓自己毫無進度,而是應該繼續朝下一個新的想法前進,並將它實踐出來。

Day 122 Balloon

Day 111 Down the Weight

Day 106 Wish

Day 98 No One Is Watching

Day 88 Quick Words

Day 85 Fishy Friend

Day 83 Hollywood

Day 75 King of the Comments!

Day 60 Fizz Buzz

Day 54 Calculator

Day 30 Silly Kitty

Day 28 The Click Challenge

Day 2 Make a Deal!

Day 1 Homepage

(資料來源:Jennifer Dewalt;圖片來源:Abstract Machine, CC Licensed)