程序員真情懺悔錄

本文轉自臺灣七年前的 JAVA 週報,該文是由臺灣當時任職於 Sun Microsystems 的 王森 先生,迴應當時 蔡學鏞 先生所寫的一篇文章「程序與香雞排」。原文爲繁體中文,本帖將其內容和用詞轉爲簡體中文。


JAVA週報: 程序設計師真情懺悔錄
 
時間: Sat, March 30, 2002
標題: 【轉載】程序設計師真情懺悔錄(上)(中)(下)

------------------------------------------------
<不負責講座> 程序設計師真情懺悔錄(上)
Sun 教育訓練中心 王森


前言 :
不久前,蔡學鏞先生髮表了兩篇分別叫做「程序與香雞排再論香雞排 」的文章,受到的迴響之大,據說連作者本人都接到該文的轉寄。足以見得該文的內容道出了臺灣程序員心裏最深處的想法。所以,本文想針對程序員來做討論,看看身爲一個程序員,究竟犯了什麼過錯,導致大家寧願賣雞排,也不願再繼續寫代碼。


本文 :
在臺灣,大部分的人都有個認知,就是「搞硬件的比搞軟件的要好賺」,「做 SA/SD 比 coding 地位要高」。那些做 IC Design 的傢伙待的公司所發的股票,永遠比搞 Software Design 的人待的公司發的還多,股價也高出好幾倍。搞 SA/SD 的人,在公司地位好像也比單純寫代碼的人高。於是我的父親有一次問我:「是不是搞硬件的人智商比較高?」,「是不是搞分析、設計的人比較有地位?」

事實上,在學生時期我就認識不少人,有的人因爲程序寫不過別人,所以轉換跑道專攻硬件;也有人覺得每天面對示波器和邏輯分析儀讓他們頭痛,工程數學也學不過人家,所以轉行搞軟件。到了實際面對許多前來接受教育訓練的學員之後,發現有人是因爲寫了十幾年 BIOS 和 driver,覺得乏味而沒有前途,所以想試看看應用程序的開發;有人則是因爲受不了客戶每天改需求,而且寫 BIOS 和 driver 的人好像比較少,價格比較高,因此想學習撰寫系統軟件。詢問那些上高階課程的朋友,有的人發現自己只會胡做 SA/SD 唬爛老闆和客戶,所以希望重新打好基礎,從基本的 coding 做起;有的人則因爲寫代碼寫太久,覺得應該往上走向 SA/SD 的路子,畢竟老了代碼就寫不動了。這個世界上什麼樣的人都有,絕對不能以小羨大。就很像搞政治的老是騙我們臺灣只分成外省人和本省人;搞幫派的人告訴我們警察是帶着槍的流氓。實際上,每個族羣大家在沒有被分化之前都相處得和樂融融,而雖然有警察做 xxxx,上班時間跑去 xx,但是也有開我們罰單時酌情輕罰的警察,和保護我們身家性命的警察。

即使如此,身爲一個程序員還是要問,那爲什麼寫代碼的好像地位就是比較低?筆者認爲,這是進入門坎的問題,會做相同事情的人多了,就會削弱那樣技能的價值。就很像考過 MCSE / MCSD 的人,通常比起考過 SCJP / SCJD 的人要來的沒價值,前者因爲考過的人實在太多,而後者考過的人少,僅是如此而已。但絕不是代表考過 MCSE 的人,素質就比考過 SCJP 的人要差;也不代表考過 SCJP 的人,實力真的比較高段。相信求學的時候您一定遇過一種人,他實力也不怎麼樣,可是考試的時候他 x 的就是考得比我們高。怎麼我們心裏就是不服,可是大多數老師偏偏就是比較喜歡分數高的人。因此,滿坑滿谷的人自稱會編程,老闆不愁找不到可以做項目的人,你要求的薪水和價格很高? 沒關係,找個學校剛畢業的小子,寫得比你快,寫得比你好,用的技術比你新,更重要的,價格比你這個老屁股便宜一半,所以程序員在僱主心中的地位日益低落,自然有跡可循。

"那麼,爲什麼寫代碼的進入門坎比較低?"

