令人難以理解的「軟體工程師」生涯

令人難以理解的「軟體工程師」生涯
Photo Credit: Pixabay CC0 Public Domain

我們想讓你知道的是

他沒有Windows電腦,所以就花了四、五天,利用零散的時間在他自己的Sun Work Station上面寫了一個類似的接龍遊戲,包含彩色的圖像介面等等。想玩電玩就自己寫一個?我很想笑,但又差點在我師父面前跪了下來。

一、

我們公司的Windows版軟體已經有十多年的歷史,經過歷代工程師的整治之後,內容已經凌亂不堪。過去三個月,我找時間自己重寫了整個主程式。原本數萬行的程式,被我重寫的只剩下數千行,功能不變,效能更好,而且架構儼然。

前幾天完成Alpha版之後,我不禁開懷大笑,笑聲驚動整個辦公室。

二、

在重寫這個程式的這段期間,前兩個月,我每週花在這個程式上的時間應該不會超過四個小時。後來我趁著農曆新年沒事幹,跑到公司加班數天,但是一天寫程式的時間也不會超過四個小時。

通常我白天寫兩、三個小時的程式,遇到瓶頸就去忙別的事,或者乾脆回家吃晚飯,晚上睡覺前,躺在床上用手機查一下資料,第二天上班走在路上,就會很自然的想到不錯的解法。

寫程式是一種創作,不是做苦工,不能每天在電腦前面枯坐十幾個小時,否則超時工作,只會讓自己的腦筋變得更糊塗。

我所認識的許多寫程式高手,每天寫程式的時間都不會太長。

三、

1995年的時候,有一天在美國鹽湖城,我陪著趨勢科技的創辦人張明正扶著他爸爸過馬路,他突然跟我說:「宜敬,我實在搞不懂,在軟體這個行業,一個優秀的工程師的產出可以輕易抵得上一、二十個平庸的工程師,但是公司最多只要付他兩、三倍的薪水。那為什麼還有公司願意付錢雇用那些很平庸的工程師呢?」

當時我博士剛畢業,當然不知道要如何回答他的問題;而現在過了這麼多年,我還是不知道要如何回答那個問題。

而當時張明正會問我那個問題,應該是因為我介紹了幾位同學跟朋友到趨勢科技工作。那幾位都是以一當十、以一當百的高手。趨勢科技當時沒有給他們十倍、百倍的薪水,但是對他們也不薄,給了他們不少的股票。

後來趨勢在日本上市,我那幾位朋友都成了億萬富翁,財富應該超過一般工程師的十倍、百倍吧?

四、

寫一個大型程式,並不是「人多好辦事」。

如果是土木工程或是製造業,人越多、產出就越大。如果一個計畫延誤了,就多調一些人手過來幫忙。

但是在軟體工程裡,人越多,就越是難以協調,寫出來的程式也往往品質越差、效能越糟糕。

這就是有名的「The mythical Man-Month: Adding manpower to a late software project makes it later」。

IBM在1960年代開發OS/360作業系統軟體時,就發現了這個奇特的現象。

所以我也搞不懂,大型軟體公司雇用了那麼多的軟體工程師幹嘛?

五、

我在當兵的時候,有一陣子在台中十軍團的資訊中心擔任資訊官。那時候我手下有兩名資訊科系畢業的大專兵,但是我嫌他們兩人寫程式寫的太慢,而解釋給他們聽更是費事,還不如我自己動手寫比較快。

所以我就叫他們到一邊涼快,所有的程式都由我來寫就好。而他們兩人覺得很不好意思,就泡了很好喝的奶茶給我喝。

後來我們成了很好的朋友。

六、

寫程式並不是寫的越長越好、越厲害。

我年輕在台大資訊工程系的時候,會跟朋友炫耀說:「我寫的程式語言編譯程式,總共有一萬多行耶。」

後來我去美國布朗大學讀電腦科學博士,畢業的時候喜歡跟朋友炫耀:「我的博士論文那個程式,功能那麼強大,但是我只用了七、八千行程式就搞定了耶。」

七、

二流的軟體工程師,喜歡把簡單的問題弄的複雜,寫出別人看不懂的程式。

一流的軟體工程師,喜歡把複雜的問題簡單化,寫出架構清楚明白的程式,讓人看了之後,覺得問題好像很簡單。

三流的軟體工程師會去崇拜二流的軟體工程師,因為他們會覺得二流工程師寫的程式都看不懂,一定是超級厲害。

三流的軟體工程師不會去崇拜一流的軟體工程師,因為他們會覺得一流工程師所做的事情都很好懂,好像都很簡單。

只有一流的的軟體工程師才會佩服一流的軟體工程師,因為只有他們才能看的出來,其他的一流軟體工程師厲害在哪裡?

台灣的軟體業如此,美國的軟體業也大致如此。

