程式設計之路
對于軟體開發, 筆者最近聽到兩種極端的聲音, 其一是程式設計人員沒前途, 另一種聲音則是軟體是有夢的工業, 不禁讓筆者想好好地談一談軟體這一行。
程式設計人員沒前途?
有一次收到一位讀者來函, 內容是:「最近在網路上看到了一些文章說:他妹妹花八萬大洋到資策會學程式設計, 結果她們老師告訴她們在臺灣當程式設計師是一件吃力不討好的工作, 錢少、事多、沒地位, 還不如去干網路工程師…寫出不算好的程式時, 人家連看都不看, 反之寫出很棒的程式不用多久盜版滿天飛, 真不知要如何糊口, 看完這些文章后, 挫折感增加不少, 請問這是真的嗎?」
筆者暫時不回答這個問題, 先來談一談軟硬體的發展趨勢。
子曰:「圣之時也」也許是筆者特別喜歡軟體的關系, 總覺得硬體有一天會走向越來越穩定、越來越成熟、越來越便宜的階段, 而最終只有軟體才能夠讓電腦變成真的符合使用者的需要, 所以常說:「搞硬體有什么前途?」, 這大約是1985年筆者剛退伍進入資訊界的事情。
記得工作到第二年的時候(1986~1987), 常常到工業研究院「電子所」(現在叫做「電通所」)出差, 當時「臺積電」正要成立, 可能是拜股市狂飆之賜, 公司還沒成立, 股票一股就喊到12元(一股的面額是10元, 也就是說還沒有看到的東西就有20%的漲幅), 以現在的角度來(目前「臺積電」的股票大約120元左右), 經過十年, 投資報酬率十倍, 如果再把增資配股計算進去, 投資報酬率就更可觀了。 但大部分的人都不知道, 「臺積電」的未上市股價在硬體景氣欠佳的時候, 曾經跌到5、6元沒有人買, 當時聽到不少買了「臺積電」股票的電子所員工叫苦連天, 買到臺積電股票的人算走運, 若是買到無法度過硬體景氣低迷的公司, 倒閉了(大家比較而熟能詳的例子是「佳佳」科技), 股票拿來當壁紙, 看了還心痛呢!
硬體過去十年的發展, 完全超出筆者的預測, 那么未來的發展呢?筆者依然相信硬體會越來越穩定、越來越成熟、越來越便宜, 當然這并不意味著硬體產業會馬上變成夕陽工業, 但可以確定的是硬體越好, 軟體能夠發展的空間就越大, 也更能創作出符合使用者需求的東西, 可發揮的空間當然要比硬體多得多。
未來硬體還有幾年的好光景?子曰:「圣之時也」, 筆者不是孔子說的圣者, 靼椎街賦瞿母鍪焙蠐蔡?(軟體)景氣好、哪個時候不好, 但堅信未來軟體的需求必然遠大于硬體。
軟體工業初露曙光 -- 友立資訊股票上柜軟體的發展潛力在美國已經是無庸置疑的, 但是在國內呢?也許有人覺得盜版軟體滿天飛是阻礙軟體發展的禍首, 筆者倒不這么認為, 筆者覺得盜版軟體只是軟體發展路途上的幾塊絆腳石, 而這些石頭可以透過立法及執法慢慢將其鏟除, 真正影響軟體發展的原因是缺少資金及人力的灌溉。
軟體與硬體最大的差別在于軟體不是一座座的工廠, 而比較像樹木, 工廠蓋好開始運作之后, 產品就可以不斷地生產出來(當然, 之前還有產品的研發), 但樹木卻需要園丁時時為它除蟲、施肥…, 而軟體從業人員就好像是照顧樹木的園丁, 至于肥料從何而來呢?筆者以為最理想的模式是樹木本身能夠自給自足, 所謂樹木本身能夠自給自足, 以一顆果樹而言, 如果結的果實很多, 那么果實成熟落地之后又會成為果樹本身的肥料, 而達到自給自足的地步, 對軟體來說, 若銷售情況良好, 則賺來的錢用于加強產品的功能或開發新的產品, 便是自給自足, 將來產品越來越好、越來越多元化, 又能創造出更好的銷售成績。 好的果樹會越來越強壯, 反之, 不好的果樹最終可能只有枯死一途, 這是所謂的「正面循環」與「負面循環」。 而臺灣過去的軟體發展卻處于「負面循環」狀態, 銷售影響了產品的改良, 而產品沒有進步又影響了銷售, 加上軟體盜拷, 雪上加霜。
不夠最近這幾年, 在政府大力推廣X百萬人上網的情況下, 電腦的使用人口與日遽增, 而這也帶來相當可觀的軟體使用人口, 這是臺灣軟體生態值得注意的改變之一。
除了軟體使用人口增加之外, 另外有一件事也可能為軟體帶來生態上的改變, 那就是「友立資訊」股票上柜買賣, 「友立資訊」上柜以來股票狂飆兩倍多, 使得其本益比高達四、五十倍(注:一般電子股的本益比大約是20~30倍), 緊接著后來上柜的「資通電腦」與「倚天資訊」也出現類似的情況, 于是軟體業被許多所謂的「證券分析專家」評為有夢的工業。
筆者指出「友立資訊」上柜的情況, 不在強調購買軟體公司的股票會賺錢(實際上, 在股票狂飆時, 大部分的投資人都無法在低價時買到股票), 而想說明的是, 大家已經開始重視軟體業, 愿意投入資金到軟體業, 而這也表示軟體業比以往更容易募集資金用以灌溉軟體這顆樹木。
套裝軟體 vs. 專屬軟體筆者將軟體簡單地分成兩類 -- 套裝軟體及專屬軟體, 就「套裝軟體」來看, 目前全世界只有一個第一名 -- 美國, 相信再過50年, 也沒有一個國家能夠與美國匹敵, 不過這并不表示臺灣已經無法插足于套裝軟體, 稍后筆者會提出自己的看法。
就「專屬軟體」來看, 須依地區特性及個別需求而定, 舉例來說, 很多單位都有自己的程式設計人員, 就是因為套裝軟體不能符合需求, 所以才要自己開發, 依電腦發展的情勢來看, 專屬軟體的需求會越來越大。
讓我們回到套裝軟體上面, 筆者又將套裝軟體分成「通用型」及「利基型」兩種類型, 瀏覽器、文書處理軟體、掃毒軟體、試算表軟體、繪圖軟體、資料庫軟體…等, 屬于通用型套裝軟體, 至于利基型則必須具備某一特定專業領域知識所開發出來的軟體, 例如法律的檢索系統、會計系統…等, 都屬于利基型的軟體。 比較特殊的軟體是游戲軟體, 筆者將游戲軟體歸類于利基型套裝軟體, 主要是因為不同類型的游戲軟體彼此沒有共通性, 而只要讓玩者覺得好玩, 就會刺激購買欲望, 故將其歸類為利基型套裝軟體。
想要開發通用型套裝軟體必須考慮兩個重要的因素 -- 壓倒性及競爭對手。 首先筆者必須說明的是通用型套裝軟體只有前幾名才有生存空間, 甚至只有第一名才有生存空間, 為什么呢?相信大部分的使用者都不愿意選擇可能被淘汰的軟體, 因此軟體的使用者越多, 就越能帶來更多的使用者, 最后便形成了第一名的使用者人數壓倒性地多于第二、三名的使用者, 此外, 對大部分的使用者來說, 一旦習慣于某一套軟體, 要改用其他軟體就比較不容易。 開發通用型軟體的另一個考慮因素是競爭對手, 關于這一點, 其實筆者不必多說, 大家只要想一想微軟如何利用其在作業系統的優勢, 大量散播免費而又功能強大的IE, 硬是擠下Netscape在瀏覽器領域的霸主地位, 就可以知道其競爭之激烈。 因此, 筆者建議大家多往利基型軟體來發展。
程式設計師的未來讓我們回到「程式設計師是否有前途?」這個話題, 其實就「前途」這個詞來說, 每個人的感受并不相同, 有些人覺得有前途必須擠進世界100大富豪, 有些人覺得找到一份「錢多、事少、離家近」的工作就有前途, 有些人覺得找到一份安穩的工作就有前途, 有些人相信只要做自己有興趣的工作將來一定會有前途…。
如果您想擠進世界100大富豪, 能夠給您答案的人應該不是筆者。 根據經濟學最基本理論來看, 創造財富最重要的兩個要素是資本及勞力(智力也屬于勞力的一種), 想要藉助軟體來創造極大的財富, 智力是最重要的, 接著要看您能夠累積多少資金, 并且讓每一份資金輔助智力讓資本與智力發揮到最大的乘數效果。
如果您的目標是找到一份「錢多、事少、離家近」的工作(最好再加上「權高、位重、責任輕、睡覺睡到自然醒、打球打到腳抽筋」), 也許真的有這樣的工作, 但是筆者工作這么久以來還沒遇過, 如果您要的是這種前途, 筆者也還沒有答案。
如果您的目標是找一份安穩的工作, 筆者想引用一位參加過資策會短期程式設計課程的讀者來函中的一段話:「記得那時開訓典禮, 資策會的長官說過, 這種訓練只是給大家一塊進入資訊業的入門磚, 可不是一張保命靈符;一切的一切, 還是要靠自己努力才成。 」, 沒有一種訓練可以成為資訊工作者的保命符, 只有不斷地自我充實, 才能夠確保您有一份安穩的資訊工作。
不過筆者在此要說明一點, 很多人誤解了不斷自我充實的意義, 以為大量吸收新知就是最好的自我充實, 在筆者所帶過的組員中, 遇過有幾位組員, 非常熱中于追逐所謂的新知, 訂閱的雜志至少有五、六種, 什么新名詞, 他幾乎都知道, 但程式就是寫不好, 這是為何呢?舉凡知識都可以分成「廣」與「深」兩個方向, 像剛才筆者所說的這種組員就是屬于知識「廣」的人, 但廣而不深, 把時間花在為了追求廣博的知識, 忽略了深入研究的重要。 怎樣做到深的程度?其實觀念很簡單, 只要您心里想著要提升工作效能, 在提升工作效能的過程中, 您會不斷吸收與工作有關的知識, 就可以做到深的程度, 而根據筆者過去在資訊界工作的經驗來看, 大部分的主管都相信能夠把分內工作做到最好的員工, 就能夠做好其他工作。
最后一點, 如果您覺得只要做自己有興趣的工作將來一定有前途, 甚至只要在自己有興趣的地方一直做下去, 不管有沒有「錢」途, 都覺得很快樂, 想必是不需要筆者提供任何意見了。
軟體之路的準備工作剛才淺談了軟體及程式設計師的未來, 但不是每個人的在軟體這條路的發展都是相同的, 以下是筆者的建議, 僅供參考。
如果您在硬體公司上班:
不要看了本文之后, 就覺得硬體沒前途了, 如果您目前的待遇還不錯, 留著繼續干, 但不妨撥一點時間來學習程式設計, 即時將來不一定要走程式設計這一行, 但程式設計的應用會越來越廣, 它很可能成為您工作上的另一項利器。
如果您在軟體公司上班:
目前軟體業還是艱困行業, 加班是普遍的現象, 薪水也可能不高, 希望您看到本文之后, 心理上能夠稍微平衡一點。 如果您原本就對軟體業充滿信心, 筆者也要提醒您, 面對未來軟體的大潮流, 除了軟體開發的技能之外, 身體是最重要的, 如何在錢少、事多、又必須不斷自我充實的情況下, 依然保持健康的身體及旺盛的活力, 是您必須面臨的課題。
如果您是在學學生:
對于在學學生筆者的建議只有一個 -- 好好地念好每一個學科, 如果對程式設計特別有興趣, 可以加重程式設計課程的時間, 但其他課程不要抱著只要Pass的心態。 根據筆者過去的經驗, 一旦開始全心投入工作, 就沒有什么時間來閱讀工作之外的書籍, 因此只有在學期間能夠以從容的心情去閱讀那些看似對工作沒有什么幫助的課程, 如果連那一段該涂上讀書色彩的人生, 都涂上了其他色彩, 那么當您有一天回顧自己的人生時, 可能會遺憾其中少了某些色彩。
如果您想轉行進入軟體業:
如果您是這種人, 筆者知道您目前是最苦的, 在還沒有找到新工作以前, 您必須參加訓練課程讓自己有資格加入資訊業這一行, 一旦找到工作之后, 還要時時加強自己半路出家不足的地方。
筆者先假設您已經順利地找到工作了, 因為好不容易找到工作, 相信您一定會戰戰兢兢面對自己的工作, 但另一方面您也希望在工作中學習更多的技能, 所以很多人都期望自己被指派一份比較有挑戰性的工作, 藉以加強自己的技能, 但往往事與愿違, 而被指派了一份比較簡單的工作, 結果做起來就不是那么起勁, 而影響了應有的表現。 在此讓我們從主管的角度來想一想, 對于一位半路出家的員工來說, 我們并不知道它的實力如何, 比較保守的主管當然會先指派比較簡單的工作, 如果簡單的工作都做不好, 如何接受比較有挑戰性的工作呢?所以筆者的建議是, 如果您覺得主管指派給您的工作太簡單了, 就把它做到120分吧!
想要轉行進入軟體業, 另一個必須面臨的問題是如何找到第一份工作, 如何找到第一份工作呢?學歷、技能檢定證書、程式設計課程結訓證書、實力…, 哪一件事情最重要呢?筆者一直都覺得實力最重要, 若無實力, 一面談就馬上破功(當然, 有實力的人還必須具備自我表達的能力, 在面談中才會有好的表現), 筆者是一位相信從面談中就可以知道對方有沒有實力的人, 筆者在此不是要否定學歷、技能檢定測驗、及程式設計訓練課程的意義, 只是想提醒您獲得更高學歷、參加技能檢定測驗、或參加程式設計訓練課程的目的都是為了提升實力, 而學歷證書、技能檢定證書、或程式設計結訓證書則不能保證讓您獲得面談者的青睞。
不是只有軟體公司這一條路剛才的話題都一直在軟體業上面繞, 但實際上需要程式設計人員的行業不只局限于軟體業, 舉筆者所知, 所有的公家機關及稍具規模的私人公司都有程式設計人員的編制, 未來程式設計會走入各行各業, 當我們將軟體應用于某一個行業時, 除了程式設計的技能之外, 行業別的專業知識(Domain Knowledge)也是不可忽略的。 其實筆者甚至覺得非資訊科系學生投入程式設計領域, 其發展前途反而會比資訊科系學生來得大, 因為只懂得程式設計而不懂行業別的專業知識, 其所設計出來的軟體, 可能會讓使用者來遷就一般程式的習性, 反之, 如果既懂得行業別的專業知識又懂得程式設計, 會比較容易站在使用者的角度來開發出符合使用者需求的軟體。 當然, 對于資訊科系的學生來說, 也不必矯枉過正, 聽了筆者一說, 就覺得念資訊科系比較不好, 畢竟資訊科系在資訊方面所受的專業訓練比非資訊科系來得多, 將來開發軟體時多跟使用者溝通, 了解使用者的需求, 也一樣可以讓您的軟體做什么像什么。