在各位 IT 從業人員的身邊,非科班出身的比率非常高 (當然還沒賣雞排的高)。科班出身的學生,搞不好在老闆眼中的地位,還比不上一個半路出家的自學者。那位自學者會 ASP、JSP、PHP、C/C++、Java、Linux、Windows、Oracle... 等,十八般武藝樣樣精通。而我們科班出身的學生,只會離散數學、數據結構和算法,Visual Basic 搞不好用得沒有人家熟,網站的架設搞不好也沒人家熟,更何況科班出生的學生,他的基礎學問搞不好根基也不紮實 (問看看您身旁的科班學生),難怪最常見的就是很多非科班的「高手」看不起科班的學生,覺得他們無三小路用,連個 Windows 操作都比他們差,甚至有人還大言不慚地說 :「我這輩子寫代碼,從沒用過書上的數據結構和算法,讀那些幹啥?」長期下來,科班的學生也開始質疑自己所學,甚至考慮轉行;當然,也有曲高和寡,孤芳自賞之人。總之,沒辦法受到老闆青睞,薪水永遠那麼少,想賣雞排的念頭就開始萌生。

之所以會有這種情況,筆者個人認爲有兩種主要原因,一是技術的流通性,二是臺灣軟件市場的需求。爲什麼技術的流通性可以產生大量半路出家的非科班生? 這都要感謝臺灣大量的作者,寫出大量的入門書籍,大幅減低進入編程領域的門坎。即使在各位眼中,中文的爛書很多,而且非常暢銷。但是,大家眼中的爛書,常常是再版多次的入門書,對某些人認爲是垃圾的東西,常常是另外一批人進入 IT 業的最佳踏腳石。不信各位到書店看看,是 "24小時學 C++"、"快快樂樂學 Java" 的書比較多,還是 "輕輕鬆鬆學微分方程式"、"21天學復變"、"電子學不求人" 的書多?兩者的差距是 N : 0 。是微分方程式和復變比 C++、Java 難學嗎?筆者兩個都學過,至少我可以發誓,就一個有基本學習能力的人來說,難度是一樣的,學成所需要的時間和功夫也是一樣的。再看我們的公開論壇,我們可以看到大量的軟件技術討論區,卻看不到硬件技術討論區 (喔,請別跟筆者說那些每天問哪家主機板比較好,哪臺燒錄器較穩定,或者說 CPU 頻率越高速度就越快越好,或是說 x86 的 Out-Of-Order Executon 是 "故障執行" 這一類渾話的討論區,和我說的硬件技術討論區是一樣的喔!)。書籍和論壇促進知識的流通,造成了大量的軟件人才,更何況學習編程只要一臺 PC 就能寫出好用的軟件;而學習硬件設計,需要的設備則是天價。

更重要的一點,就是學軟件的人,充分發揮儒家分享的精神,只要不是在論壇上冒充小妹妹,想要騙取大哥哥的同情來幫你寫程序作業,只要不是很差勁地亂問一通,通常至少會有熱心人士願意留下一個 URL,讓我們可以找到參考文檔。更具熱誠的人,還會用很多生動的比喻,讓初學者體會技術的真諦。在這種知識充分流通的環境下,當然產生出非常多的 IT 從業人員;每買一臺 PC,上頭各種軟件的需求是無窮無盡的,每天都有各行各業的人需要各種軟件,所以程序員的需求有一定的量。難怪有人說:「寫代碼的人餓不死,但是也不會發大財。」


待續....
------------------------------------------------

 

═══════════════════════

王森專欄> 不賣雞排也可以 - 程序設計師真情懺悔錄(中)

 

(續上期)

再來就是臺灣軟件市場需求所引發的問題。

一般我們把軟件分成「系統軟件 (System Software)」和「應用軟件 (Application Software)」。編譯器、組譯器、除錯器 、操作系統、驅動程序,都是屬於系統軟件的一部分。

臺灣除了硬件廠商、IC Design House 之外,甚少有撰寫驅動程序的需求。前幾年 Linux 被炒得熱時,也有許多高手投入操作系統、編譯器,以及簡化 標準函式庫 (API) 的研究。

而臺灣所需求的軟件,極大多數是屬於應用軟件,這些需求的應用軟件,其中很大比例是和數據庫有關係的 (其實不只是臺灣,其他地方也是約略相同的情形)。

所以 VB、Delphi 和 Power Builder 這類 IDE 大行其道,因爲他們容易上手,可以快速開發數據庫應用程序,相關入門書籍很多,會的人更多。因此符合我們前面所說的:「會的人越多,價值就越低」的理論。

