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