年薪100萬(wàn)和10萬(wàn)程序員的差距

每個(gè)程序員在成長(zhǎng)初期,都會(huì)經(jīng)歷過(guò)造輪子的階段。
我們學(xué)習(xí)編碼的時(shí)候,都會(huì)照書(shū)上的示范造一個(gè)又一個(gè)的小輪子。
我們學(xué)習(xí)某些新技術(shù),拿到源碼拆解重寫(xiě)的過(guò)程,也是在造輪子。
這些「無(wú)用勞動(dòng)」讓我們真正掌握了編碼的精髓,這是拆解-重建-掌握的過(guò)程。
多年前,拿到google的大量源碼,我也是照貓畫(huà)虎,挨個(gè)功能實(shí)現(xiàn)一遍。
但不少程序員在做業(yè)務(wù)的過(guò)程中,瘋狂造輪子,這就是很大問(wèn)題了。
在業(yè)務(wù)開(kāi)發(fā)中,明知道你做的組件或功能不可能比已經(jīng)存在的組件做得更好,卻仍然堅(jiān)持要做,并應(yīng)用到業(yè)務(wù)中。
簡(jiǎn)單點(diǎn)說(shuō):業(yè)界已經(jīng)有公認(rèn)的軟件或者庫(kù)了,卻還要自己實(shí)現(xiàn)一個(gè)勉強(qiáng)運(yùn)行的山寨版。
每個(gè)造輪子的程序員都有自己“不得不造”的理由。比如:
我的需求獨(dú)一無(wú)二,現(xiàn)有的庫(kù)就是在某些方面上滿(mǎn)足不了
用老輪子太麻煩,還要看接口文檔,文檔寫(xiě)的太狗屎
別人已經(jīng)有輪子了?我不管,我就要自己實(shí)現(xiàn),這樣才有掌控感
造輪子的過(guò)程能鍛煉我的能力,讓我提升編碼水平
自己干多有成就感,我不想當(dāng)一個(gè)搭積木的工程師!
遇見(jiàn)這樣的程序員,滿(mǎn)足了他自己,坑了一個(gè)團(tuán)隊(duì)。
尤其是在互聯(lián)網(wǎng)行業(yè),時(shí)間就是商機(jī)、迭代速度就是擊敗對(duì)手的武器。
更別提有人放著圓形的輪子不用,非造出個(gè)方形輪子,直接導(dǎo)致翻車(chē)。