但是別忘了,系統軟件有部分是偏向應用軟件的,比方說開發軟件用的 JBuilder 和 Visual Studio、製圖用的 AutoCAD、一套 IC Design 用的 Xilinx 或 Altera、做 OOA/OOD 的 Rational Rose 和 TogetherJ,筆者習慣稱這些軟件爲「軟件的軟件 (Meta Software)」。在一般程序員眼中,這類軟件「理所當然」地被認爲都是由國外所發展。

這類軟件有極高的進入門坎,所以國外這類軟件公司的獲利率很高,所以該公司的程序員可是身價非凡。

要知道,先前在媒體上有報導過,能夠讓 Microsoft 買軟件來用的公司,只有 Rational Rose (當然,不可能只買 Rose 來用)。如果做 IC Design 的人沒有你的軟件就沒辦法做事,身爲一個程序員,你會覺得你的身價和地位比做 IC Design 的人低嗎?
 
如果你做的軟件像 SoftICE 或 DriverWorks 那樣被做硬件的工程師大量地倚賴,你會覺得搞硬件的人比你厲害嗎?問題是,知道該如何設計一套這類軟件的人,恐怕纔是真正的異數。而且需要跨領域的專才。

要不是許多 OpenSource 的項目 (例如 : KDeveloper) 正在進行,恐怕很少人知道該如何設計一套 IDE。既然會製作這類軟件的人在臺灣少之又少,那麼他們的身價高嗎?很抱歉,臺灣沒有公司發展出足以和外國大廠競爭的開發工具 。舉 IDE 爲例,臺灣早期有家公司開發出一套名爲 DBtools 的產品,勉強可算得上是這類產品,某計算機書籍出版社也曾爲它出版過入門手冊,可是使用這套軟件的人好像... 沒看過 (如果該產品有不錯的佔有率,請原諒我是井底之蛙)。沒有市場,公司無法賺錢,即使你是少數能夠製作某一類產品的高手,公司最後關門大吉了,您也只能算是「少數能讓公司賠錢的程序員」罷了。所以我大膽假設, James Gosling 或 Anders Hejlsberg,如果學李敖一樣 50 年不離開這個小島,大概早餓死了。

以上的討論,真正優秀的高手看了之後,或許會產生有時不我予,不得已必須遠渡他鄉的想法。程序員的價值就如同書的價值一般,臺灣和國外有不同的看法。在臺灣,教科書比較便宜,應用的書比較貴;國外教科書比較貴,應用的書比較便宜。國外重內容,薄薄一本 How Debuger Work 可以賣 44.99 美金;而臺灣都是看頁數來計價 (侯捷 先生的書有努力在打破這個頁數的迷思,也做得蠻成功)。有很多原因導致這兩種文化之間的差異,但是市場因素肯定是其中重要的一項。

好了,程序員價值低落的原因討論過了,如果您同意筆者的論點,那麼不禁疑惑,大家彼此毫不保留地讓知識得以流通,技術得以擴散,本意是好的,結果反倒造成自己和別人身價的低落 ,這樣我們是不是從此不再和別人分享我們的心得? Java 高手 TAHO 先生看過本篇上半部之後,發表了底下內容:

------------------------------------------------
發言人: TAHO

> 哈 恭喜 TAHO 兄上 JAVA週報了...
> 通常至少會有熱心人士願意留下一個 URL,讓我們可以找到參考文檔,更具熱誠的,如新竹師院 BBS 站 Java 版的 TAHO 先生,還擅用很多生動的比喻讓初學者體會技術的真義。

@@".....
光看這一段 好像是褒獎
不過看了整篇文章...
突然發現......
原來我是讓程序員不值錢的兇手之一....
真是罪該萬死啊....

------------------------------------------------
但是 mue 先生接下來的發言,說卻命中本文真正的核心價值觀:
------------------------------------------------
發言人: mue

不會啦..要是每個程序員都死守自己所會的..讓所謂的專業門坎更高的話.. 就很難進步了..就是讓本來難的變簡單..自然就會有更難更深入的東西出現.. 這樣社會才進步得快丫..
------------------------------------------------



