中國(guó)軟件開(kāi)發(fā)工程師之痛
在近期的一次會(huì)議上,有高層談到之前在中國(guó)覺(jué)得自己做得很牛,但與美國(guó)同行接觸后卻發(fā)現(xiàn)與人家存在很大的差距,這一點(diǎn)我在外企工作時(shí)也有過(guò)同樣的體會(huì)。真正與外 國(guó)同行接觸后才會(huì)知道什么是差距,在這篇文章中我從軟件開(kāi)發(fā)工程師的角度以“痛點(diǎn)”的形式來(lái)談一談我所認(rèn)為的差距。
技能之痛
相當(dāng)數(shù)量的軟件開(kāi)發(fā)工程師(后面簡(jiǎn)稱為工程師)認(rèn)為除了與編碼相關(guān)的內(nèi)容外,其他技能都不重要。在這種意識(shí)的引導(dǎo)下,很容易出現(xiàn)的一個(gè)普遍現(xiàn)象是技術(shù)能力不錯(cuò),但開(kāi)發(fā)能力卻不行。這種現(xiàn)象的另一種表現(xiàn)是:?jiǎn)胃煽梢?,合作不行?/p>
技術(shù)能力是指?jìng)€(gè)體對(duì)某些技術(shù)知識(shí)掌握的深度和廣度,而開(kāi)發(fā)能力除了包含技術(shù)能力外,還涵蓋個(gè)體在項(xiàng)目運(yùn)作過(guò)程中所需掌握的其他能力。
高 效的團(tuán)隊(duì)一定離不開(kāi)通過(guò)知識(shí)管理將個(gè)體所掌握的知識(shí)通過(guò)分享而沉淀下來(lái)。分享途徑無(wú)外乎通過(guò)一定形式的文字和(或)圖,這就要求工程師掌握使用象 Word、PowerPoint、Excel、Visio(和UML)這類工具的基本能力,并具備良好的寫(xiě)作與表達(dá)能力。表面看來(lái)這種能力與編碼能力無(wú) 關(guān),因而也得不到工程師的普遍重視,也因此成了一個(gè)痛點(diǎn)。其實(shí),寫(xiě)作與表達(dá)能力與編程水平息息相關(guān),因?yàn)樗鼈兌荚诳简?yàn)我們的邏輯思維和概念能力。忽視掌握 必要工具軟件的工程師難道以為編程語(yǔ)言是知識(shí)分享的萬(wàn)能工具?
個(gè) 體具備良好的溝通能力是項(xiàng)目順利運(yùn)作的基石。不良溝通表現(xiàn)為:工程師在團(tuán)隊(duì)合作中更多采用被動(dòng)詢問(wèn)而非主動(dòng)匯報(bào)、不會(huì)辯論、對(duì)于他人指出的錯(cuò)誤表現(xiàn)得“自 尊”和狡辯而非感謝或承認(rèn)、對(duì)于被邀請(qǐng)的各類審查活動(dòng)(如設(shè)計(jì)審查、代碼審查、文檔審查)不是積極響應(yīng)而需別人催促。在團(tuán)隊(duì)中,如果技術(shù)管理者不能很好地 引導(dǎo),個(gè)體溝通能力的缺乏很容易在團(tuán)隊(duì)中引發(fā)“一言堂”或“無(wú)政府主義”問(wèn)題,工作效率低下則是必然。
專業(yè)精神之痛
不少工程師對(duì)于自己的職業(yè)缺乏精神上的追求,工作起來(lái)不求專業(yè),只求“代碼能工作就行”。這類工程師容易將經(jīng)驗(yàn)與資歷等同,以為工作年份越長(zhǎng)就越有經(jīng)驗(yàn),實(shí)則不然。工作年份越長(zhǎng)資歷是越老,但如果專業(yè)水準(zhǔn)沒(méi)有在過(guò)程中不斷提高的話,所獲得的經(jīng)驗(yàn)很可能趨零。
什 么是專業(yè)?專業(yè)是指我們應(yīng)以業(yè)內(nèi)所廣泛達(dá)成的共識(shí)去從事軟件開(kāi)發(fā)活動(dòng)。這里的“業(yè)內(nèi)”并非只指“國(guó)內(nèi)的”,而是指“國(guó)際的”;“專業(yè)”也并非單指技術(shù)內(nèi)容 (比如,編程語(yǔ)言、算法等),還包含軟件項(xiàng)目運(yùn)作中的其他各個(gè)方面(比如,開(kāi)發(fā)方法、建模工具、流程、質(zhì)量保證手段等)。要做到專業(yè)做事一定離不開(kāi)不斷地 學(xué)習(xí),只有這樣才能了解行業(yè)的動(dòng)向。
軟件行業(yè)雖然沒(méi)有“銀彈”,但仍存在不少有效改善開(kāi)發(fā)質(zhì)量與效率的方法。只有抱著專業(yè)做事的態(tài)度去工作,我們才有可能去實(shí)踐這些方法,并在實(shí)踐過(guò)程中思考這些方法的內(nèi)涵與不足,進(jìn)而為自己的工作量體裁衣。千萬(wàn)不要認(rèn)為“反正業(yè)內(nèi)沒(méi)有銀彈,我要去學(xué)那么多方法干什么?”
強(qiáng)調(diào)專業(yè)做事的根本目的,是使我們的做事方法更科學(xué)。與我所了解的美國(guó)、俄羅斯這些國(guó)家的工程師相比,我國(guó)工程師的專業(yè)化還有很長(zhǎng)的路要走。
速度之痛
除非你完全認(rèn)可中國(guó)近些年以GDP為導(dǎo)向的經(jīng)濟(jì)發(fā)展策略,否則很可能得反思一下軟件行業(yè)所鼓吹的“唯快不破”策略,尤其是互聯(lián)網(wǎng)領(lǐng)域。
在 商業(yè)環(huán)境中,“快”能獲得很多競(jìng)爭(zhēng)優(yōu)勢(shì),這毋庸置疑。工程師的價(jià)值雖得(最終)體現(xiàn)在商業(yè)產(chǎn)品上,但千萬(wàn)不要忘記了我們始終是一名工程師,在實(shí)現(xiàn)商業(yè)價(jià)值 的道路上不斷提高自己的專業(yè)水準(zhǔn)無(wú)論如何都不應(yīng)被忘記。工程師始終要明白,公司的發(fā)展與自身的職業(yè)發(fā)展并非完全統(tǒng)一。如果在公司的發(fā)展過(guò)程中我們的專業(yè)水 準(zhǔn)并沒(méi)有“水漲船高”,那除了說(shuō)明我們?cè)诔岳媳就?,還表明我們很可能是在“拖后腿”。在這種情形下,即使公司蒸蒸日上地給我們發(fā)薪水,但從個(gè)體職業(yè)發(fā)展的 角度說(shuō)來(lái),公司發(fā)展其實(shí)與我們“一毛錢(qián)關(guān)系都沒(méi)有”。我想不致于有人認(rèn)為自己以后只會(huì)在這一家公司干吧!如果真是那樣想,你能保公司幾十年存在?屆時(shí)萬(wàn)一 得無(wú)奈地離開(kāi)公司,單薄的專業(yè)水準(zhǔn)又如何在人才市場(chǎng)與他人競(jìng)爭(zhēng)?
對(duì)“唯快不破”的誤解所帶來(lái)的不良后果是,有些工程師為了快速實(shí)現(xiàn)軟件功能而忽略了專業(yè)精神。他們一味地為了速度而筑下高額的“技術(shù)債”,甚至在“速度”的幌子下過(guò)得心安理得。
如 果將“唯快不破”改為“唯效率與質(zhì)量不破”或許更不容易形成誤解。一說(shuō)到“快”,給人的感覺(jué)往往是投入更多的時(shí)間就能達(dá)成目的,容易讓人忽視做事的方法與 效率。與之不同的是,強(qiáng)調(diào)效率需要我們考量投入時(shí)間的產(chǎn)出比,且暗示做事的方法只有對(duì)路才能獲得效率;強(qiáng)調(diào)質(zhì)量則提醒我們盡量別做“豆腐渣”之事,而這隱 含的內(nèi)容是我們必須專業(yè)做事,即使欠下了“技術(shù)債”它也時(shí)刻提醒著我們那是一定要還的。
軟件行業(yè)的長(zhǎng)期被動(dòng)加班成為了速度之痛的一個(gè)縮影,它讓不少工程師過(guò)著有工作沒(méi)生活的日子。軟件行業(yè)要避免偶爾、短期的加班是不可能的,但長(zhǎng)期的被動(dòng)加班絕對(duì)是個(gè)問(wèn)題。不重視效率與質(zhì)量的“勤勞”除了是在浪費(fèi)外,更是一種透支將來(lái)的短視行為。
視野之痛
視 野之痛體現(xiàn)在工程師在從事技術(shù)工作時(shí),忽視了解國(guó)外的發(fā)展?fàn)顩r。他們因?yàn)椴恢劳|(zhì)開(kāi)源項(xiàng)目的存在而走上“重新發(fā)明輪子”的道路,甚至發(fā)明出“三角形的輪 子”;也因?yàn)閷?duì)英文資料缺乏閱讀的耐心而不去了解相關(guān)國(guó)際標(biāo)準(zhǔn)、訂閱開(kāi)源項(xiàng)目的mailing list和專業(yè)網(wǎng)站的newsletters等。
狹窄的視野很容易讓人自滿,以為軟件開(kāi)發(fā)就是那么簡(jiǎn)單,最后導(dǎo)致成長(zhǎng)慢、意識(shí)與技能“不入流”。
以 我的經(jīng)驗(yàn)來(lái)看,工程師如果不能很好地閱讀英文資料則要達(dá)到高技術(shù)水平實(shí)在很難,視野狹窄也恐成必然。另外,編程活動(dòng)中的命名環(huán)節(jié)其實(shí)對(duì)我們的英語(yǔ)水準(zhǔn)提出 了一定的要求,不然很容易動(dòng)名詞不分而寫(xiě)出只有自己容易讀懂的程序,或常出現(xiàn)命名時(shí)找不到合適的單詞去精確表達(dá)程序意圖。
持續(xù)發(fā)展之痛
以上各痛點(diǎn)的最終結(jié)果又給我們帶來(lái)了持續(xù)發(fā)展之痛。其表現(xiàn)為:少有人會(huì)在項(xiàng)目中通過(guò)文檔提升開(kāi)發(fā)效率;鮮有人會(huì)持續(xù)改善軟件的設(shè)計(jì)質(zhì)量;大部分人只關(guān)注短期完成工作,而忽視短期行為所帶來(lái)的高額隱性成本。
持續(xù)發(fā)展之痛使得工程師很難輕裝上陣,工作精力過(guò)多花費(fèi)在重復(fù)、低級(jí)的瑣事上,而非用于學(xué)習(xí)和思考。最終結(jié)果是將工作變成了“青春飯”,辛苦但卻看不到美好的未來(lái)。
所有痛點(diǎn)可以歸結(jié)為意識(shí)的陳舊,或雖有意識(shí)卻無(wú)力于將其轉(zhuǎn)變?yōu)槟芰Γ。ㄗⅲ阂庾R(shí)是一種行為,而非能力)