八、

直到1980年代末期,IBM一直是世界上最大的電腦公司。而當時IBM找了一些原來是做硬體製造的高階主管來管軟體部門。

那些高階主管依照他們管理製造部門的經驗,決定用KLOC(thousands lines of code),也就是每位軟體工程師每年寫出多少行程式來計算軟體部門的效率。

結果軟體工程師們都「短話長說」,寫出一堆落落長又沒有效率的軟體程式。

九、

要成為一流的軟體工程師,必須熟悉了解電腦科學的各種基礎理論,也必須累積長時間的實務經驗。

我在布朗大學電腦科學系讀博士修課的時候,程式作業的份量非常重。上作業系統(Operating System)課的時候,教授要我們每個人獨立寫一個包含File System與 Process System的迷你Unix作業系統。

上編譯程式(Compiler)課的時候,教授要我們每個人獨立寫一個Compiler,而且每一個模組還必須用兩個以上的方法寫,然後互相比較。

而上Andy Van Dam教授的電腦圖學,那簡直就是人間煉獄。當時助教發問卷調查,發現每位學生每週花在寫那堂課的程式的平均時間超過四十個小時,學生們幾乎要群起造反。


猜你喜歡


新創盛會線上回歸,技術、經驗、創投全都包!7月15日AWS Startup Day現正報名中

新創盛會線上回歸,技術、經驗、創投全都包!7月15日AWS Startup Day現正報名中
Photo Credit:AWS

我們想讓你知道的是

AWS Startup Day 即將於 7 月 15 日重磅回歸,此次不只聚焦新創趨勢與數位應用,更聯合 AWS 創投新創媒合會,提供參與者豐富的資源,所有與新創生態系相關的夥伴都不容錯過。

隨著Web3.0去中心化的趨勢開展與現在進行式的產業數位轉型浪潮,雲端技術早已成為許多早期新創發展產品或服務的關鍵金鑰,甚至為其奠定高速發展的穩健根基。而台灣雲端服務供應龍頭 AWS(亞馬遜網路服務公司)更自Web2.0時代開始就從未缺席,始終在技術新知、應用實務等方方面面致力支持新創,其中最具代表性的免費論壇活動──AWS Startup Day也將於今年7月15日重磅回歸,在線上和參與者相會!

今年度AWS Startup Day持續聚焦新創趨勢與數位應用,精心規劃八場新創專題演說,非常適合長期關注新創生態系統的相關人士,或是正要起步、成長的新創夥伴報名參加。

立即報名2022 AWS Startup Day!

五大特色議程安排,給你滿滿新創觀點與技術乾貨

AWS_Startup_Day活動特色02
Photo Credit:AWS

「新創如何運用雲端科技打出一手好牌,投注資源延續未來業務?」這是今年AWS Startup Day欲探討的核心議題之一。為解答雲端科技之於新創企業的珍貴價值,AWS以「國際市場」、「創投趨勢」、「多元創業」、「雲端技術」、「焦點產業」等五大特色精心規劃講座內容,完整收錄新創趨勢脈動、雲端技術實務、佈局策略觀點與創投媒合等新創事業歷程的重要節點。為此,AWS不只力邀Web3.0、電商、串流、B2B解決方案等不同領域的新創合作夥伴,分享選擇AWS開展新創事業的策略考量,更毫不藏私地解析雲端技術如何快速又穩定的開拓事業。

議程02
Photo Credit:AWS

無論新創還是育成,想要洞見機會就不能錯過AWS Startup Day

活動對象
Photo Credit:AWS

任何產業或技術的發展,不單要前人的引領,也需要後繼者無窮盡的創新思維與打破框架的勇氣,缺乏其中一個環節,生態系都無法平衡永續。所以無論是天使創投、孵化器,還是剛起步或處於早期新創的企業,只要你身為新創生態系統中的一份子,渴望尋求創意突破或開展新興業務,AWS Startup Day都是你絕對不能錯過的最佳活動。

填單取得2022 AWS Startup Day 免費入場券!

尋找下一個新創獨角獸──同場加映AWS年度創投新創媒合會

本次AWS Startup Day除新創及創投相關講座外,AWS更直接邀請多家國際及台灣知名創投公司,與AWS Startup Day同場舉辦今年度唯一的線上「新創創投媒合會」,欲透過串聯本地深具潛力的新創與創投,幫助台灣新創企業獲得更豐富的資源,孕育下一個獨角獸。

根據AWS釋出的消息,媒合會將以早期天使輪或Pre-A輪融資為主,重點關注AI/ML工具和平台、智能零售、MarTech、Web3.0、媒體和娛樂等產業,並以快速輪流的形式替新創獲得最大的曝光。

立即報名2022 AWS Startup Day,共構台灣新創生態系統!


猜你喜歡