做應用軟件的人真的沒價值嗎?有些靠應用軟件賺了不少錢的朋友開始偷笑了。軟件必須加上專業知識,才能夠發揮價值;換句話說,如果您真的「只會寫代碼」,卻沒有配合各種領域的專業知識 ,「編程」這項技能本身根本毫無價值可言

就很像你的計算機裝了瀏覽器,可是卻沒有對外聯機的網絡一樣。如果沒有網絡本身,瀏覽器一點價值也沒有,更不需要一家公司大費周章地利用平臺優勢去整倒另外一家公司 。

我們可以把程序員比喻成架子上滿滿的 IT 相關書籍,而僱你的老闆就是前來買書的讀者。

你不能否認這麼一堆書裏頭,有好書,也有爛書,你也不能否認你心中的爛書是一本書,但是你卻不能說書裏面教你如何寫 Java 程序的內容是錯的。

可是,購書的讀者壓根兒根本覺得某幾本書一點價值也沒有。我們只能說,太多隻會「寫代碼」的程序員打爛了市場,就像一牛車的爛書一樣。你不能說爛書沒有價值,可是爛書會讓你對架上其他書籍的價值大打折扣,除非,你之前聽到別人口耳相傳這本書是好書。

 

大家或許不相信「只會寫代碼」的程序員存在於這個世界上,所以筆者舉個簡單的例子說明之:很久以前,臺灣某個論壇上有人發表了一篇 post,內容大概是說某 間公司在整理舊的源代碼時,發現了一則奇文,奇文內容如下:

-----------------------------------------------
// 底下是一個判斷某個整數是不是奇數的代碼
public static boolean isOdd(int n)
{
 while(true)
 {
  if(n==1) return true;
  else if(n==0) return false;

  n=n-2;
 }
}
-----------------------------------------------

您說撰寫這個代碼的人不會寫程序,他又好像會寫;你說他會寫程序,你又不服氣,覺得這個傢伙根本在胡搞一通。看過這則奇文軼事之後,當您下次聽到某公司,抱怨他們的程序員寫出來的軟件一堆 bug,速度出奇的慢,產品永遠賣不出去,害公司快經營不下去了,所以他們認爲程序員一點價值都沒有,只是一堆勞碌命的雜碎時,您會不會更加懷疑,是一堆莫名其妙亂搞的程序員,把你的行情給搞爛了?

 

待續....

昇陽計算機教育訓練中心 王森
----------------------------------------------



═══════════════════════

王森專欄> 不賣雞排也可以 - 程序設計師真情懺悔錄(下)


續上期

所以從今天開始,如果你對編程有一股熱愛,那麼我們一起努力,做個真正的程序員,而不要做一個雜碎且破壞別人的程序員;做一個真正寫得出有用軟件的工程師,不要做一個只會寫代碼的程序員。當然,如「意外的電腦王國 / 聯經出版社」一書所言,很多技術都是用在原本沒有預料到的地方而大行其道。許多科學研究無法有立即的貢獻,但是影響深遠,我們也期許有意從事基礎研究的科班研究生,認真地作研究,不要老是研究一些別人已經研究過的研究,不要老是冀望騙臺灣國科會等研究機構的經費,到了最後計劃結案時,才匆匆忙忙交出另外一篇騙更多錢的計劃書,或是拿不上臺面的研究。

最後,我們反省自己是不是也是一個只會「寫代碼」的程序員呢?請自行測驗底下幾個問題,這些問題都不可能有客觀的答案,所以每個問題都附上筆者主觀的答案,作爲筆者自己的反省。


Q1: 你尊重專業技術嗎?換句話說,你認爲術業有專攻嗎?當你接受外面的教育訓練課程時,你總是崇拜看起來什麼都懂的老師?換句話說,你認爲那些遇到課外問題就跟你說他不懂的講師是爛老師?

-你老覺得真正的高手應該精通各門各派的技術 (?),如果你會 XML,他不會,你就覺得你比他厲害。你覺得他的履歷上寫的技能太少,證照太少,所以你認爲你比他優秀?

有人老是覺得自己蠻會用 MFC 開發軟件,所以直覺認爲那些只喜歡,或是隻會用 VB 的人程度應該不高。問題是,有人會用 VB,當他覺得組件不好用,會自己寫程序處理 HTTP,因爲他懂 HTTP 協議的運作方式。工具裏附的瀏覽器太爛,就自己用功能語法不是很頂尖的 Basic 來寫 parser。相反的,有人號稱會用 MFC (版工注:或 .NET),但是除了靠 Help (版工注:或 MSDN) 找出名爲 Cxxxxx 的 類 (Class) 來用,再自己補上事件處理的部分之外,其他什麼事都做不出來。

