王森 - 程序設(shè)計(jì)師真情懺悔錄(修正完整版)
不賣雞排也可以 - 程序設(shè)計(jì)師真情懺悔錄(修正完整版)
升陽(yáng)計(jì)算機(jī)教育訓(xùn)練中心 王森
moli0205@mail2000.com.tw
前言:
不久前,蔡學(xué)鏞先生發(fā)表了兩篇分別叫做"程序與香雞排","再論香雞排"的文章,受到的回響之大,據(jù)說(shuō)連作者本人都接到該文的轉(zhuǎn)寄.足以見(jiàn)得該文的內(nèi)容道出了臺(tái)灣程序設(shè)計(jì)師心里最深處的想法.所以,本文想針對(duì)臺(tái)灣程序設(shè)計(jì)師來(lái)做討論,看看身為一個(gè)程序設(shè)計(jì)師,究竟犯了什么過(guò)錯(cuò),導(dǎo)致大家寧愿賣雞排也不愿再繼續(xù)寫程序.璩美鳳小姐為自己驚動(dòng)臺(tái)灣社會(huì)的行為寫了真情懺悔錄,我們也該真誠(chéng)地檢討一下自己.
注意:
本文內(nèi)容提及"程序女工"與"數(shù)據(jù)庫(kù)女工",并沒(méi)有對(duì)女性IT從業(yè)人員不敬的意思,
這些用語(yǔ)只是用來(lái)描述"長(zhǎng)期從事相同且單調(diào)工作的人"的意思.請(qǐng)女性朋友勿介意.
另外,本文也并非歧視"長(zhǎng)期從事相同且單調(diào)工作的人",這些人都是臺(tái)灣經(jīng)濟(jì)奇跡的幕后英雄.本文只是單純檢討程序設(shè)計(jì)師身價(jià)低落的主因,并提供主觀的解決之道.本文的檢討主角鎖定為"專門寫程序"的程序設(shè)計(jì)師,請(qǐng)勿將其它高階角色的
IT從業(yè)人員和本文內(nèi)的主角混淆.
本文:
在臺(tái)灣,大部分的人都有個(gè)認(rèn)知,就是"搞硬件的比搞軟件的要好賺","做SA/SD比coding地位要高".那些做ID Design的家伙待的公司所發(fā)的股票,永遠(yuǎn)比搞Software Design的人待的公司發(fā)的還多,股價(jià)也高出好幾倍. 搞SA/SD的人,在公司地位好象也比單純寫程序的人高.于是我的父親有一次問(wèn)我:"是不是搞硬件的人智商比較高?","是不是搞分析設(shè)計(jì)的人比較有地位?"
事實(shí)上,在學(xué)生時(shí)期我就認(rèn)識(shí)不少人,有的人因?yàn)槌绦驅(qū)懖贿^(guò)別人,所以轉(zhuǎn)換跑道專攻硬件;也有人覺(jué)得每天面對(duì)示波器和邏輯分析儀讓他們頭痛,工程數(shù)學(xué)也學(xué)不過(guò)人家,所以轉(zhuǎn)行搞軟件.到了實(shí)際上面對(duì)許多前來(lái)接受教育訓(xùn)練的學(xué)員之后,發(fā)現(xiàn)有人是因?yàn)閷懥耸畮啄?/SPAN>BIOS和driver,覺(jué)得乏味而沒(méi)有前途,所以想試看看應(yīng)用程序的開(kāi)發(fā);有人則是因?yàn)槭懿涣丝蛻裘刻旄男枨?/SPAN>,而且寫BIOS和driver的人好象比較少,價(jià)格比較高,因此想學(xué)習(xí)如何撰寫系統(tǒng)軟件. 詢問(wèn)那些上高階課程的朋友,有的人發(fā)現(xiàn)自己只會(huì)胡做SA/SD唬爛老板和客戶,所以希望重新打好基礎(chǔ),從基本的coding做起;有的人則因?yàn)閷懗绦驅(qū)懱?/SPAN>,覺(jué)得應(yīng)該往上走向SA/SD的路子,畢竟老了程序就寫不動(dòng)了.
這個(gè)世界上什么樣的人都有,絕對(duì)不能以小現(xiàn)大.就很像搞政治的老是騙我們臺(tái)灣只分成外省人和本省人,搞幫派的人告訴我們警察是帶著槍的流氓.實(shí)際上,每個(gè)族群大家在沒(méi)有被分化之前都相處的和樂(lè)融融,而雖然有警察擄妓勒索,上班時(shí)間跑去聚賭,但是也有開(kāi)我們罰單時(shí)酌情輕罰的警察,和保護(hù)我們身家性命的警察.
即使如此,身為一個(gè)程序設(shè)計(jì)師還是要問(wèn),那為什么寫程序的好象地位就是比較低?筆者認(rèn)為,這是進(jìn)入門檻的問(wèn)題.會(huì)做相同事情的人多了,會(huì)會(huì)削弱那樣技能的價(jià)值. 就很像考過(guò)MCSE/MCSD證照的人,通常比起考過(guò)SCJP/SCJD證照的人要來(lái)的沒(méi)價(jià)值,前者因?yàn)榭歼^(guò)的人實(shí)在太多,而后者考過(guò)的人少,僅是如此而已.但是絕不是代表考過(guò)MCSE的人素質(zhì)就比考過(guò)SCJP的人要差,也不代表考過(guò)SCJP的人實(shí)力真的比較高段.
相信求學(xué)的時(shí)候您一定遇過(guò)一種人,他實(shí)力也不怎樣樣,可是考試的時(shí)候他x的就是考的比我們高,怎么我們心里就是不服,可是大多數(shù)老師偏偏就是比較喜歡分?jǐn)?shù)高的學(xué)生.
因此,滿坑滿谷的人自稱會(huì)寫程序,老板不愁找不到可以做project的人,你要求的薪水和價(jià)格很高? 沒(méi)關(guān)系,找個(gè)學(xué)校剛畢業(yè)的小子,寫的比你快,寫的比你好,用的技術(shù)比你新,更重要的,價(jià)格比你這個(gè)老屁股便宜一半.所以程序設(shè)計(jì)師在雇主心中的地位日益低落,自然有跡可循.
那么,為什么寫程序這個(gè)行業(yè)的進(jìn)入門檻比較低???
在各位信息從業(yè)人員的身邊,非科班出生的比率非常高(當(dāng)然沒(méi)還賣雞排的高),
科班出生的學(xué)生,搞不好在老板眼中的地位,還比不上一個(gè)半路出家的自學(xué)者. 那位自學(xué)者靠著自己的天份,學(xué)會(huì)SP,JSP,PHP,C++,C+,Java,Linux,Windows,Oracle...等,十八般武藝樣樣精通.而我們科班出生的學(xué)生,只會(huì)離散數(shù)學(xué),數(shù)據(jù)結(jié)構(gòu)和算法,Visual Basic搞不好用的沒(méi)人家熟,網(wǎng)站的架設(shè)搞不好也沒(méi)人家熟.更何況科班出生的學(xué)生,他的基礎(chǔ)學(xué)問(wèn)搞不好根基也不扎實(shí)(問(wèn)看看您身旁的科班學(xué)生,和現(xiàn)在大多數(shù)燈紅酒綠的大學(xué)生),難怪最常見(jiàn)的就是很多非科班的"高手"看不起科班的學(xué)生,覺(jué)得他們無(wú)三小路用,連個(gè)Windows操作都比他們差,Word也沒(méi)人家會(huì)用,甚至還常常聽(tīng)到某些人大言不慚的說(shuō):"我這輩子寫程序從沒(méi)用過(guò)書(shū)上的數(shù)據(jù)結(jié)構(gòu)和算法,讀那些干啥?". 長(zhǎng)期下來(lái),科班的學(xué)生也開(kāi)始質(zhì)疑自己的所學(xué),甚至考慮轉(zhuǎn)行.
當(dāng)然也有曲高和寡,孤芳自賞之人. 但終究陽(yáng)春白雪還是比不上下里巴人,這個(gè)世界上能夠看清現(xiàn)況的人畢竟是少數(shù)數(shù). 總之,沒(méi)辦法受到老板垂青,薪水永遠(yuǎn)那么少,想賣雞排的念頭就開(kāi)始萌生.
之所以會(huì)有這種情況,筆者個(gè)人認(rèn)為有兩種主要原因,一是技術(shù)的流通性,二是臺(tái)灣軟件市場(chǎng)的需求.
為什么技術(shù)的流通性可以產(chǎn)生大量半路出家的非科班生? 這都要感謝臺(tái)灣大量作者,寫出大量的入門書(shū)籍,大幅減低的進(jìn)入程序設(shè)計(jì)領(lǐng)域的門檻. 即使在各位眼中,繁體中文的爛書(shū)很多,而且比例多的驚人.但是,大家眼中的爛書(shū),常常是再版多次的入門書(shū),對(duì)某些人認(rèn)為是垃圾的東西,常常是另外一批人進(jìn)入信息業(yè)的最佳踏腳石. 不信各位到書(shū)店看看,是"24小時(shí)學(xué)C++","快快樂(lè)樂(lè)學(xué)Java"的書(shū)比較多,還是"輕輕松松學(xué)微分方程式","21天學(xué)復(fù)變","電子學(xué)不求人"的書(shū)多? 兩者的差距是 N:0. 是微分方程式和復(fù)變比C++,Java難學(xué)嗎? 筆者兩個(gè)都學(xué)過(guò),至少我可以發(fā)誓,就一個(gè)有基本學(xué)習(xí)能力的人來(lái)說(shuō),難度是一樣的,學(xué)成所需要的時(shí)間和功夫也是一樣的.
但是,別忘了,最大的問(wèn)題也是在此. 如果有人可以輕松的就學(xué)會(huì)別人辛苦學(xué)成的學(xué)問(wèn),那么那些身處信息大廠那些年薪是我們數(shù)倍的優(yōu)秀程序設(shè)計(jì)師是白混的嗎? 我們承認(rèn)這個(gè)世界上有天才,但是,人家以是經(jīng)過(guò)努力再努力.不努力的天才,頂多就像周芷若使出的九陰白骨爪,只徒具形式,不具威力.拼爆發(fā)力可能沒(méi)問(wèn)題,但憑內(nèi)力硬干的時(shí)候,只就只能像鐵掌幫裘千刃的雙胞兄弟一樣躲躲藏藏.雖然可以勉強(qiáng)唬過(guò)老板和不懂的人.但是你永遠(yuǎn)不會(huì)進(jìn)步. 這種"淺碟文化"在我們的周遭有太多例子.
再看我們的公開(kāi)討論區(qū)(BBS或Web Forum),我們可以看到大量的軟件技術(shù)討論區(qū),卻看不到硬件技術(shù)討論區(qū)(喔!請(qǐng)別跟筆者說(shuō)那些每天問(wèn)哪家主機(jī)板比較好,哪臺(tái)燒錄器較穩(wěn)定,或者說(shuō)CPU時(shí)脈越高速度就越快越好,或是說(shuō)x86的Out-Of-Order Executon是"故障執(zhí)行" 這一類渾話的討論區(qū)和我說(shuō)的硬件技術(shù)討論區(qū)是一樣的).
書(shū)籍和討論區(qū)促進(jìn)知識(shí)的流通,造成了大量的軟件人才,更何況,學(xué)習(xí)設(shè)計(jì)軟件只要一臺(tái)PC就能寫出好用的軟件,而學(xué)習(xí)硬件設(shè)計(jì),需要的設(shè)備更是天價(jià). 更重要的一點(diǎn),就是學(xué)軟件的人,充分發(fā)揮儒家分享的精神,只要不是在BBS上冒充小妹妹想要騙取大哥哥的同情來(lái)幫你寫程序作業(yè),只要不是很差勁的亂問(wèn)一通,通常至少會(huì)有熱心人士愿意留下一個(gè)URL,讓我們可以找到參考文件,更具熱誠(chéng)的,如新竹師院BBS站Java版的TAHO先生,還擅長(zhǎng)用很多生動(dòng)的比喻讓初學(xué)者體會(huì)技術(shù)的真義. 在這種知識(shí)充分流通的環(huán)境下,當(dāng)然產(chǎn)生出非常多的信息從業(yè)人員.
每一臺(tái)PC,上頭各種軟件的需求是無(wú)窮無(wú)盡的,每天都有各行各業(yè)的人需要各種軟件,所以程序設(shè)計(jì)師的需求有一定的量. 難怪有人說(shuō):"寫程序的人餓不死,但是也不會(huì)發(fā)大財(cái))
再來(lái)就是臺(tái)灣軟件市場(chǎng)需求所引發(fā)的問(wèn)題.
一般我們把軟件分成系統(tǒng)軟件(System Software)和應(yīng)用軟件(Application Software). 編譯器,組譯器,除錯(cuò)器,操作系統(tǒng),驅(qū)動(dòng)程序,都是屬于系統(tǒng)軟件的一部分.臺(tái)灣除了硬件廠商,IC Design House之外,甚少有撰寫驅(qū)動(dòng)程序的需求. 前幾年Linux被炒的熱時(shí),也有許多高手投入操作系統(tǒng),編譯器以及簡(jiǎn)化標(biāo)準(zhǔn)函式庫(kù)的研究.而臺(tái)灣所需求的軟件,極大多數(shù)是屬于應(yīng)用軟件,這些需求的應(yīng)用軟件其中很大比例是和數(shù)據(jù)庫(kù)有關(guān)系的(其實(shí)不只是臺(tái)灣,其它地方也是約略相同的情形).
所以VB,Delphi和PowerBuilder這類IDE大行其道,因?yàn)樗麄內(nèi)菀咨鲜?/SPAN>,可以快速開(kāi)發(fā)數(shù)據(jù)庫(kù)應(yīng)用程序,相關(guān)入門書(shū)籍很多,會(huì)的人更多. 因此符合我們前面所說(shuō):"會(huì)的人越多,價(jià)值就越低"的理論.
但是別忘了,系統(tǒng)軟件有部分是偏向應(yīng)用軟件的,比方說(shuō)開(kāi)發(fā)軟件用的JBuilder和Visual Studio;制圖用的AutoCAD;一套IC Design用的Xilinx或Altera;做OOA/OOD的Rational Rose和TogetherJ, 筆者習(xí)慣稱這些軟件叫做"軟件的軟件"(Meta software). 在一般程序設(shè)計(jì)師眼中,這類軟件"理所當(dāng)然"地認(rèn)為都是由國(guó)外所發(fā)展.要發(fā)展這類軟件有極高的進(jìn)入門檻,所以國(guó)外這類軟件公司的獲利率很高,該公司的程序設(shè)計(jì)師可是身價(jià)非凡. 要知道,先前在媒體上有報(bào)導(dǎo)過(guò),能夠讓Microsoft買軟件來(lái)用的公司,只有Rational Rose(當(dāng)然,不可能只買Rose來(lái)用). 如果做IC Design的人沒(méi)有你的軟件就沒(méi)辦法做事,身為一個(gè)程序設(shè)計(jì)師,你會(huì)覺(jué)得你的身價(jià)和地位比做IC Design的人低嗎? 如果你做的軟件像SoftICE或DriverWorks那樣被做硬件的工程師大量地倚賴,你會(huì)覺(jué)得搞硬件的人比你厲害嗎?
問(wèn)題是,知道該如何設(shè)計(jì)一套這類軟件的人,恐怕才是真正的異數(shù). 而且需要跨領(lǐng)域的專才.要不是許多OpenSource的project(例如:KDeveloper)正在進(jìn)行,恐怕很少人知道該如何設(shè)計(jì)一套IDE. 既然會(huì)制作這類軟件的人在臺(tái)灣少之又少,那么他們的身價(jià)高嗎? 很抱歉,臺(tái)灣地區(qū)沒(méi)有公司發(fā)展出足以和國(guó)外大廠競(jìng)爭(zhēng)的開(kāi)發(fā)工具. 舉IDE為例,臺(tái)灣早期有家公司開(kāi)發(fā)出一套名為DBtools的產(chǎn)品勉強(qiáng)可以算的上是這類產(chǎn)品,旗標(biāo)也曾為它出版過(guò)入門手冊(cè),可是使用這套軟件的人好象...沒(méi)看過(guò)(如果該產(chǎn)品有不錯(cuò)的占有率,請(qǐng)?jiān)徫沂蔷字?/SPAN>),沒(méi)有市場(chǎng),公司無(wú)法賺錢,即使你是少數(shù)能做制作某類型產(chǎn)品的高手,公司最后關(guān)門大吉了,您也只能算是"少數(shù)能讓公司賠錢的程序設(shè)計(jì)師"罷了.所以我大膽假設(shè), James Golsing或
Anders Hejlsberg如果學(xué)李敖一樣50年不離開(kāi)這個(gè)小島,大概早餓死了.
以上的討論,真正優(yōu)秀的高手看了之后,或許會(huì)產(chǎn)生有時(shí)不我予,不得已必須遠(yuǎn)渡他鄉(xiāng)的想法.程序設(shè)計(jì)師的價(jià)值就如同書(shū)的價(jià)值一般,臺(tái)灣地區(qū)和國(guó)外有不同的看法.臺(tái)灣地區(qū)教科書(shū)比較便宜,應(yīng)用的書(shū)比較貴.國(guó)外教科書(shū)比較貴,應(yīng)用的書(shū)比較便宜. 國(guó)外重內(nèi)容,薄薄一本How Debuger Work可以賣44.99美金.而臺(tái)灣,都是看頁(yè)數(shù)來(lái)計(jì)價(jià)(侯俊杰先生的書(shū)有努力在打破這個(gè)頁(yè)數(shù)的迷思,也做的蠻成功).有很多原因?qū)е逻@兩種文化之間的差異,但是,市場(chǎng)因素肯定是其中重要的一項(xiàng).
程序設(shè)計(jì)師價(jià)值低落的原因我們討論過(guò)了,如果您同意筆者的論點(diǎn),那么不禁疑惑,大家彼此毫不保留地讓知識(shí)得以流通,技術(shù)得以擴(kuò)散,本意是好的,結(jié)果反到造成自己和別人身價(jià)的低落,這樣我們是不是從此不再和別人分享我們的心得會(huì)比較好?
TAHO先生看過(guò)本篇上半部之后,發(fā)表了底下內(nèi)容:
--------------------------------------------------------
發(fā)信人: TAHO.bbs@bbs.nhctc.edu.tw (癡人)
> 哈 恭喜TAHO兄上Java周報(bào)了...
> 通常至少會(huì)有熱心人士愿意留下一個(gè)URL,讓我們可以找到參考文件,更
> 具熱誠(chéng)的,如新竹師院BBS站Java版的TAHO先生,還擅用很多生動(dòng)的比喻讓初學(xué)者體會(huì)技術(shù)的真義。
@@".....
光看這一段 好象是褒獎(jiǎng)
不過(guò)看了整篇文章...
突然發(fā)現(xiàn)......
原來(lái)我是讓程序設(shè)計(jì)師不值錢的兇手之一....
真是罪該萬(wàn)死啊....
--------------------------------------------------------
但是mue先生接下來(lái)的發(fā)言,說(shuō)卻命中本文真正的核心價(jià)值觀:
--------------------------------------------------------
發(fā)信人: mue.bbs@bbs.im.tku.edu.tw (閑人)
: @@".....
: 光看這一段 好象是褒獎(jiǎng)
: 不過(guò)看了整篇文章...
: 突然發(fā)現(xiàn)......
: 原來(lái)我是讓程序設(shè)計(jì)師不值錢的兇手之一....
: 真是罪該萬(wàn)死啊....
不會(huì)啦..要是每個(gè)程序員都死守自己所會(huì)的..讓所謂的專業(yè)門檻更高的話..就很難進(jìn)步了..就是讓本來(lái)難的變簡(jiǎn)單..自然就會(huì)有更難更深入的東西出現(xiàn)..這樣社會(huì)才進(jìn)步的快丫..
--------------------------------------------------------
做應(yīng)用軟件的人真的沒(méi)價(jià)值嗎? 有些靠應(yīng)用軟件賺了不少錢的朋友開(kāi)始偷笑了.軟件必須加上專業(yè)知識(shí),才能夠發(fā)揮價(jià)值. 換句話說(shuō),如果您真的只會(huì)"寫程序",
卻沒(méi)有配合各種領(lǐng)域的專業(yè)知識(shí),"寫程序"這項(xiàng)技能本身根本毫無(wú)價(jià)值可言.
就很像你的計(jì)算機(jī)裝了瀏覽器,可是卻沒(méi)有對(duì)外聯(lián)機(jī)的網(wǎng)絡(luò)一樣,如果沒(méi)有網(wǎng)絡(luò)本身,瀏覽器一點(diǎn)價(jià)值也沒(méi)有,更不需要一家公司大費(fèi)周章地利用平臺(tái)優(yōu)勢(shì)去整倒另外一家公司.
我們可以把程序設(shè)計(jì)師比喻成架子上滿滿的信息相關(guān)書(shū)籍,而顧你的老板就是前來(lái)買書(shū)的讀者.你不能否認(rèn)這么一堆書(shū)里頭,有好書(shū),也有爛書(shū),你也不能否認(rèn)你心中的爛書(shū)是一本書(shū),你更不能否認(rèn)書(shū)里面教你如何寫Java程序的內(nèi)容是錯(cuò)的.可是,購(gòu)書(shū)的讀者壓根兒根本覺(jué)得某幾本書(shū)一點(diǎn)價(jià)值也沒(méi)有.
我們只能說(shuō),太多只會(huì)"寫程序"的程序設(shè)計(jì)師打爛了市場(chǎng),就像一牛車的爛書(shū)一樣,你不能說(shuō)爛書(shū)沒(méi)有價(jià)值,可是爛書(shū)會(huì)讓你對(duì)架上其它書(shū)籍的價(jià)值大打折扣.除非,你之前看到別人口耳相傳這本書(shū)是好書(shū).大家或許不相信"只會(huì)寫程序"的程序設(shè)計(jì)師存在于這個(gè)世界上,所以筆者舉個(gè)簡(jiǎn)單的例子說(shuō)明之:
很久以前, BBS上有人發(fā)表了post,內(nèi)容大該是說(shuō)某公司在整理舊的程序代碼時(shí),
發(fā)現(xiàn)了一則奇文,奇文內(nèi)容如下:
---------------------------------------------------------------------------------
//底下是一個(gè)判對(duì)某個(gè)整數(shù)是不是奇數(shù)的程序代碼
public static bolean isOdd(int n)
{
while(true)
{
if(n==1) return true;
else if(n==0) return false;
n=n-2;
}
}
---------------------------------------------------------------------------------
您說(shuō)撰寫這個(gè)程序代碼的人不會(huì)寫程序,他又好象會(huì)寫,
你說(shuō)他會(huì)寫程序,你又不服氣,覺(jué)得這個(gè)家伙根本在胡搞一通.看過(guò)這則奇文軼事之后,當(dāng)您下次聽(tīng)到某公司抱怨他們的程序設(shè)計(jì)師做出來(lái)的軟件一堆bug,速度出奇的慢,產(chǎn)品永遠(yuǎn)賣不出去,害公司快經(jīng)營(yíng)不下去了,所以他們認(rèn)為程序設(shè)計(jì)師一點(diǎn)價(jià)值都沒(méi)有,只是一堆勞碌命的雜碎時(shí),您會(huì)不會(huì)更加懷疑,是一堆莫名其妙的程序設(shè)計(jì)師,把你的行情給搞爛了?
所以從今天開(kāi)始,如果你對(duì)程序設(shè)計(jì)有一股熱愛(ài),那么我們一起努力,做個(gè)真正的程序設(shè)計(jì)師,而不要做一個(gè)破壞別人行情的程序設(shè)計(jì)師.做一個(gè)真正寫的出有用軟件的工程師,不要做一個(gè)只會(huì)寫程序的程序設(shè)計(jì)師.當(dāng)然,如"意外的計(jì)算機(jī)王國(guó) / 聯(lián)經(jīng)出版社"一書(shū)所言,很多技術(shù)都是用來(lái)原本沒(méi)有預(yù)料到的地方而大行其道.許多科學(xué)研究無(wú)法有立即的貢獻(xiàn),但是影響深遠(yuǎn),我們也期許有意從事基礎(chǔ)研究的科班研究生,認(rèn)真的作研究,不要老是研究一些別人已經(jīng)研究過(guò)的研究,不要老是冀望騙國(guó)科會(huì)等研究機(jī)構(gòu)的經(jīng)費(fèi),到了最后計(jì)劃結(jié)案時(shí),才匆匆忙忙交出另外一篇騙更多錢的計(jì)劃書(shū),或是拿不出臺(tái)面的研究.
最后,我們反省自己是不是也是一個(gè)只會(huì)"寫程序"的程序設(shè)計(jì)師呢? 請(qǐng)自行測(cè)驗(yàn)底下幾個(gè)問(wèn)題,這些問(wèn)題都不可能有客觀的答案,所以每個(gè)問(wèn)題都附上筆者主觀的答案,作為筆者自己的反省.
Q1: 你尊重專門技術(shù)嗎? 換句話說(shuō),你認(rèn)為術(shù)業(yè)有專攻嗎?
當(dāng)你接受外面的教育訓(xùn)練課程時(shí),你總是崇拜看起來(lái)什么都懂的老師?
換句話說(shuō),你認(rèn)為那些遇到課外問(wèn)題就跟你說(shuō)他不懂的講師是爛老師?
你老覺(jué)得真正的高手應(yīng)該精通各門各派的技術(shù),如果你會(huì)XML,他不會(huì),你就覺(jué)得你比他厲害.你覺(jué)得他的履歷上寫的技能太少,證照太少,所以你認(rèn)為你比他優(yōu)秀?
有人老是覺(jué)得自己蠻會(huì)用MFC開(kāi)發(fā)軟件,所以直覺(jué)認(rèn)為那些只喜歡,或是只會(huì)用VB的人程度應(yīng)該不高.問(wèn)題是,有人用VB的程度是,當(dāng)他覺(jué)得組件不好用,所以自己寫程序處理HTTP,因?yàn)樗?/SPAN>HTTP協(xié)議的運(yùn)作方式.組件盤里附的瀏覽器組件太爛,就自己用公認(rèn)語(yǔ)法不是很頂尖的Basic語(yǔ)言來(lái)寫parser.
相反的,有人號(hào)稱會(huì)用MFC,但是除了靠Help找出名為Cxxxxx的類別來(lái)用,再
自己補(bǔ)上事件處理的部分之外,其它什么事都做不出來(lái).
有人認(rèn)為寫Java程序應(yīng)該善用工具,用UltraEdit根本是重新造輪子的行為,所以一開(kāi)始就學(xué)JBuilder的使用,其實(shí)他用JBuilder寫了老半天GUI程序,哪天回頭叫他用文字編輯器寫個(gè)簡(jiǎn)單的Frame + Button, 他卻寫不出來(lái),因?yàn)樗麖臎](méi)弄懂過(guò)Java的事件處理模型. 他只會(huì)不斷地: 選擇組件->放在容器里頭->調(diào)整位置和大小->調(diào)整屬性->按兩下->填寫事件處理函式,
成為一個(gè)名副其實(shí)的"程序女工"(再注:女工純指"經(jīng)年累月從事重復(fù)單調(diào)工作者",沒(méi)有歧視女性的意思).
有人覺(jué)得他精通各家廠商的數(shù)據(jù)庫(kù),所以看不起那些只會(huì)下SQL指令或是只會(huì)寫store procedure的人, 因?yàn)檫@個(gè)人精通ODBC, JDBC, ADO, ADO.NET各種程序的寫法.問(wèn)題是,一個(gè)精通SQL的專家和只會(huì)寫SQL指令的人,在數(shù)據(jù)庫(kù)表格交互參考,資料量很大的時(shí)候,要從中取出我們需要的資料,所下的指令在效率上是幾秒鐘和幾個(gè)小時(shí)的差別. SQL也是個(gè)專門學(xué)問(wèn),要能夠巧妙的操作它,必須下非常多功夫做研究,而且一研究可能就是十幾年才有辦法累積豐富的經(jīng)驗(yàn). 如果貴公司的項(xiàng)目老是苦于數(shù)據(jù)庫(kù)存取的效能不夠,你猜老板會(huì)花錢找一個(gè)有能力徹底改善所有SQL命令之中效能問(wèn)題的稀有專家,還是再找一個(gè)號(hào)稱他什么都會(huì),結(jié)果一點(diǎn)用場(chǎng)也派不上的"數(shù)據(jù)庫(kù)女工" ?
我們常常看到某人列出他的履歷,好象會(huì)很多就是很厲害.但是當(dāng)我們完全深入
一項(xiàng)技術(shù)時(shí)(喔,我是說(shuō)你真正下工夫的時(shí)候),通常我們會(huì)越來(lái)越感覺(jué)到自己的渺小.
蔡學(xué)鏞先生就是一個(gè)非常尊重專業(yè)技術(shù)的例子.
我們看到他在 CSDN專欄(http://www.csdn.net/expert/cxy/ )上寫的,他說(shuō)他只精通 lots of Java APIs.我和學(xué)鏞聊過(guò)三次,有一次,我聽(tīng)他說(shuō):"干麻叫我搞Linux,我又不懂Linux!" 如果是你聽(tīng)到這句話,你會(huì)不會(huì)真的以為他玩起Linux來(lái)肯定比你遜色?
筆者突然想起神雕俠侶里頭的獨(dú)孤求敗,晚年只會(huì)拿樹(shù)枝和別人比武,可是你拿再厲害的刀劍就是無(wú)法打敗他.
所以,請(qǐng)尊重專業(yè)技術(shù),不要以為人家沒(méi)說(shuō)他會(huì),你就比他厲害.真正厲害的人很多都不在臺(tái)面上,而是躲在后面偷偷笑我們呢! 而我們一輩子永遠(yuǎn)不知道我們被別人偷偷取笑了.中國(guó)文化數(shù)千年來(lái)都是文人相輕的歷史,夠了,大家尊重專業(yè)吧!
Q2: 你覺(jué)得算法和數(shù)據(jù)結(jié)構(gòu)無(wú)三小路用,因?yàn)槟銖臎](méi)使用過(guò)?
我們承認(rèn)"無(wú)招勝有招"是內(nèi)功心法的最高境界,但是在信手拈來(lái)之際,后面所代表的是對(duì)各家武功路數(shù)的徹底了解.由于臺(tái)灣幾乎只有應(yīng)用軟件的開(kāi)發(fā)需求,沒(méi)有系統(tǒng)軟件的需求,所以大多數(shù)的程序設(shè)計(jì)師都是站在"程序女工"的角度看世界,只要有錢,只要有人販?zhǔn)劢M件,有什么搞不定的.
但是今天如果你想設(shè)計(jì)一個(gè)XML parser,不懂?dāng)?shù)據(jù)結(jié)構(gòu)和算法可以嗎?好吧! 你說(shuō)我們不該重新造輪子,我們應(yīng)該站在巨人的肩膀上看世界,如果什么都自己硬干,世界是會(huì)退步的. 那么試問(wèn),當(dāng)你在使用Java提供的Collection Framework時(shí),你了解ArrayList, LinkedList, TreeSet, HashSet之間的差別嗎? 你知道他們的優(yōu)缺點(diǎn)嗎? 你知道他的特性嗎? 不了解ArrayList和LinkedList的差異,用哪種去寫程序執(zhí)行結(jié)果都一樣,可是效率差很多.
大多數(shù)的人連了解特性都談不上,更別說(shuō)很多每天想發(fā)展自己的語(yǔ)言,自己的編譯器,自己的操作系統(tǒng)的人,沒(méi)有基礎(chǔ)學(xué)問(wèn)的了解,如何去設(shè)計(jì)一個(gè)Collection Framework或STL?
你說(shuō)數(shù)據(jù)結(jié)構(gòu)和算法沒(méi)有用,你去做看看現(xiàn)在IDE中普遍有的code insight功能看看?以Borland C++ Builder來(lái)說(shuō),要在短時(shí)間內(nèi)搜尋所有的標(biāo)頭文件并找出某函數(shù)的prototype,如果沒(méi)有對(duì)數(shù)據(jù)結(jié)構(gòu)和算法有充分了解,一樣做的出來(lái),只是產(chǎn)品會(huì)賣不出去罷了.
我在課堂上常常舉一個(gè)scalability的例子給學(xué)生看:
我希望寫一個(gè)1+2+3 ... + 100的程序,如果撰寫此程序是你的工作,大多數(shù)的人都是寫成:
int sum = 0 ;
for(int i = 1 ; i < 101 ; i++)
sum = sum + i ;
而真正受到數(shù)學(xué)觀念熏陶的人會(huì)寫成:
int sum = 100*(100+1) / 2
前者的復(fù)雜度是O(n),后者是O(1),當(dāng)項(xiàng)數(shù)很多時(shí),運(yùn)算時(shí)間是不是差很多?這些都是我們的教育所產(chǎn)生的問(wèn)題(當(dāng)然筆者也是其中一位受害者),老師只叫你寫好作業(yè),助教只叫你run出正確的結(jié)果,認(rèn)真一點(diǎn)的還會(huì)測(cè)試你是不是抄來(lái)的. 卻從來(lái)沒(méi)告訴你程序中不能只有一個(gè)main函式,程序代碼不能第一行寫到第一千行從不切割成其它子程序. 你的程序代碼看起來(lái)不堪入目,老師助教從沒(méi)告訴你,你的.class檔被decompiler反編譯之后,長(zhǎng)的比你寫的還漂亮.但是從今天開(kāi)始,我們可以開(kāi)始認(rèn)真思考每行程序,不要再做一個(gè)拖累其它人行情的程序設(shè)計(jì)師.
試想發(fā)展MP3算法的人和寫WinAmp的人,哪個(gè)比較厲害?
你會(huì)說(shuō)都很厲害,可是沒(méi)有前者就沒(méi)有后者,前者搞不好還可以坐收權(quán)利金,后者只能苦哈哈的賺些小錢或等人購(gòu)并. 我們停留在崇拜應(yīng)用程序技巧的階段,而真正值得崇拜的是那些難得一見(jiàn)的創(chuàng)意.
筆者遇過(guò)一個(gè)朋友,叫他撰寫一個(gè)費(fèi)式數(shù)列的小程序,比請(qǐng)他寫一個(gè)可以瀏覽數(shù)據(jù)庫(kù)表格內(nèi)容的程序還難.(請(qǐng)不要與我討論費(fèi)式數(shù)列的小程序沒(méi)有實(shí)用價(jià)值的問(wèn)題,這里討論的重點(diǎn)不是這個(gè))前者需要稍微動(dòng)點(diǎn)小腦筋,后者只要會(huì)拖拖組件,設(shè)定property就搞定.
RAD本身不是罪,但是沒(méi)學(xué)好九陽(yáng)神功就妄想幾小時(shí)練成乾坤大挪移.最后只會(huì)走火入魔而死,徹底變成一個(gè)"程序女工".
Q3: 你常常以科班和或非科班自居?
你是科班生,瞧不起非科班生? 因?yàn)槟闶钦y(tǒng)?
你是非科班生,瞧不起科班生? 因?yàn)槟阌X(jué)得會(huì)的東西比科班生的還多.
爛學(xué)校會(huì)出現(xiàn)好學(xué)生,好學(xué)校也會(huì)有爛學(xué)生.
因?yàn)楸壤粯佣?/SPAN>,所以我們不能以偏概全.
如果仗著受過(guò)幾年正規(guī)教育,自己又從未好好深入學(xué)習(xí),就自己為是正統(tǒng),比較學(xué)術(shù)的說(shuō)法這叫做"陽(yáng)具文化".有些創(chuàng)新的idea是一般制式腦袋的科班學(xué)生很難想出來(lái)的,因?yàn)閷<沂怯?xùn)練有素的狗.如果你是學(xué)電信的朋友,你發(fā)現(xiàn)交換機(jī)是一個(gè)葬儀社的老板因?yàn)樯獗粍e人搶走而發(fā)明的,那你會(huì)不會(huì)氣死?
如果自學(xué)有成的程序設(shè)計(jì)師仗著自己會(huì)的東西比較多,你說(shuō)你精通Java的各種技術(shù),你看不起從沒(méi)寫過(guò)JSP的科班學(xué)生.
但是有人告訴你發(fā)展Java的James Golsing博士是一個(gè)正統(tǒng)出生的科班生,知道了這件事情,會(huì)不會(huì)讓你更加尊重幕后認(rèn)真打拼的科班生?
Q4: 你是學(xué)計(jì)算器科學(xué)的,可是邏輯能力并沒(méi)有比較好,還常常受騙?
你會(huì)被潮流所鼓動(dòng)嗎? 你常常被別人的思考牽著走?人家鼓吹Linux多好多好,你的腦袋連轉(zhuǎn)都沒(méi)轉(zhuǎn)過(guò)就發(fā)憤努力地考Linux認(rèn)證 ?
-------------------------------------------------------------------
別人把公司里的server全換成Linux,客戶端也都改成Linux,公司仍然正常地運(yùn)作,結(jié)果你學(xué)了Linux之后,看到電視上BSA同法務(wù)部做的廣告仍然嚇的你冷汗直留. 深怕明天去住套房.
Sun跟你說(shuō)Java跨平臺(tái),你沒(méi)試過(guò)也跟人家說(shuō)跨平臺(tái)的優(yōu)點(diǎn)?
---------------------------------------------------
Borland已經(jīng)可以做到一份光盤里同時(shí)附上Solaris, Linux, Windows, MacOS X的JBuilder,你卻為了EJB無(wú)法deploy到不同公司的Application Server忙的像無(wú)頭蒼蠅.
之前一窩峰人鼓吹XML,結(jié)果你盲目追求流行,做出來(lái)的東西tag比data還多?
-----------------------------------------------------------------
會(huì)用的人徹底了改變了公司里資料交換的流程,而你整天只會(huì)SAX來(lái),DOM去的寫XML數(shù)據(jù)庫(kù)(用XML來(lái)儲(chǔ)存資料的數(shù)據(jù)庫(kù))
微軟的廣告告訴你XP和IE將不支持Java,你都還沒(méi)試過(guò)就跟別人嚷嚷Java已死?
--------------------------------------------------------------------
套句BBS上moga先生的名言:"那我現(xiàn)在在Windows 2000上跑的Java程序是神跡?"
現(xiàn)在一票人每天宣傳web service的好處,你連想都沒(méi)想過(guò)就急著想要把公司的舊系統(tǒng)全部改成web service來(lái)做,結(jié)果浪費(fèi)一堆錢,糟糕的速度讓你每天被客戶臭罵 ?
----------------------------------------------------------------------
Web service當(dāng)然是美好的前景,但是并非適用于每個(gè)角落,目前世界上并不存在完美的solution.
人家說(shuō)不能寫程序一輩子,寫程序的人生命周期很短,你也跟著別人開(kāi)始往SA/SD前進(jìn) ?
---------------------------------------------------------------------------
如果世界上每個(gè)工程師都可以經(jīng)由經(jīng)驗(yàn)就成為優(yōu)秀的SA/SD人員,那么理論上咱們應(yīng)該有些象樣的軟件產(chǎn)品才對(duì). 有些人寫了幾十年,還是一個(gè)優(yōu)秀的程序設(shè)計(jì)師,你問(wèn)問(wèn)他,如果沒(méi)有遇到糟糕的老板,糟糕的待遇和糟糕的制度,他愿不愿意寫一輩子程序? 我愿意.
顧問(wèn)告訴你要多用RAD,不該重新造輪子,所以你努力的問(wèn)how而不問(wèn)why ?
---------------------------------------------------------------
結(jié)果真正賺到錢的都是那些像JReport做軟件組件的軟件公司.
微軟說(shuō)J2EE Blueprint的Pet Store,用.NET技術(shù)做比用J2EE做還要快許多,然后你就相信了,最近, IBM和Oracle重新加強(qiáng)Java版的Pet Store,讓它比.NET版的還要快18%~22%,你又改口說(shuō)Java比較好.
--------------------------------------------------------------------------------------------
一個(gè)系統(tǒng)在設(shè)計(jì)的時(shí)候有很多考量,有人以擴(kuò)充性為主,有的以安全性為主,有人以效能為主.
如果沒(méi)有設(shè)計(jì)理念,大家程序里頭的function全部改成inline就好了,管他編譯出來(lái)的執(zhí)行檔有多大.
系統(tǒng)只以效能做考量,我們還需要Design Pattern做什么?
那些王八蛋數(shù)據(jù)和我們選舉時(shí)的民調(diào)一模一樣...對(duì)一個(gè)腦袋清楚的人完全沒(méi)有參考的價(jià)值.
當(dāng)然,以情感因素來(lái)看民調(diào)的人例外.
如果你沒(méi)有經(jīng)過(guò)自己的自主判斷就盲目的跟隨潮流,那么下次當(dāng)你看到有人排隊(duì)買米酒,買蛋塔,搶購(gòu)衛(wèi)生紙的時(shí)候,請(qǐng)不要投以排隊(duì)的人們奇怪的眼光.
Q5:你尊重老前輩嗎?
我們都相信,世界上唯一不用努力就可以獲的東西就是老.
所以吃過(guò)的鹽巴比你吃過(guò)的米還多的人,沒(méi)有任何值得尊重的.
我們更相信,信息業(yè)永遠(yuǎn)是年輕人出頭,而英雄少年也常在心里想:
"李杜詩(shī)篇萬(wàn)口傳,至今已覺(jué)不新鮮,江山代有才人出,各領(lǐng)風(fēng)騷數(shù)百年."
但是我們認(rèn)真想想,從Apple 2的時(shí)代到現(xiàn)在隨便一顆CPU都是1 GHz的時(shí)代,
計(jì)算器的本質(zhì)有什么改變嗎? 不就是一臺(tái)不斷對(duì)內(nèi)存作處理和I/O動(dòng)作的機(jī)器.
你笑那些只會(huì)用Fortran或COBOL的老前輩,那你學(xué)的Java或C#比起這些老語(yǔ)言又高明到哪里去?
寫程序不過(guò)是 宣告,循環(huán)和函式三大要素.時(shí)間久了,產(chǎn)生了一堆新名詞,配上一些新的發(fā)展理念但本質(zhì)上沒(méi)有改變.
如果你是推倒前浪的后浪,當(dāng)你看到李維先生撰寫的 "[長(zhǎng)篇] 我的回憶和有趣的故事"或侯捷老師最近兩期在Run!PC撰寫的"侯捷觀點(diǎn)"這些老前輩寫的文章,你有把握寫出比它們更高明,更有深度的東西嗎?
最重要的問(wèn)題,
Q6:你騙過(guò)老板嗎?
你在履歷上寫的十八般武藝樣樣精通,結(jié)果是梧鼠技窮(注:比喻技能雖多,而不能專一),一錄取之后什么東西都做不出來(lái),筆者至少聽(tīng)過(guò)20個(gè)老板跟我講過(guò)這件事情.你以為你的身價(jià)比較高,只因?yàn)槟銖氖?/SPAN>"軟件研發(fā)"的工作?
然而現(xiàn)實(shí)的生活中,"獲利"是真正決定成敗的關(guān)鍵.除非你的東西幫老板賺了錢.
如果沒(méi)有,你憑什么要求更多薪水,憑什么要求50張價(jià)值數(shù)千萬(wàn)元的股票?如果你寫的東西品質(zhì)很差,bug超多,客戶抱怨不斷,老板賺不到很多錢,你還老是在外頭痛罵老板不尊重技術(shù)人員.如果把行業(yè)換成色情行業(yè),那老板不就等于被干洗? 這樣看來(lái),程序設(shè)計(jì)師和詹惠華(黃顯洲3P案女主角)干的事情有什么兩樣?如果這樣的雜碎程序設(shè)計(jì)師太多了,真正要去賣香雞排的,不是寫程序的人,而是雇用了這些雜碎的老板才對(duì). 不過(guò)很遺憾,真的很多軟件公司的老板要改行了,雞排太多人賣了,我建議某位感同身受老板寫篇"程序員的老板與蚵仔煎",請(qǐng)踴躍投稿.
zt:
http://www.csdn.net/news/newstopic/5/5381.shtml
posted on 2005-05-22 20:33 Vikings 閱讀(326) 評(píng)論(0) 編輯 收藏 所屬分類: 程序哲學(xué)