軟件工程師的職業(yè)生涯
軟件工程師的未來是什么?有那些出路?你是否已做好物質(zhì)上及心理的準(zhǔn)備以迎接各階段的挑戰(zhàn)呢?
寫軟件程序其實(shí)很簡單。
電腦入了門,熟悉它運(yùn)作的基本原理,要自己設(shè)計(jì)些程序并不難。不斷改善的人機(jī)界面,提供了前所未有的簡單電腦使用方法,更讓寫程序的年齡記錄不斷下降。
入了門,只要條件能配合,走上專職軟件這條路是相當(dāng)自然的。這里說的條件是什么呢?個(gè)人覺得興趣是第一,再者就是進(jìn)修,第三是時(shí)間,最后也是最重要的是環(huán)境。
有興趣,寫程序至老仍HIGH!
興趣絕對(duì)是第一。有興趣,工作才愉快,也才能持續(xù)。還記得自己的第一個(gè)程序雖然只有一行,但卻為我打開了軟件無窮奧妙之門。似乎從那時(shí)起就注定要“吃軟飯”了。
大家都知道咨詢業(yè)的演進(jìn)比換季還快。學(xué)校雖盡其可能傳授學(xué)生最新的知識(shí),但很可能學(xué)校所學(xué)的一畢業(yè)就過時(shí)了。乘著工作的機(jī)會(huì),接觸新知識(shí)就成了最重要的進(jìn)修方式。能不能把握好這些機(jī)會(huì),決定著程序員的技術(shù)層次和前程。
寫程序是很需要時(shí)間的。時(shí)間更隨程序的復(fù)雜化而成級(jí)數(shù)增加,但大部分的是不是花在程序編寫,而在規(guī)劃和糾錯(cuò)。
入門容易,要成為大師卻很難。英語有句諺語是這么說的“十個(gè)女人不能在一個(gè)月內(nèi)生個(gè)小孩”。同樣的,要在軟件業(yè)修煉成精也要有相當(dāng)時(shí)間磨練和積累。成不了大師會(huì)成什么?
還記得十年前拜訪INTEL總部時(shí),碰到一個(gè)頭發(fā)稀白的老人,說他不寫程序時(shí)最大的樂趣,就是逗孫子玩。他樂在寫程序,也有本事和小毛頭一爭長短。這才知道真有人寫程序?qū)懙嚼稀km然我也懷疑他那顫抖的手會(huì)不會(huì)常常按錯(cuò)鍵。
但是除了要有興趣與本事外,環(huán)境的配合才是最重要的。在現(xiàn)今這個(gè)“萬般皆下品,惟有職稱高”和“物欲橫流”的奇特環(huán)境下,要想終老在軟件設(shè)計(jì)是有相當(dāng)困難,更需要有相當(dāng)勇氣與堅(jiān)持的。程序設(shè)計(jì)干了幾年,若不能在名片上弄個(gè)“XX經(jīng)理”、“XX負(fù)責(zé)人”的頭銜,比不結(jié)婚還受親朋好友注意與側(cè)目。
大部分中小軟件公司或部門也都依循這種模式。當(dāng)軟件部門成長到一定規(guī)模時(shí),百分之九十九的公司會(huì)把最資深或最好的工程師轉(zhuǎn)成初級(jí)或中級(jí)部門管理者。但其成效大多是負(fù)面的。因?yàn)檫@兩種工作不僅工作內(nèi)容不相近,思考模式不相同,所需背景及訓(xùn)練也天差地遠(yuǎn)。其結(jié)果可能是公司損失了一個(gè)好的工程師,換來的是一個(gè)不成熟,不適任的管理者。
筆者也曾帶領(lǐng)過研發(fā)部門,其間還繼續(xù)軟件開發(fā)的工作,深深感覺到其中的差異,這才婉拒更高一層管理的升遷機(jī)會(huì),重回純技術(shù)的軟件設(shè)計(jì)跑道。這其中仰賴趨勢科技“純科技也能通頂”的一貫政策,也就是說環(huán)境能配合。
軟件設(shè)計(jì)的人要想清楚,想一直走技術(shù)鉆研,就必須要能接受專業(yè)經(jīng)理人的管理。那些人也許技術(shù)不如你,在業(yè)界、在公司的資力也遠(yuǎn)比你淺,但他們有管理的能力,有比你高的EQ。你只認(rèn)識(shí)0與1,還認(rèn)為大部分的事情都能區(qū)分0與1。更重要的是他們對(duì)管理有興趣而你沒有。他們經(jīng)過專業(yè)的管理訓(xùn)練,而你只上過一些粗淺的管理入門講座。
我們先不管決定走純技術(shù)管理路線的時(shí)機(jī)問題,因?yàn)槟菭砍短鄠(gè)人主觀與環(huán)境客觀因素在內(nèi)。先假定環(huán)境是有利的。讓我們來看看道上的風(fēng)景吧!
真善美——軟件設(shè)計(jì)的終極精神
在技術(shù)鉆研的歷程上,剛開始你可能只是一個(gè)程序生產(chǎn)者。在這個(gè)階段里,你只以編寫程序的能力來提供服務(wù)。常常知其然,不知其所以然,但那不是問題。就像是個(gè)學(xué)徒,重要的是打好基礎(chǔ)。千萬不能染上一些惡習(xí),像求快而忽略細(xì)節(jié)。也不要以為簡單和簡陋一樣。
通常經(jīng)過一段時(shí)間,單純的程序編寫已不具挑戰(zhàn)性。漸漸的,你開始對(duì)自己負(fù)責(zé)程序編寫的模塊設(shè)計(jì)產(chǎn)生懷疑,并能適時(shí)地提供改善的建議。接著,你常因提出好點(diǎn)子而被嘉許。就這樣逐漸開始接觸設(shè)計(jì)的領(lǐng)域。富有創(chuàng)意或是基本功好的人,會(huì)比較早進(jìn)入此階段,比較能享受意見被接受的快樂與成就感。
更進(jìn)一步,你開始負(fù)責(zé)模塊的設(shè)計(jì)。也許自己只編寫較重要的部分程序,而將大部分程序編寫工作交給上述的程序生產(chǎn)者。與前階段比較來說,工作內(nèi)容從程序編寫漸漸成設(shè)計(jì)。程序編寫的份量雖逐漸減少,但通常卻是較重要的部份。在和其他負(fù)責(zé)模塊的同事不斷溝通中,你了解到整個(gè)產(chǎn)品的設(shè)計(jì)理念和重點(diǎn)。
能不能更上一層樓,評(píng)判模塊的設(shè)計(jì)上是不是夠完整,具不具足夠的前瞻性。我看過很多不錯(cuò)的工程師上不上,下不下地卡在這一層。不求真,斷章取義,只看到問題的表面。不盡善,貪功求快,只解決今天的問題。不知美,盡虎類犬,只自得東施的效顰。有人說身體虛易補(bǔ),品味差難改。根基沒打好,觀念又有偏差。若非下足工夫,是很難再創(chuàng)新高的。
再高一級(jí)的階段中,你能獨(dú)立完成一個(gè)產(chǎn)品的全部模塊設(shè)計(jì)。此時(shí)著重的是產(chǎn)品系統(tǒng)的周全性,和各模塊之間的關(guān)聯(lián)及互動(dòng)。
產(chǎn)品設(shè)計(jì)成敗操之在手,壓力自然大增?箟耗芰秃苤匾。頭發(fā)會(huì)白、會(huì)掉,都在這個(gè)時(shí)候;竟υ辉鷮(shí)正確不正確,直接關(guān)系到設(shè)計(jì)成立與否。
產(chǎn)品功能設(shè)計(jì)已不是重點(diǎn),你追求的是真善美。要達(dá)到悉尼歌劇院的功能性要求有很多種設(shè)計(jì)與做法。但讓它有名的絕對(duì)是設(shè)計(jì)者追求真善美的過程和巧思的結(jié)果。我時(shí)常會(huì)想起日本一家餐廳墻上的那幅“大味必談”的題字,一次又一次地沖擊著我。讓我更確定我追求的是什么。
技術(shù)專家,管理者大不同
每一個(gè)階段,功力將隨著經(jīng)驗(yàn)漸漸累積。但產(chǎn)品的特定功能要求與復(fù)雜度、新知識(shí)吸收速度、工作態(tài)度、環(huán)境和機(jī)會(huì)都在左右你的進(jìn)度。這些不管你是在軟件研發(fā)或是軟件品質(zhì)保證,甚至任何技術(shù)工作上都是一樣的。
在另一條管理軟件人的路上走來也并不輕松。有一定的技術(shù)知識(shí)是免不了的,因?yàn)榇蟛糠值募夹g(shù)人員,會(huì)由于本身的不夠成熟,而不服技術(shù)比不上自己的管理者。管理人要更專精的是經(jīng)理的素養(yǎng)、軟件工業(yè)的流程與進(jìn)度控制、和資源(軟件技術(shù)人員與經(jīng)費(fèi))的有效使用。還要做好上下層溝通的橋梁,更要能做好居間緩沖的工作,最高段的是我稱之為“欺上瞞下”的功夫。
老實(shí)說,受人歡迎的命令,不叫命令叫福利。能讓上司滿意你(和你的部下),又不使部下恨你(或你的頂頭上司),還能徹底執(zhí)行不被人歡迎的命令,絕對(duì)需要此上乘的功夫。只要心術(shù)正,就不怕走火入魔。只是不走火入魔的不多就是了。
軟件路上還有第三條跑道,那就是產(chǎn)品經(jīng)理人。這些人也要懂相當(dāng)?shù)募夹g(shù),更重要的是要能判斷那些技術(shù)是具市場潛力與價(jià)值的。他們能把客戶要的技術(shù)包裝產(chǎn)品定義。換言之,他們是客戶與研發(fā)人員的產(chǎn)品中介。