我們想讓你知道的是
他沒有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教授的電腦圖學,那簡直就是人間煉獄。當時助教發問卷調查,發現每位學生每週花在寫那堂課的程式的平均時間超過四十個小時,學生們幾乎要群起造反。
Tags:
「綠領人才」現正夯,綠領職業大揭秘!

我們想讓你知道的是
面對減碳壓力,各國政府加速推動淨零轉型,一起來認識近年新興的「綠領人才」吧!
面對減碳壓力,各國政府加速推動淨零轉型,使得近年來綠領工作需求成長快速,無論是節能、創能、儲能、系統整合,都需要更多人才投入;一起來認識這些綠領人才的工作內容!
綠領人才1:光電案場規劃師
光電案場規劃師是負責規劃和設計太陽能光電案場的靈魂人物,在太陽能發電項目的早期階段,負責評估場地、分析建物現況、土地利用、考慮環境因素,並規劃如何最有效地配置太陽能光電設施。
這些專業人員需要考慮光電模組的布局、設備的選擇、發電量的預估,同時要確保設施的安全性、環境平衡以及與當地社區的協調,需要同步評估技術、政策、法規、成本等多方面的考量。包含評估技術的可行性、效率及成本;處理預算和籌資,確保有足夠的資金來支持建置和運營光電案場,與銀行、投資者等對象進行談判和合作。同時也會參與詳細的建物與土地利用規劃、設計太陽能裝置的配置,最後擬定適當的執行方案。
適合有這些技能的人才:工程和技術知識、專案管理能力、太陽光電技術士、具電腦繪圖能力者、安全衛生管理、現場工務工程師、系統整合工程師。

綠領人才2:離岸風場施工經理
隨著離岸風電產業的從無到有,這項與海相伴的新興職業也因應而生,離岸風場施工經理作為「海上工頭」,需要管理船上的施工團隊。該職位作為施工船船長以及業主間的橋樑,在施工過程中扮演協調、判斷、下指令的關鍵角色,並同時負責管理設備運作的安全性,確保風場設備能安全順暢地運作,也需要臨場反應與即時調度,除了擁有豐富的工程知識,也需具備高度的專業和隨機應變能力。
此類人才所需技能可包含(但不限於):離岸風場施工專案(尤指大型施工船舶類)管理與協調溝通能力、鋼結構工程焊接技術、大型起重機操作經驗、安裝和拆除工程技術等

綠領人才3:綠電調度員
「讓每一度綠電發揮最大價值」是綠電調度員的終極使命。身為售電業中的綠電調度員,需要解讀電廠發電數據(供給)和企業用電數據(需求)的能力。由於再生能源會受到天氣影響發電量的高低,必須利用過往經驗和電力數據資料,透過事前預測和事後調整,制定適宜的綠電匹配規劃,確保每一度電廠發出的綠電,盡可能地為企業客戶所使用。
適合具備這些技能的人才:電力系統知識、數據分析、計算機科學、風險管理、團隊管理

綠領人才4:綠能融資顧問
綠能融資顧問是指在再生能源領域提供融資和財務建議的專業顧問。這些顧問必須擁有豐富的金融、投資和相關產業知識,致力於協助業者成功獲得綠能融資。
綠能融資顧問的工作涉及財務、工程、保險、法律等四大領域的盡職調查(註1),和一般企業融資不同的是,專案內容涉及電廠等能源基礎建設,綠能融資顧問需要親自至再生能源案場勘查,實地檢視專案進度、了解業者如何經營當地社區關係以及環境生態的維護,並透過上述資訊判斷潛在風險,針對案場的可融資性提出建議。也因為這份工作和能源轉型的永續發展相關,所以也對環境懷抱著「使命感」,期許自己的貢獻能讓臺灣乃至於全世界,都能更加靠近淨零永續的願景。

※註1:盡職調查(due-diligence, DD)為企業投資和併購案中常見的流程,旨在整理並評估有關特定業務、投資或交易等專案的重要資訊,通常包含財務、法律和技術等面向,以確保決策者在做出重要決策前有全面的瞭解,並能夠最大程度地降低潛在風險和不確定性。
*以上資訊部分由大同智能、伯威海事、陽光伏特家、富邦銀行提供。
(經濟部能源署廣告)