技術(shù)布道師本身是個(gè)很高大的職業(yè)。
很多公司的CTO同時(shí)也擔(dān)任技術(shù)布道的工作。
這是個(gè)對(duì)技術(shù)深度理解和溝通能力都有極高要求的崗位。
很遺憾的是,不少程序員代碼寫(xiě)的無(wú)比蹩足、溝通能力也很一般,但偏偏喜歡上了布道的感覺(jué)。
用了點(diǎn)新技術(shù)就急不可耐的到處宣傳,資深同事忽悠不了,就去忽悠剛?cè)肼毜男∧贻p。
又或者是手撕產(chǎn)品經(jīng)理的時(shí)候,不自覺(jué)的蹦出各種聽(tīng)不懂的技術(shù)名稱(chēng),還假模假樣的給人解釋技術(shù)細(xì)節(jié)。
業(yè)內(nèi)出現(xiàn)了新的語(yǔ)言,他們一定會(huì)急吼吼的去學(xué)習(xí)。
剛寫(xiě)了個(gè)"Hellow World”,就急不可耐的到處宣稱(chēng)掌握了這門(mén)語(yǔ)言的精髓和真理。
他們經(jīng)常號(hào)稱(chēng)掌握10種編程語(yǔ)言,且對(duì)每一種語(yǔ)言的優(yōu)缺點(diǎn)都能分析的頭頭是道。
你讓他們?cè)诠こ讨袘?yīng)用起來(lái)?那是不可能的,他們只負(fù)責(zé)布道。
一般來(lái)說(shuō),團(tuán)隊(duì)里有一個(gè)這種類(lèi)型的工程師,就夠吃一壺了。
要是有好幾個(gè),他們還會(huì)抱團(tuán)進(jìn)行學(xué)習(xí)交流,甚至組織研討會(huì)。
各種新技術(shù)、新名詞、新動(dòng)向,在他們這,都被安排的明明白白的。
但絕不產(chǎn)生任何業(yè)務(wù)價(jià)值!
三類(lèi)蹩足程序員就說(shuō)完了。
而蹩足的程序員實(shí)際上還有副作用,不少團(tuán)隊(duì)光是處理前人埋下的坑,就耗費(fèi)了全部精力。
成為優(yōu)秀程序員不易,我們首先要避開(kāi)「復(fù)制粘貼」、「造輪子」、「布道」這三個(gè)陷阱。
進(jìn)一步,我們要做到以下7點(diǎn):
1.具備裸編程能力
處理程序?qū)嶋H實(shí)現(xiàn)部分的子任務(wù),實(shí)現(xiàn)函數(shù)或者算法之類(lèi)的能力。
聽(tīng)起來(lái)很簡(jiǎn)單對(duì)吧?實(shí)際上很多程序員缺失這樣的能力。
2.具備強(qiáng)悍的調(diào)試能力
調(diào)試能力某種程度上比編碼能力更重要。查找和解決BUG會(huì)占用程序員大量的時(shí)間。
查找BUG產(chǎn)生的根源不是一件簡(jiǎn)單的事情,需要整體的分析和經(jīng)驗(yàn)的沉淀,同時(shí)還需要對(duì)各種調(diào)試工具熟練應(yīng)用。
3.追求簡(jiǎn)悅
代碼的注釋是否恰到好處、函數(shù)模塊和類(lèi)的結(jié)構(gòu)是否能讓其他人直接秒懂、架構(gòu)的設(shè)計(jì)是否足夠清晰等等,都屬于程序員追求簡(jiǎn)約的范疇。
4.準(zhǔn)確預(yù)計(jì)工期的能力
5.理解底層系統(tǒng)原理
比如數(shù)據(jù)結(jié)構(gòu)、網(wǎng)絡(luò)協(xié)議、操作系統(tǒng)相關(guān)知識(shí),等等。
程序的很多問(wèn)題都是源于對(duì)計(jì)算機(jī)工作原理的誤解,即使是使用高級(jí)語(yǔ)言開(kāi)發(fā)的程序也一樣。
另外,一些更偏應(yīng)用層的架構(gòu)或框架,基礎(chǔ)一定是更底層的系統(tǒng)。
6.嚴(yán)格把控關(guān)鍵設(shè)計(jì)
無(wú)論是大的系統(tǒng)還是小的模塊,一定都有最關(guān)鍵的功能。要在最關(guān)鍵功能上投入大量設(shè)計(jì)時(shí)間,才能規(guī)避開(kāi)發(fā)過(guò)程中的各種坑。
7.拒絕完美主義
完美主義包含兩種情況,一種是追求極致性能的工程師文化、還有一種是個(gè)人性格使然。無(wú)論哪一種,過(guò)分追求完美都會(huì)對(duì)業(yè)務(wù)交付產(chǎn)生影響。
程序員之間的差距,恐怕要比人類(lèi)和猿猴之間的差距,還要大。
程序員讀者朋友們,留言說(shuō)說(shuō)你是哪類(lèi)程序員吧?
特別推薦一個(gè)分享架構(gòu)+算法的優(yōu)質(zhì)內(nèi)容,還沒(méi)關(guān)注的小伙伴,可以長(zhǎng)按關(guān)注一下:
長(zhǎng)按訂閱更多精彩▼
如有收獲,點(diǎn)個(gè)在看,誠(chéng)摯感謝
免責(zé)聲明:本文內(nèi)容由21ic獲得授權(quán)后發(fā)布,版權(quán)歸原作者所有,本平臺(tái)僅提供信息存儲(chǔ)服務(wù)。文章僅代表作者個(gè)人觀點(diǎn),不代表本平臺(tái)立場(chǎng),如有問(wèn)題,請(qǐng)聯(lián)系我們,謝謝!