谈“技术含量”的问题
最近又從離職同事那里聽到這樣的抱怨(原因),說做的事沒有技術(shù)含量。想一想,從事車載軟件開發(fā)這個行業(yè)快8年了,這個話題似乎從來沒有停過。我自己曾經(jīng)也為自己做的事是否有技術(shù)含量而苦惱過,今天就專門花點時間聊一聊。
為什么會覺得沒有技術(shù)含量?
真正思考過這個問題的人很少。簡單粗暴地概括,大部分人(我所遇到的全部)都只是覺得,“這個事我會做了,所以沒有技術(shù)含量”。也就是說,他們只是不愿意用已經(jīng)會的方法,做曾經(jīng)做過的類似的事。這可以理解,人們都不喜歡做重復(fù)的事。但現(xiàn)實確實是,大部分的工程師的工作,都是用已經(jīng)掌握的技術(shù),去做相對熟悉的事。因為
我們是在做工程,而不是做研究
雖然我一直覺得“軟件工程”相比起其它的工程而言,是愧對“工程”兩個字的,但是畢竟我們是在做產(chǎn)品,而不是在做科研。做科研中失敗是常態(tài),做產(chǎn)品如果也經(jīng)常失敗,那公司就完蛋了。那么怎么算“成功”?就是在規(guī)定的工期內(nèi)用可接受的成本完成了滿足質(zhì)量要求的產(chǎn)品。要達到這個目標(biāo),就要求
一、盡量采用成熟的技術(shù)
工程師們(程序員們)要對軟件所涉及的技術(shù)比較熟悉(知道什么地方有些什么坑),并對要開發(fā)的產(chǎn)品相對比較熟悉(有行業(yè)經(jīng)驗)。只有這樣,產(chǎn)品才相對有可能在要求的工期內(nèi)完成。(說話,很多的加班其實是由于技能和經(jīng)驗不足造成的)。如果一個產(chǎn)品涉及到的技術(shù)有20%是這個團隊的成員所沒有掌握的,那么會有80%的概率出問題(工期要超,或是成本要超)。
二、細劃分工,提高效率降低風(fēng)險
5個人干半年的活,只要有可能,就會安排10個人做3個月。問題域被細分了。這樣每個人做的事相對比較窄,很多程序員只做一小部分,沒有對整個軟件的把握,不知道自己做的這一塊是做什么的。所以也往往覺得“沒有什么成長”。另外,細分的結(jié)果是使用工作簡單了。舉個例子,舉個例子,做SSL的通信協(xié)議是比較難的(粗暴地說,比較有“技術(shù)含量”),但在工程中往往不是安排一個人把SSL通信協(xié)議做一遍,而是安排多個人去做,某個人完成RAS算法,某個人完成ASN.1編碼,某個人做X.590的支持,某個人做DES等等等……問題細分下去之后,每一個小部分會比原來要容易很多,于是參與的人就覺得,沒有什么“技術(shù)含量”了。(是的,細分下去看,所有程序不都是if else for嘛?)
這就是“工程”的特質(zhì)。不同的公司會因為各種原因情況稍有變化,本質(zhì)上是類似的。
難道工作就沒有什么樂趣和挑戰(zhàn)性了嗎?
當(dāng)然不是!
正如前文所說,軟件工程雖然號稱“工程”,與傳統(tǒng)工程相比卻還有很多差別。一是因為軟件的邊際成本很低,一旦完成,就可以無限地復(fù)制,所以不會有真正意義上的“重復(fù)”地生產(chǎn),軟件開發(fā)本身是一個創(chuàng)造性和實驗性并存的過程,它本來就需要試錯(測不準(zhǔn)的程序員)。也因為如此軟件工程師能力的“度量”是個很大的問題(創(chuàng)造性是很難度量的)。因為很難知道,某個功能,一個“合格的”工程師應(yīng)該花多少時間寫完,寫出來的代碼量應(yīng)該是多少,這樣的代碼在質(zhì)量上,可維護性上,擴展性上表現(xiàn)如何。遵守流程以及使用熟悉的技術(shù)能只在一定程度上保證項目能做到及格。雖然如何精確定義優(yōu)秀的工程師是很難的,但項目要想做到出色,優(yōu)秀的開發(fā)工程師確實起決定性作用。這種工程師對新的技術(shù)和手法感興趣。他們盡量在能控制住風(fēng)險的情況下,采取一些新的方法和工具來提高效率,嘗試新的設(shè)計來提高代碼的維護性和擴展性。這是讓軟件開發(fā)工作充滿樂趣和挑戰(zhàn)的部分。
軟件技術(shù)發(fā)展日新月異,而且學(xué)習(xí)的來源非常廣泛,所以,有上進心的程序員們可以用很多辦法學(xué)到很多新東西(開源項目,博客,書,等等),然后在工作中去嘗試自己學(xué)到的東西用來提高效率,掌握不同技能的程序員之間的效率差別可以成十上百倍(所以有高手和菜鳥)。在軟件開發(fā)的領(lǐng)域,高手幾乎都是靠自學(xué)、實踐最終領(lǐng)悟得道的。在這部分程序員看來,手頭上的事總是有新辦法可以做,新工具可以嘗試。并且在這個過程中,工作也越做越好。同樣的事,有非常多的方法做,他們從不覺得不會再有進步了,因為有無數(shù)的東西可以學(xué),學(xué)會之后實踐到工作中去。
真正對技術(shù)感興趣的人,反而很少會為“沒有技術(shù)含量”這個問題而煩惱。因為他知道所有的問題都存在著更好的解決,只是看你有沒有興趣去找這樣的解法。覺得工作沒有技術(shù)含量的人往往是這樣的:期待別人來教自己,從不主動學(xué)習(xí)和思考。所以在我看來,在軟件開發(fā)中,“技術(shù)含量”的問題大多數(shù)時候只是個偽問題,只是一個借口而已(有的人意識到了,有的人沒有)。真正熱愛技術(shù)的人在離職時也很少用“沒有技術(shù)含量”這種籠統(tǒng)的方式來表達,更多的是已經(jīng)非常清楚自己下一步想做的是什么,他覺得在哪里才能得到更好的環(huán)境去做他想做的事。
不是“技術(shù)含量”的問題,那是什么問題?
從上面我們知道,“是否有技術(shù)含量”的問題其實和他們是否真心想做技術(shù)沒有多大關(guān)系。深一層地追究,其實他們有意或無意中,真實想的是:“這個事我已經(jīng)會做,我要掌握點其它的知識,用來提升自己的價值(也就是,讓自己在市場上保值或是升值)”。不信?試著想一下這個問題:“給你一份工作,月薪2萬,每年漲薪15%,保證終身雇傭,工作內(nèi)容是每天把各大網(wǎng)站的IT新聞收集起來發(fā)給經(jīng)理”,你是否愿意接受這份工作?如果愿意,那么你根本就不在意“技術(shù)含量”這個事兒。你是在乎“錢”。
這沒有什么不好意思承認的,追求好的生活天經(jīng)地義。那么大家自然會關(guān)心
什么能力是值錢的?
市場上稀缺的才可能是值錢的。
這點大家都很清楚。十年前非常流行“程序員是吃青春飯”的這種說法,現(xiàn)在要少一些了。那時所謂程序員們所做的事都處在行業(yè)鏈下游,需要的技能大多數(shù)沒有多少門檻。新人也很容易就能掌握,談不上稀缺。隨著行業(yè)的發(fā)展,這個狀況逐漸在發(fā)生變化。也就越來越需要一些高端的人才了。這些人才大概會有下面這些特點:
1. 在某些領(lǐng)域有比較豐富的經(jīng)驗(業(yè)務(wù)和技術(shù)方向)
新人一般學(xué)了一段時間之后都會覺得“這也不過如此”,但有經(jīng)驗的人都知道,“其實水很深”。這種過來人的閱歷在項目中是非常重要的。有這種經(jīng)驗的人比較不容易犯錯,也不會輕視可能出現(xiàn)的困難。另外,他們的抗壓能力也比較好,遇到之前沒出現(xiàn)過的問題不會慌了手腳或是束手無策。他們大概會知道還有什么辦法可以嘗試,有什么人可以求助。每個領(lǐng)域,都有一些很特殊的問題,至少要經(jīng)歷好幾個項目才會有所把握的經(jīng)驗。擁有這些經(jīng)驗的人在對風(fēng)險的控制能力要強得多(最直接的結(jié)果就是加班會少)。在設(shè)計的前期也能預(yù)見性地解決大部分可能出現(xiàn)的問題,而避免在項目后期疲于解決bug的情況。而且每個項目都會有幾個很難解決的bug,需要相當(dāng)?shù)募夹g(shù)和經(jīng)驗才能搞定。
要做到這一點,需要長時間在某個領(lǐng)域的積累,不通過遇到和解決大量的問題,是很難得到提高的。
2. 有較強的學(xué)習(xí)能力
前面說過,程序員們幾乎不會做真正重復(fù)的東西。學(xué)習(xí)能力對于軟件開發(fā)來說無比重要。這一點大家都很清楚。學(xué)習(xí)能力來自哪里?一是獨立和積極地思考。這一點其實非常重要,這直接影響到學(xué)習(xí)的效果。二是基礎(chǔ)好。現(xiàn)在想來,大學(xué)學(xué)的那些課程,都是非常重要的。因為快速地學(xué)習(xí)能力絕對是基于這些基礎(chǔ)的。三是經(jīng)驗,舊有的經(jīng)驗往往能加快新領(lǐng)域的學(xué)習(xí)。會C#再學(xué)Java,就不再需要花同樣多的時間了。
3. 帶團隊的能力
這一點幾乎不需要展開說。但確又是不少人心里不太愿意承認的。特別是不善溝通的技術(shù)人,往往在心里看不起那些技術(shù)并不是最好,但溝通能力、計劃能力方面很平衡而當(dāng)上Leader的同事。但現(xiàn)實就是,一個團隊除了極少一兩個人能在技術(shù)上給團隊帶來很大價值之外(他們能解決99%的程序員不能解決的問題),其它程序員的水平差別并不會顯著到不同的量級上。能帶一個團隊(幾個到幾十人)做好一件事,反而是比較稀有的能力。
所以,其實那些以所謂沒有技術(shù)含量而離職的人,很多人后續(xù)發(fā)展并不好,因為他們總是歸咎于環(huán)境,不主動實踐和思考,并且因為不夠穩(wěn)定而在從事過的事方面都沒有深入的積累,反而使得自己沒有多少“特別的價值”可言。
很是可惜。
時間比較倉促,很多點沒有能展開寫。以后有機會再談。
---- 總會有一個人需要你的分享~! 唐風(fēng): www.cnblogs.com/muxue ------
?
轉(zhuǎn)載于:https://www.cnblogs.com/yyxt/p/4980577.html
總結(jié)
以上是生活随笔為你收集整理的谈“技术含量”的问题的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 第二百三十一天 how can I 坚
- 下一篇: Python带你轻松进行网页爬虫