不要讓經驗禁錮你的編程思維
英文原文:Write Code Like You Just Learned How to Program
最近我正在讀 Do More Faster 這篇文章,雖然此文好像有點是在為 TechStars 的創建做宣傳,但是還是不失為一篇好文。最讓我印象深刻的是,有些明明已經有了成功的條件,至少創業資金是不缺的,但是事到臨頭,卻不知道該如何著手去編 程。學會編程,他們就能夠實現自己的想法,學以致用了。
打個比方,這就像心中有一些關于音樂的設想,那么你需要學習如何演奏才能把它表達出來。當然,其中的學習過程絕對會嚇退一幫專業音樂人。可是, 如果你害怕出丑害怕被罵,擔心這個擔心那個,那么我敢肯定,成功將永遠不會眷顧于你。畢竟,沒有哪個樂隊是不具備任何音樂知識就隨隨便便一不小心就能成功 的。
遙想當年,我早在高中開設“Intro to BASIC”課時就已經會編程了。我依然記得其中有一個挑戰是只能使用 Apple II 的 16 色和低分辨率模式來做一個視覺演示。我很快就想出一些算法,使得程序能在屏幕坐標上循環畫線,并且改變線的顏色。這大約才花了我半個小時的時間來編程和調 試代碼,完工的時候甚至還有點沾沾自喜。
但是,我嚴重低估了大家的創造力。
我還深深的記得,其中有個人演示的全是動畫和陰影圖片。說他牛B是因為他的作品讓人驚呼奇跡,比如有血珠從一個頭蓋骨的眼窩里流出來滴進屏幕下方逐漸升高的池子里。而這僅僅只是他演示中的一個片段而已。從這件事情上,我認識到我沒有我想象的那么厲害。
經過軟磨硬泡,我終于看到了他的代碼。哇塞!用來變色和畫點與線的指令就有成千上萬條。其中甚至是沒有循環,也沒有變量的。而為了使血珠有動畫 效果,他先是畫了一個紅色像點,過會兒再在這個下面畫第二個,以此類推。所有坐標都是硬編碼。想知道他是如何掌控這些畫的東西嗎?他把他做的東西統統更新 在了一張方格紙上。
不得不說,在這件事上我犯了個固步自封的錯誤,沉浸在以前的經驗里,不思進取,不去創新。然后,我在想這個程序的代碼可以如何優化以顯得簡潔明 了。當然,那個制作了頭蓋骨的家伙才不考慮這些呢,他并不在乎這個程序是否繁冗也不需要去維護。他想要的只是一個能展示他想法的方式。
這里還有另外一個教訓容易被忽略。那就是,如果你想要同時關注用戶的最終體驗和提供這種體驗的程序體系結構,這是相當相當困難的。甚至也許是不 可能的任務。我認為解決這個矛盾的唯一方法就是忽視后者。直接去寫代碼,就好像你剛剛才學習編程那樣,避免用原有的經驗去禁錮自己的思維模式——如果你想 成為一個真正的軟件工程師,而不是一個有經驗的設計師。
<span id="shareA4" class="fl">
</span>