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