Contents ...
udn網路城邦
以簡馭繁,大巧若拙
2018/03/09 04:16
瀏覽1,976
迴響1
推薦9
引用0

這是資訊界網紅林宜敬博士的FB貼文,看完後感想很多,與我的經驗大部分都有共鳴(都共振了!),裡面的議題夠我寫五六篇部落格文章了!先從我覺得最有趣的部分開始吧!他有一段說:

我不像林博士是資訊科班出身(資工博士)38歲才第一次接觸到視窗程式,剛開始看到各種軟體的神奇功能,也聽說那些程式動輒上萬行,還不讓你看,就會覺得很像外星科技!但是我的想法很簡單,先學會了基本的程式,確定自己已經可以用程式做到一些事情,然後就開始想那些軟體的動作是怎麼作到的?我該怎麼把它們用我簡陋的程式技巧拼湊出來?

一開始沒有太多網路資源(其實是我不太會用網路),真的好像金庸小說中的少林寺火工頭陀,偷看武僧們練武就偷學偷練,心法用眼睛看不出來,就自己想像瞎掰,還真的讓我練出一套很容易走火入魔的厲害武功!第一個大程式就是用VB6寫的側掃聲納系統!共有五千多行,內容真是亂到很像巴西里約市郊山坡上的龐大貧民窟!最後連自己都改不動了!還笨笨的很自豪,偶爾讓人看看程式的規模,真以為自己已經很厲害,很專業了!

緊接著我到學校教程式,我的任務不是自己寫多大的程式,而是如何在最短時間內教會初學者儘量寫出一些有用的小程式?於是就開始努力思考讓程式範例簡單易懂又真的有用處!此時我比較會作網路搜尋了,但是找到的程式範例還是讓我很頭痛。因為看起來都比我預期的長,還多半沒有足夠清楚的說明,那些是給專業人士分享的,我顯然還不是「專業」人士,我知道程式能跑,但很多程式碼都不知道是幹嘛用的?

那就自己摸索,嘗試刪掉一些我看不懂或估計無關緊要的程式碼,試跑看看會發生甚麼事?這樣就一一搞清楚所有程式碼的意義了!因為我教的學生大家都說他們程度不好,也不用功,上程式課不會有耐心的!所以我就努力將程式變得超簡短,任何有趣的功能都只用幾十行程式搞定,學生就上課上得很高興了!譬如三小時的課就可以學會小畫家程式中的大部分繪圖功能,太酷了!在私立大學上程式課出席率總是九十幾,我絕對是奇葩!我也發現了資訊界的一個大秘密:會寫程式的,大部分都愛唬人!

但是正如林博士所說,真正的高手是不會想唬人的!他們只會想最有效的解決問題,寫出最精簡易懂的程式,一方面方便自己日後繼續加蓋更多功能,一方面也讓其他人容易與你合作!程式技巧是頂級高手們根本不屑於賣弄的小事,他們會炫耀的一定是他的程式可以作到的事情!他們應該連使用哪種程式語言都懶得講,也懶得評論!因為那真的無關緊要。我的車牌辨識軟體都是用資訊領域人士看不起的VB寫的,但它就是很厲害呀?就像金庸小說中的喬峰只用一套太祖長拳就可以打敗各路武林高手了!阿你想怎麼樣?

現在我寫來賣的程式也總是超精簡的!我不是從業界軟體研發中悟出這個道理,而是前面十幾年為了教好我那些都很不用功的學生們!但是殊途同歸,我就是可以寫出簡潔又高功能的程式。我常常在FB貼出的神奇車牌辨識效果,辨識核心開發了四年多,但程式碼只有不到3000行!每次程式膨脹到我覺得有點虛胖時,我就會花時間讓他們瘦身!

所以啦!程式長的,看不懂的,其實是比較劣質的程式!程式價值應該是看程式執行的功能與效能!能夠以簡馭繁,大巧若拙,輕鬆達到很棒的結果,才是寫程式的最高境界!

有誰推薦more
全站分類:心情隨筆 工作職場
自訂分類:教育學習

限會員,要發表迴響,請先登入
迴響(1) :
1樓. Jeff & Jill
2018/03/09 18:06

想起若干年前,和某主管談到如何替軟體工程師打考績的事。台灣很多非工程背景,特別不是軟體出身的主管甚至老闆,容易陷入以工作量來設定KPI的迷思。像是寫了多少行程式(現在應該沒有人這樣算了吧),解了多少隻bug,等而下之的,還有用加班時數來算。

我說這些其實都是反指標。同樣功能或效率的程式,你覺得用一千行或一萬行寫出來,那個比較厲害?一個系統跑上一年不出毛病,和三天兩頭出狀況需要救火,你覺得誰的思慮比較週全?高竿細密的工程師,早就可以下班看電影,那有人需要加班!這種人如果加班,不是在玩遊戲,就是在做一些你想都沒想過的事情。如果用這些指標打考績,你大概很難留住這種人;你的軟體就會愈來愈肥,臭蟲愈來愈多,最後每個人都加班到天亮。


[Jeff & Jill的窩]部落格