有人認爲寫 Java 程序應該善用工具,用 UltraEdit 根本是重新造輪子的行爲,所以一開始就學 JBuilder (版工注:或 Visual Studio) 的使用者,其實他用 JBuilder 寫了老半天 GUI 程序,哪天回頭叫他用文本編輯器寫個簡單的 Frame + Button 他卻寫不出來,因爲他從沒弄懂過 Java 的事件處理模型。他只會不斷地:選擇組件 -> 放在容器裏 -> 調整位置和大小 -> 調整屬性 -> 按兩下 -> 填寫事件處理函數,成爲一個名副其實的「代碼女工」。

有人覺得他精通各家廠商的數據庫,所以看不起那些只會下 SQL 指令或是隻會寫 stored procedure 的人,因爲他可是精通 ODBC、JDBC、ADO、ADO.NET 各種程序的寫法。問題是,一個精通 SQL 的專家,和只會寫 SQL 語句的人,在數據庫表格交互參考、紀錄量很大的時候,要從中取出我們需要的數據,所下的指令在效率上,是幾秒鐘和幾個小時的差別

SQL 也是個專門學問,要能夠巧妙地操作它,必須下非常多功夫做研究,而且一研究可能就是十幾年。如果貴公司的項目老是苦於數據庫訪問的性能不佳,你猜老闆會花錢找一個有能力徹底改善所有 SQL 語句中性能問題的稀有專家,還是再找一個號稱他什麼都會,結果一點用場也派不上的「數據庫女工」? 我們常常看到某人列出他的履歷,好像會很多就是很厲害但是當我們完全深入一項技術時 (喔,我是說你真正下過功夫的時候),通常我們會越來越感覺到自己的渺小

蔡學鏞先生就是一個非常尊重專業技術的例子.

我們看到他在 http://www.csdn.net/expert/cxy/ 上寫的,他說他只精通 lots of Java APIs。我和學鏞聊過三次,有一次,我聽他說:「幹麻叫我搞 Linux,我又不懂 Linux!」如果是你聽到這句話,你會不會真的以爲他玩起 Linux 來肯定比你遜色?筆者突然想起神鵰俠侶裏的獨孤求敗,晚年只會拿樹枝和別人比武,可是你拿再厲害的刀劍就是無法打敗他。所以,請尊重專業技術,不要以爲人家沒說他會,你就比他厲害,真正厲害的人很多都不在檯面上,而是躲在後面偷偷笑我們呢!而我們一輩子也不知道我們被別人偷偷取笑了。中國文化數千年都是文人相輕的歷史,夠了,大家尊重專業吧!


Q2: 你覺得算法和數據結構無三小路用,因爲你從沒使用過?

-我們承認「無招勝有招」是內功心法的最高境界,但是在信手拈來之際,背後所代表的是對各家武功路數的徹底瞭解。由於臺灣幾乎只有應用軟件的開發需求,沒有系統軟件的需求,所以大多數的程序員都是站在「代碼女工」的角度看世界,只要有組件,有什麼搞不定的。但是今天如果你想設計一個 XML parser,不懂數據結構和算法可以嗎 ?好吧!你說我們不該重新造輪子,我們應該站在巨人的肩膀上看世界,如果什麼都自己硬幹,世界是會退步的。那麼試問,當你在使用 Java (版工注:或 .NET) 提供的 Collection Framework 時,你瞭解 ArrayList、LinkedList、TreeSet、HashSet 之間的差別嗎?

你知道他們的優缺點嗎?你知道他的特性嗎?不瞭解 ArrayList 和 LinkedList 的差異,用任一種去寫代碼,執行結果都一樣,可是性能差很多。大多數的人連了解特性都談不上,更別說很多每天想發展自己的語言、自己的編譯器、自己的操作系統的人。沒有基礎學問的瞭解,如何去設計一個 Collection Framework 或 STL?你說數據結構和算法沒有用,你去做看看現在 IDE 中普遍有的 code insight 功能看看 ?以 C++ Builder 來說,要在短時間內搜尋所有的標頭文件,並找出某函數的 prototype,如果沒有對數據結構和算法有充分了解,一樣做得出來,只是產品會賣不出去罷了。我在課堂上常常舉一個 scalability 的例子給學生看:我希望寫一個 1+2+3 ... + 100 的程序,大多數的人都是寫:

