Vikings

          王森 - 程序設(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/SDcoding地位要高".那些做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>BIOSdriver,覺(jué)得乏味而沒(méi)有前途,所以想試看看應(yīng)用程序的開(kāi)發(fā);有人則是因?yàn)槭懿涣丝蛻裘刻旄男枨?/SPAN>,而且寫BIOSdriver的人好象比較少,價(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ū)(BBSWeb Forum),我們可以看到大量的軟件技術(shù)討論區(qū),卻看不到硬件技術(shù)討論區(qū)(!請(qǐng)別跟筆者說(shuō)那些每天問(wèn)哪家主機(jī)板比較好,哪臺(tái)燒錄器較穩(wěn)定,或者說(shuō)CPU時(shí)脈越高速度就越快越好,或是說(shuō)x86Out-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)的,如新竹師院BBSJava版的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,DelphiPowerBuilder這類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ā)軟件用的JBuilderVisual Studio;制圖用的AutoCAD;一套IC Design用的XilinxAltera;OOA/OODRational RoseTogetherJ, 筆者習(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的人低嗎? 如果你做的軟件像SoftICEDriverWorks那樣被做硬件的工程師大量地倚賴,你會(huì)覺(jué)得搞硬件的人比你厲害嗎?

           

              問(wèn)題是,知道該如何設(shè)計(jì)一套這類軟件的人,恐怕才是真正的異數(shù). 而且需要跨領(lǐng)域的專才.要不是許多OpenSourceproject(例如: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)的,如新竹師院BBSJava版的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)嗎? 你知道他的特性嗎? 不了解ArrayListLinkedList的差異,用哪種去寫程序執(zhí)行結(jié)果都一樣,可是效率差很多.

           

          大多數(shù)的人連了解特性都談不上,更別說(shuō)很多每天想發(fā)展自己的語(yǔ)言,自己的編譯器,自己的操作系統(tǒng)的人,沒(méi)有基礎(chǔ)學(xué)問(wèn)的了解,如何去設(shè)計(jì)一個(gè)Collection FrameworkSTL?

          你說(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ā)展JavaJames 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 XJBuilder,你卻為了EJB無(wú)法deploy到不同公司的Application Server忙的像無(wú)頭蒼蠅.

           

          之前一窩峰人鼓吹XML,結(jié)果你盲目追求流行,做出來(lái)的東西tagdata還多?

          -----------------------------------------------------------------

                 會(huì)用的人徹底了改變了公司里資料交換的流程,而你整天只會(huì)SAX來(lái),DOM去的寫XML數(shù)據(jù)庫(kù)(XML來(lái)儲(chǔ)存資料的數(shù)據(jù)庫(kù))

           

          微軟的廣告告訴你XPIE將不支持Java,你都還沒(méi)試過(guò)就跟別人嚷嚷Java已死?

          --------------------------------------------------------------------

                 套句BBSmoga先生的名言:"那我現(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 BlueprintPet Store,.NET技術(shù)做比用J2EE做還要快許多,然后你就相信了,最近, IBMOracle重新加強(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ì)用FortranCOBOL的老前輩,那你學(xué)的JavaC#比起這些老語(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é)

          主站蜘蛛池模板: 凌云县| 沙洋县| 简阳市| 策勒县| 曲松县| 容城县| 安吉县| 巨野县| 扶绥县| 泾阳县| 河北区| 区。| 无锡市| 苍梧县| 天峨县| 兴国县| 吴桥县| 楚雄市| 柳河县| 探索| 乐业县| 博客| 额济纳旗| 修水县| 张掖市| 昭通市| 建德市| 太康县| 沽源县| 塔河县| 深圳市| 丽江市| 澄城县| 礼泉县| 西宁市| 和政县| 北海市| 龙南县| 阿鲁科尔沁旗| 射阳县| 监利县|