身處節(jié)奏很快的IT行業(yè),軟件工程師一定希望自己在職業(yè)發(fā)展的道路上掌握“終極技術(shù)”,以便將來即使“長江后浪推前浪”仍能獲得競爭優(yōu)勢。掌握“終極技術(shù)”對于我們究竟意味著什么?深刻理解這一問題有助于我們在面對技術(shù)學(xué)習(xí)和技術(shù)選擇時不至于迷?;蛉嗽埔嘣啤N艺J(rèn)為,掌握“終極技術(shù)”的最終目的不是為了能在工作中“??帷保ā巴郏@問題其他哥們都搞不定,只有我能!”),也不是為了追趕“技術(shù)潮流”(“聽說Go語言以后能替代C/C++和Java,我得趕快去學(xué)!”),而是為了高質(zhì)高效地工作,因?yàn)橹挥羞@樣才能提高我們的生活品質(zhì)和減少浪費(fèi)(浪費(fèi)可能包括奢華的青春和/或?qū)氋F的社會資源)。
實(shí)際上,我們一生都是在工作質(zhì)量和工作效率的二維坐標(biāo)系上“畫線”。有的人一生都難以走出低質(zhì)低效的困境,而有的人卻能進(jìn)入高質(zhì)高效的殿堂。
明白了掌握“終極技術(shù)”的意義,那“終極技術(shù)”究竟是什么?會是C/C++、Java、Objective-C或Go等編程語言嗎?當(dāng)一個只精通C/C++編程語言的人加入到以O(shè)bjective-C為編程語言的項(xiàng)目上時,顯然他必須重新學(xué)習(xí)編程語言。由此看來編程語言因?yàn)閷Σ煌捻?xiàng)目并不具備普適性,難以擁有“終極技術(shù)”之名。對于網(wǎng)上不少為編程語言而打口水仗的人,我真懷疑他們將編程語言當(dāng)作是“終極技術(shù)”了。一旦知曉了“終極技術(shù)”的存在,你一定會發(fā)現(xiàn),其實(shí)所謂的編程語言“優(yōu)劣”跟本就不是業(yè)內(nèi)的大問題。如果某種語言直接導(dǎo)致了項(xiàng)目的失敗,那該語言早就絕跡了;反過來,如果某種語言直接導(dǎo)致了項(xiàng)目的成功,那世界上估計(jì)也只會有這一種語言了。因此,選擇編程語言的重點(diǎn)不是考究其“優(yōu)劣”,而是其適用性。過分計(jì)較編程語言的“優(yōu)劣”其實(shí)是不成熟的一種表現(xiàn)。這類人還容易犯的一個毛病是 — 生怕落后,熱衷于學(xué)習(xí)新的編程語言。請別忘了,編程語言我們無論如何也學(xué)不全,即使真有人學(xué)全了,我也懷疑他所學(xué)的只是皮毛。
“終極技術(shù)”又會是Linux或Windows這樣的操作系統(tǒng)平臺嗎?由于它們同樣不具普適性,所以不可能有“終極技術(shù)”之實(shí)。同樣地,.Net、ACE、QT等都不可能是“終極技術(shù)”。
真正的“終極技術(shù)”一定具有一定的普適性,能讓我們將之運(yùn)用于各種不同的軟件項(xiàng)目。正因如此,“終極技術(shù)”具有一定的抽象性。對于軟件行業(yè)來說,真正掌握“終極技術(shù)”意味著:深刻地理解軟件(開發(fā))的復(fù)雜性本質(zhì),并擁有有助于實(shí)現(xiàn)高質(zhì)高效工作的行為(意識、工作習(xí)慣等)、能力(思維、業(yè)務(wù)、溝通)和方法(流程、工具、復(fù)用)。
由于“終極技術(shù)”過于抽象,使得我們不得不通過一些問題來間接感知。比如:
1)編程好習(xí)慣對于軟件產(chǎn)品的質(zhì)量重要嗎?如果重要,如何讓團(tuán)隊(duì)形成良好的編程習(xí)慣?哪些編程習(xí)慣算是好的?
2)軟件質(zhì)量的根本是什么?是設(shè)計(jì),抑或測試?高質(zhì)量的軟件對工程師的工作與生活又意味著什么?
3)軟件架構(gòu)師重要嗎?還是只是個虛職?如果重要,軟件架構(gòu)師需要掌握哪些技能?
4)在軟件行業(yè)具有很大影響力的CMM(軟件成熟度模型),其倡導(dǎo)用軟件過程的成熟度來度量組織的軟件開發(fā)能力。那為什么通過CMM最高級別認(rèn)證的組織仍會開發(fā)出質(zhì)量一塌糊涂的軟件?如果你身臨其中,能發(fā)現(xiàn)導(dǎo)致這種糟糕結(jié)果的關(guān)鍵因素嗎?
5)軟件平臺與框架被廣泛地認(rèn)為是高效開發(fā)高質(zhì)軟件的方法,但為什么企業(yè)運(yùn)用這一方法后,平臺與框架最終卻成了一個包袱?困境的表現(xiàn)是什么?什么因素造成了這種困境?有方法避免進(jìn)入這種困境嗎?
6)業(yè)內(nèi)大量使用“最佳實(shí)踐”這一詞匯。真正存在最佳實(shí)踐嗎?為什么有的“最佳實(shí)踐”在組織中卻無效?
7)……
這些問題大多是開放性的,而且不少問題既涉及管理域,又涉及技術(shù)域。面對這些問題的關(guān)鍵不在于其是否有標(biāo)準(zhǔn)答案(或許根本沒有標(biāo)準(zhǔn)答案),而在于我們是否為之痛苦過、思考過,并形成了自己的想法。要知道,這些想法就是我們在工作中面對選擇時用作決策的依據(jù)。如果從來沒有這類苦惱,很難想象我們真正掌握了“終極技術(shù)”。值得一提的是,這些問題只是基于我自己膚淺的認(rèn)識所提出的,我相信讀者還有很多類似或其他的問題。
如果將軟件(開發(fā))的復(fù)雜性比喻為一頭大象,那么我們每一個人或許是正在摸象的又瞎又聾的人,我們窮一生通過“摸”的方式,在頭腦中構(gòu)建“象”的模樣。這個比喻間接地告訴我們,“終極技術(shù)”并非是某種一成不變的內(nèi)容,其中更涵蓋有每個人根據(jù)自己的閱歷所總結(jié)出來的在高質(zhì)高效工作道路上成功應(yīng)對困境的方法和信念。
“終極技術(shù)”一定是通過掌握象編程語言等非“終極技術(shù)”而最終掌握的,也需要我們通過經(jīng)受軟件項(xiàng)目的痛苦磨礪去沉淀。在沒有掌握“終極技術(shù)”之前,請不要停留在編程語言專家、Linux內(nèi)核專家、.Net專家這樣的光環(huán)之下,繼續(xù)探索,前面還有更大的舞臺等著你!在掌握“終極技術(shù)”的職場旅途中,我們得先認(rèn)識到一點(diǎn):就技術(shù)內(nèi)容而言,職場首先比拼的并不是智商,而是我們的堅(jiān)持與良好的工作習(xí)慣。工作中的很多道理我們都懂,但就是不能堅(jiān)持做到深究,也難以通過堅(jiān)持克服陋習(xí)去形成更多的好習(xí)慣。在掌握“終極技術(shù)”的道路上,我們一定會看到很多不盡人意的內(nèi)容,也會面臨不少困難與挫折,即使理智上悲觀,但我們在行動和意志上一定要保持樂觀。
-
軟件工程師
+關(guān)注
關(guān)注
8文章
218瀏覽量
21148
發(fā)布評論請先 登錄
相關(guān)推薦
評論