約莫三十年前,Java技術的前身出現了,開始了一場技術應用的艱辛探索。嘗試過用在PDA、電視機頂盒、家電設備中,但都未果。結論是:當技術領先於市場的需求和環境的準備,不會有美好的結局。幸好,這些技術人沒有停止探索,五年後,終於找到第一個成功的應用:Applet,也是在這個時候更名為Java。透過Java Applet技術為當時剛剛萌發的Web前端帶來動態的效果,Java終於踏出成功的第一步,開啟了Java的時代。

Java Applet讓Java得到矚目,但激情過後,大家發現Java Applet差強人意。幸好,Java沒有停止探索的步伐,接著馬上走進伺服器應用的開發,才迎來真正的勝利。接下來Java又試圖在手機、OS、晶片上發力,都介於差強人意和失敗之間,直到Android手機的出現,Java才算又迎來另一個領域的巨大成功:手機App開發。

回顧上述這段歷史,Java技術持續在各種應用領域的探索,跑馬圈地,正是因為如此,才找到一條生存的路,進而開拓出廣大的疆域。這也是許多技術經歷的道路:先預設市場存在一個需求,再根據這個需求研發一個技術,後來發現這個需求不存在,或者市場還沒準備好,於是四處尋找新的附著點。套個現在創業圈流行的名詞,這叫做Pivoting(轉換方向)。

像Java這樣的路徑,大家比較陌生,這就是所謂「技術驅動」;另一條相反的路,是「需求驅動」。大家對「需求驅動」比較熟悉,也就是先有市場需求,再想辦法解決這個需求,過程中可能需要大部分既有技術的拼湊,和一部分技術的研發。在浮躁的商業環境下,「需求驅動」的路徑是比較可能的,因為單純「技術驅動」的風險太大,這是許多公司的大忌。

但技術驅動和需求驅動往往互相交織,無法完全獨立。一開始基於一個「可能存在但不確定」的需求,開始做技術的研發,這是需求驅動的過程。在技術做出來後,卻發現原本設想的需求是「偽需求」,這時候只好開始找尋並嘗試這個技術的各種應用,這是技術驅動的過程。接下來,在發現適合的應用領域後,必須對技術做一定程度的調整,來符合該應用領域,這又是需求驅動的過程。

我之所以對Java的這段歷史感觸頗深,一方面是因為我在Java 1.0之前的時候就關注Java,一路看著它的演變,二方面是因為我自己這些年來研發了一套技術,Java艱辛探索的過程可以作為我的借鏡。

不會寫程式的架構師不是好老師。身為一個還持續在精進寫程式能力、也喜歡總結經驗甚至提煉方法論跟人分享交流的架構師,我發現現代軟體開發行業最直接的問題在於:程式設計師對需求的理解不清楚。我想要解決這個問題,我的想法是:讓提出業務需求的人自己就可以開發程序,不需要程式設計師。

技術變化太快,現在技術人員光是學習新技術就已經焦頭爛額了,要他們深入理解業務不太可能,更何況業務知識可能極端複雜。就拿我待過的金融行業來說,如果沒有在這些業務領域耕耘多年,不太可能弄懂這些業務的法規、行規、邏輯、術語。所以如果提出業務需求的人自己就可以開發程序,就太好了。

於是我想要降低程式設計門檻,讓業務人員自己開發程式。經過多年努力,我的技術研發成功了,我做出了一個VM和一個程式編輯器。但問題是,除了資金困難的創業公司,業務人員根本不願意自己開發程式,不管技術門檻有多低。於是我開始試圖把這個技術用在區塊鏈智慧合約的編寫、證券程式化交易規則編寫、智慧家電控制腳本的編寫、兒童程式設計學習,甚至商業模型的定義 ... 等領域,開始了技術應用的艱辛探索。

技術應用的艱辛探索之路,形同一條不歸路。如果你也在這條不歸路上,我必須恭喜你,畢竟不是每個人都有機會走進這條路,這是很寶貴的經驗。我們共勉吧!為了理想。

專欄作者

熱門新聞

Advertisement