如何學編程,JUST DO IT!
在不知道什么是回調(diào)函數(shù)之前,Michelle Bu 做出了自己的***個網(wǎng)頁。他在個人博客分享了這段有趣的經(jīng)歷。
Michelle 有一個筆記本上涂鴉的習慣。某次夏季旅行中,他畫了一系列的三角形,覺得很酷。然后,他決定做成網(wǎng)頁,或許能夠讓自己在 Tumblr 上顯得很酷。
他開始向?qū)W習計算機的朋友求教。他們的建議可以總結為一句話 : “去 Google 它”。當他說找不到答案的時候,朋友告訴他去 Google “CSS triangle”。
“抱歉……CSS 和三角形有啥關系?”
談話通常會突然結束,或者是“CSS 簡單的說,就是你給 HTML 設定風格”。
每次談話都讓他感到自己很無能。不過,他還是發(fā)現(xiàn)了用 div 和一些 CSS 代碼做出三角形的方法。最初的代碼是這樣的:
這樣的代碼還要持續(xù) 165 行。
然后,他了解到有個叫 jQuery 的東西,能夠使用名為“Animate”的 API 來改變?nèi)切蔚膶傩?。比如,如果使?$(‘#something’).animate({ ‘opacity’: ’0′ }),就能使某個三角形消失。他想到的是,如果想要 20 行三角形接連消失的話,需要 20 行一樣的代碼。
于是,他把 jQuery 中的代碼貼到了自己的 JavaScript 文件里。后來的代碼成了這個樣子:
他很高興的發(fā)現(xiàn),代碼發(fā)揮了作用,三角形按照他的設想消失和再現(xiàn)。他把代碼給一個真正的軟件工程師看。出乎預料的是,工程師沒有諷刺他,“沒有程序員會做出這種事情”。然后,這位工程師說,“沒有人會寫出這樣的代碼,因為他們不會有這樣的耐心”。
這逐漸成為了一個愚蠢的破冰話題,“hey,你花了兩個小時解決 CoffeeScript 中的空格問題么?看看我,花了一天的時間, 寫了 21 層函數(shù)和 200 行一模一樣的 HTML 代碼。”
如今,Michelle 要從伯克利大學畢業(yè)了,恐怕也不會再去寫什么代碼。不過,他覺得自己從這件事情中領悟到一個道理。
編程是困難的。不要因為你不如身邊的人擅長‘Google 它’而感到難過。永遠不要讓參加黑客馬拉松的勢利眼阻止你為貓做 Twtter或者做公廁 Yelp。即使是最傻的主意(比如試圖去做個可以消失和再現(xiàn)的幾何動畫)也能提升你的編程能力。學習編程更多是學會去學習——而學習的***方法是‘做’。
到***,要做一個合格的程序員,不僅僅是你贏了多少場黑客馬拉松,或者你想出了多少新花樣,而是執(zhí)行力、關注細節(jié)、不妥協(xié)的專注,以及構建和破壞的激情。 如果你對自己的代碼感到害羞,我同意你去嘲笑一下我做三角形時的 21 層回調(diào)函數(shù)。 |