就像你剛學會編程那樣寫程序
我正在讀 Do More Faster 這本書,書中更多的是給 TechStars 創業孵化公司做廣告,但仍然值得一讀。讓我深有感觸的是,書中提到有幾個人,他們通過了審查,成功的 — 至少是獲得了他們的啟動資金,但他們并不懂編程。他們開始學編程,以此來實現他們的創業夢想。
想想這些。就好像是先想出來一首歌,然后去學習如何使用樂器,這樣來把旋律變成真正的歌。我猜測這樣的學習過程會讓大多數的音樂家感到驚愕,但這種驚愕并不能表明這種做法不明智,或最終不會有好結果。畢竟,你也看到了,有眾多的樂隊,雖然沒有音樂理論方面的造詣的幫助,仍然取得了成功。
我在中學時就知道如何編程了。當時參加了一個“BASIC簡介”的課程,有個作業是在只有16位色、低分辨率的Apple II 顯示器上做出一個具有視覺效果的程序。我迅速的想出一些算法,讓它按屏幕坐標循環畫線和變換顏色。整個編寫、調試過程我只用了半個小時,我完成了。
我嚴重的低估了人們的創造才能。
有個家伙在他的令人驚異的示范程序里使用了各種動畫效果和減色圖片。我要說的是令人驚異的東西,例如,里面有個骷髏,血從骷髏的眼睛里流出,流到屏幕底部,像是一個水池似的漲起來。而這只是他的作業中的一個片段。我目瞪口呆。很顯然,我不是我想像中的那種藝高膽大的程序員。
我最終看到了他程序里的BASIC清單。他使用幾百行、幾百行的程序語句來變換顏色、畫點和線。沒有循環,沒有變量。為了讓血動起來,他繪制紅色像素,等待,然后再其下畫另外一滴。所有的坐標都是寫死的。他是如何跟蹤流動的軌跡的呢?他使用一張紙,在紙上模擬,然后一幕幕復制到屏幕上。
這讓我認識到了我被以前的經驗毒害了。我只想到了編程,如何寫出簡潔干凈的代碼。而這個家伙在寫他的骷髏程序時根本不擔心這個。他不注意程序會寫成什么樣子或如何去維護。他只想著用一種方法來表現他的視覺效果。
這是一個很容易被人忘記或忽略的教訓。在開發時,既要關注你做的東西給最終用戶的體驗,同時又要注意用來表現這些用戶體驗的程序的架構,這是極其困難的事。也許根本不可能。我想這唯一的解決辦法就是放棄后者。用直接但看起來滑稽的代碼,就像是剛學會編程那樣,跳出樊籠,摘掉扣在代碼上的各種軟件工程技術的大帽子 — 除非你想成為真正的軟件工程師,而非事關用戶體驗的設計師。