int sum = 0 ;
for(int i = 1 ; i < 101 ; i++)
sum = sum + i ;

 

而真正受到數學觀念薰陶的人會寫成:

int sum = 100(100+1) / 2


前者是 O(n),後者是 O(1),當 item 很多時,運算時間是不是差很多?這些都是我們的教育所產生的問題 (當然筆者也曾是受害者之一)。但是從今天開始 ,我們可以認真思考每行代碼。

想想發展 MP3 算法的人和寫 WinAmp 的人,哪個比較厲害?你會說都很厲害,可是沒有前者就沒有後者;前者搞不好還可以坐收權利金,後者只能苦哈哈的賺些小錢或等人購併。我們停留在崇拜應用程序技巧的階段,而真正值得崇拜的是那些難得一見的創意。

筆者遇過一個朋友,叫他撰寫一個「費式數列 (fibonacci)」的小程序,比請他寫一個可以瀏覽數據庫的表內容的程序還難 (請不要與我討論費式數列的小程序沒有實用價值的問題,這裏討論的重點不是這個)。前者需要稍微動點小腦筋,後者只要會拖拖組件,設定 property 就搞定。RAD 快速開發工具本身不是罪,但是沒學好九陽神功就妄想幾小時練成乾坤大挪移,最後只會走火入魔而死,徹底變成一個「代碼女工」。


Q3: 你常常以科班或非科班自居?

-你是科班生,瞧不起非科班生?因爲你是正統?你是非科班生,瞧不起科班生?因爲你覺得你會的東西比科班生還多。爛學校會出現好學生,好學校也會有爛學生,因爲比例一樣多,所以我們不能以偏概全。

如果仗着受過幾年正規教育,自己又從未好好深入學習,就自以爲是正統,比較學術的說法這叫做「陽具文化」。

有些創新的 idea 是一般制式腦袋的科班學生很難想出來的,因爲專家是訓練有素的狗。如果你是學電信的朋友,你發現交換機是一個葬儀社的老闆,因爲生意被別人搶走而發明的,那你會不會氣死?如果自學有成的程序員,仗着自己會的東西比較多,你說你精通 Java 的各種技術,但是卻沒想過發展 Java 的 James Gosling 博士,是一個正統出身的科班生,知道了這件事情,會不會讓你更加尊重專業?


Q4: 你是學計算器科學的,可是邏輯能力並沒有比較好,還常常受騙?

 

Q4-1: 你會被潮流所鼓動嗎?你常常被別人的思考牽着走?人家鼓吹 Linux 多好多好,你的腦袋連轉都沒轉過就發憤努力地考 Linux 認證?

-別人把公司裏的 server 全換成 Linux,客戶端也都改成 Linux,公司仍然正常地運作。結果你學了 Linux 之後,看到電視上 BSA 同法務部做的廣告嚇得你冷汗直流,深怕明天因爲智慧財產權被捉去坐牢。


Q4-2: Sun 跟你說 Java 跨平臺,你沒試過也跟人家說跨平臺的優點?

-Borland 已經可以做到一份光盤裏,同時附上 Solaris、Linux、Windows、MacOS X 的 JBuilder,你卻爲了 EJB 無法部署到不同公司的 Application Server 忙得像無頭蒼蠅。


Q4-3: 之前一窩峯人鼓吹 XML,結果你盲目追求流行,做出來的東西 tag 比 data 還多?

-會用的人徹底改變了公司裏數據交換的流程,而你整天只會 SAX 來、DOM 去地寫 XML 數據庫 (用 XML 來存儲數據的數據庫。)


Q4-4: 微軟的廣告告訴你 Windows XP 和 IE 將不支持 Java,你都還沒試過就跟別人嚷嚷 Java 已死?

-套句 BBS 上 moga 先生的名言:「那我現在在 Windows 2000 上跑的 Java 程序是神蹟?」 現在一票人每天宣傳 Web Service 的好處,你連想都沒想過,就急着把公司的舊系統全部改成 Web Service 來做,結果浪費一堆錢,糟糕的性能讓你每天被客戶臭罵。


