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