Q4-5: Web Service 當然是美好的前景,但是並非適用於每個角落,目前世界上並不存在完美的 solution。人家說不能寫代碼一輩子,寫代碼的人,生命週期很短,你也跟着別人開始往 SA/SD 前進?

-如果世界上每個工程師,都可以經由經驗就成爲優秀的 SA/SD 人員,那麼理論上咱們應該有些象樣的軟件產品纔對。有些人寫了幾十年,還是一個優秀的程序員,你問問他,如果沒有遇到糟糕的老闆,糟糕的待遇和糟糕的制度,他願不願意寫一輩子代碼?

我願意。


Q4-6: 技術高手告訴你要多用 RAD,不該重新造輪子,所以你努力的問 how 而不問 why?

-結果真正賺到錢的都是那些像 JReport 做軟件組件的軟件公司。微軟說 J2EE Blueprint 的 Pet Store,用 .NET 技術做,比用 J2EE 做還要快許多倍,然後你就相信了;最近,IBM 和 Oracle 重新加強 Java 版的 Pet Store,讓它比 .NET 版的還要快 18% ~ 22%,你又改口說 Java 比較好。


Q4-7: 一個系統在設計的時候有很多考慮,有人以可擴展性爲主,有的以安全性爲主,有人以性能爲主。如果沒有設計理念,大家程序裏的 function 全部改成 inline 就好了,管他編譯出來的執行文件有多大。系統只以性能做考慮,我們還需要 Design Patterns 做什麼?

-那些王八蛋資料和選舉時的民調一模一樣,對一個腦袋清楚的人完全沒有參考價值。當然,以情感因素來看民調的人例外。如果你沒有經過自己的自主判斷,就盲目地跟隨技術潮流,那麼下次當你看到有人排隊買電視媒體鼓吹的產品、買蛋塔、搶購特價商品時,請不要投以排隊的人們奇怪的眼光。


Q5: 你尊重老前輩嗎?

我們都相信,世界上唯一不用努力就可以獲得的東西就是老。所以吃過的鹽巴比你吃過的米還多的人,沒有任何值得尊重的。我們更相信,IT 產業永遠是年輕人出頭,而英雄少年也常在心裏想:「李杜詩篇萬口傳,至今已覺不新鮮,江山代有才人出,各領風騷數百年。」

但是我們認真想想,從 Apple 2 的時代到現在隨便一顆 CPU 都是好幾 GHz 的時代,計算機的本質有什麼改變嗎?不就是一臺不斷對內存做處理和 I/O 動作的機器 。你笑那些只會用 Fortran 或 COBOL 的老前輩,那你學的 Java 或 C# 比起這些老語言又高明到哪裏去?編程不過是「聲明、循環和函數」三大要素。時間久了,產生了一堆新名詞,配上一些新的發展理念,但本質上沒有改變。如果你是推倒前浪的後浪,當你看到 李維 先生撰寫的「[長篇] 我的回憶和有趣的故事」,或 侯捷 老師最近在 Run!PC 雜誌撰寫的「侯捷觀點」這些老前輩的文章,你有把握寫出比他們更高明、更有深度的東西嗎?


最重要的問題,
Q6: 你騙過老闆嗎?

-你在履歷上寫的十八般武藝樣樣精通,結果是梧鼠技窮 (注: 比喻技能雖多,卻不能專一),一錄取之後什麼東西都做不出來,筆者至少聽過 20 個老闆跟我講過這件事情。


Q6-1: 你以爲你的身價比較高,只因爲你從事「軟件研發」的工作?

-然而現實的生活中,「獲利」是真正決定成敗的關鍵。除非你的東西幫老闆賺了錢,如果沒有,你憑什麼要求更多薪水?憑什麼要求 50 張價值數千萬元的股票?如果你寫的東西質量很差、bug 超多,客戶抱怨不斷,老闆賺不到錢,你還老是在外頭痛罵老闆不尊重技術人員。如果把行業換成色情行業 ,那老闆不就等於被幹洗?這樣看來,程序員和詐騙團伙乾的事情有什麼兩樣?如果這樣的人多了,真正要去賣香雞排的,不是寫代碼的人,而是僱用了這些雜碎的老闆纔對。

 

............全文完

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章