值得每一個(gè)IT新人深思的好文章
38 2017-04-19
理想的程序員與平庸的程序員只有一墻之隔。兩者的差距只有6個(gè)一點(diǎn)點(diǎn),而人與人的差距,正是在這日積月累的一點(diǎn)點(diǎn)中,被永遠(yuǎn)拉開了。有意思的是,我發(fā)現(xiàn)這6個(gè)一點(diǎn)點(diǎn)都和意識(shí)有關(guān),也就是程序員和其他一切新興產(chǎn)業(yè)的工種一樣,只需要意識(shí)加上時(shí)間的錘煉,人人皆可達(dá)到理想的階段。理想的程序員必然也是一個(gè)優(yōu)秀的problem-solver。
第1個(gè)一點(diǎn)點(diǎn):專注眼下
見過太多心猿意馬的程序員,我不得不把「專注眼下」作為天字第一條。他們往往有各式各樣的小夢(mèng)想,比如做個(gè)小茶農(nóng)、做個(gè)小鵝販、做產(chǎn)品、做銷售、做投資,卻被程序員的高薪或是沒有轉(zhuǎn)行的魄力「耽誤」了,而因?yàn)椴粚W?,他們不在意做好自己的本分,不在意錘煉自己的技能,不在意學(xué)習(xí)新興的技術(shù)。不可否認(rèn),這世界上存在著偉大的產(chǎn)品(像喬老爺)、偉大的銷售(像埃里森)、偉大的投資客(像彼得菲),而他們毫無例外都是程序員出身??赡懵犝f過巴菲特評(píng)價(jià)蓋茨的話么,比爾蓋茨如果轉(zhuǎn)行去賣狗,那他一定是全世界最大的狗販。我堅(jiān)信除了少數(shù)的天才外,冥冥眾生均可以在多個(gè)領(lǐng)域取得成功,只要保持足夠的專注。而哪怕你下一年就想賣狗去,程序員的經(jīng)驗(yàn)仍然能訓(xùn)練你強(qiáng)大的邏輯、謹(jǐn)慎和耐心,放在哪個(gè)行業(yè)都是相當(dāng)可觀的競(jìng)爭(zhēng)力。
第2個(gè)一點(diǎn)點(diǎn):思考力與推動(dòng)力
我認(rèn)為處理bug、崩潰、調(diào)優(yōu)、入侵等突發(fā)事件比編程本身更能體現(xiàn)平庸程序員與理想程序員的差距。當(dāng)面對(duì)一個(gè)未知的問題時(shí),如何定位復(fù)雜條件下的核心問題、如何抽絲剝繭地分析問題的潛在原因、如何排除干擾還原一個(gè)最小的可驗(yàn)證場(chǎng)景、如何抓住關(guān)鍵數(shù)據(jù)驗(yàn)證自己的猜測(cè)與實(shí)驗(yàn),都是體現(xiàn)程序員思考力的最好場(chǎng)景。是的,在衡量理想程序員的標(biāo)準(zhǔn)上,思考力比經(jīng)驗(yàn)更加重要。
有時(shí)候小伙伴跑過來,問我「提交了一個(gè)任務(wù)被卡住了,怎么辦」的時(shí)候,我總覺得他可以做得更好。比如,可以檢查試驗(yàn)別的任務(wù),以排除代碼自身的原因;可以通過WebUI檢查異常(如果沒有賬號(hào),可以讓我提供);可以排查主機(jī)日志或刪除緩存,再不濟(jì),總應(yīng)該提供任務(wù)ID和控制臺(tái)日志給我。理想的程序員永遠(yuǎn)不會(huì)等事情前進(jìn),他們會(huì)用盡一切方法讓事情前進(jìn)。
第3個(gè)一點(diǎn)點(diǎn):NeverSayNo
記得從前廠離職之前,找老板談話,他說我最大的優(yōu)點(diǎn)就是從來不和他說這個(gè)做不到。后來我發(fā)現(xiàn)在很多團(tuán)隊(duì)里,都存在一種技術(shù)和產(chǎn)品的對(duì)立,程序員往往以「技術(shù)上無法實(shí)現(xiàn)」來擋產(chǎn)品的需求,而產(chǎn)品也往往以「Facebook可以為什么我們做不到」來奚落程序員。這兩句話應(yīng)該屬于禁語,從根本上都不利于程序猿和產(chǎn)品狗的相親相愛。
一句「技術(shù)上無法實(shí)現(xiàn)」是容易出口,可有多少人在說出這句話的時(shí)候,心里是100%肯定的?如果不肯定,為什么不能回去谷歌一下再回答?原本我以為程序員是充滿想象力,在因?yàn)橛邢胂罅?,才能誕生那么多改變我們生活的軟件和互聯(lián)網(wǎng)產(chǎn)品。見識(shí)多了,才了解大部分程序員已經(jīng)在與bug的對(duì)抗中變得保守而不愿擔(dān)當(dāng)風(fēng)險(xiǎn),與此同時(shí)許多團(tuán)隊(duì)也不愿意寬容失敗。于是「SayNo」變成一種習(xí)慣性的抵觸,還記得曾國藩為什么解散湘軍么?他說那隊(duì)已「暮氣漸深」,不能打仗了。要做理想的程序員,就不能給自己滋生暮氣的機(jī)會(huì),如果面對(duì)不合理的需求,可以把時(shí)間成本擺出來,把曲線救國方案亮出來,簡(jiǎn)單粗暴「SayNo」是不可取的。
第4個(gè)一點(diǎn)點(diǎn):投資未來
程序員是一個(gè)非常殘忍的職業(yè)。你所學(xué)所用的語言、框架、模式,很可能在數(shù)年內(nèi)就成昨日黃花了;你現(xiàn)在嘲笑的另一群程序員,可能馬上就能轉(zhuǎn)身來嘲笑你了。所以理想的程序員除了做好自己的本分,還要花費(fèi)時(shí)間來投資未來。什么是「投資」?投資就是你現(xiàn)在投入的時(shí)間,在未來會(huì)以更多的時(shí)間或者金錢(看看早幾年學(xué)習(xí)iOS的程序員現(xiàn)在的薪酬!)回報(bào)你。舉我自己的領(lǐng)域—數(shù)據(jù)挖掘?yàn)槔?8年左右Hadoop開始興起,一時(shí)「大數(shù)據(jù)」概念火熱,Hadoop工程師萬金難求,各互聯(lián)網(wǎng)公司紛紛把數(shù)據(jù)統(tǒng)計(jì)、數(shù)據(jù)分析和數(shù)據(jù)挖掘的業(yè)務(wù)切換到分布式平臺(tái)上。這幾年眼看Hadoop還在不斷迭代,Spark又異軍突起,一舉刷新了Hadoop保持的排序記錄,以內(nèi)存存儲(chǔ)中間數(shù)據(jù)帶來的性能優(yōu)勢(shì)和豐富的數(shù)據(jù)結(jié)構(gòu)讓人愛個(gè)不停,各種奇異的小bug和陡峭的學(xué)習(xí)曲線又讓人打退堂鼓。那么,明眼人都知道Spark是未來的趨勢(shì)(內(nèi)存會(huì)越來越便宜),在主業(yè)務(wù)放在Hadoop的條件下,就可以適當(dāng)把一些小模塊切換到Spark上,同時(shí)留意Spark社區(qū)的發(fā)展。很快從Spark獲得的性能收益就能把之前投入的學(xué)習(xí)時(shí)間掙回來。
第5個(gè)一點(diǎn)點(diǎn):善用工具
善用工具可以分為4個(gè)層面:
搜索引擎
不相信重復(fù)
代碼片段
自動(dòng)化
我剛?cè)胄心菚?huì),一個(gè)計(jì)算機(jī)專業(yè)卻當(dāng)了公務(wù)員的朋友問我,你一點(diǎn)都沒學(xué)過編程,平時(shí)怎么寫代碼?我說,谷歌,于是遭到無情的恥笑,以至于我在哪里的賬號(hào)都叫2shou,告誡自己是一個(gè)無恥的二手程序員。這是一個(gè)笑話,但如果現(xiàn)在問我,我還是要回答谷歌。程序員的成長就像膨脹的圓餅,外面是無邊無際的大海,圓餅越大,與大海接觸的面也越大,懂的越多,不懂的越多,而計(jì)算機(jī)科學(xué)又是一門更新?lián)Q代異常迅速的學(xué)科,同時(shí)也是知識(shí)互聯(lián)網(wǎng)化最好的學(xué)科,很難利用傳統(tǒng)的科班式有教有學(xué)的方法,相反通過搜索引擎則很容易獲取到最新的知識(shí)。
不相信重復(fù),大師的話叫DRY原則(Dontrepeatyourself),代碼寫多了,會(huì)有人為的直覺判斷好的和爛的代碼,我的標(biāo)準(zhǔn)是簡(jiǎn)潔和規(guī)范,簡(jiǎn)潔并不是美感上的標(biāo)準(zhǔn),重復(fù)越少,給自己出錯(cuò)的機(jī)會(huì)也越少,后期維護(hù)的成本也越少。
如果你不幸丟了三周前的代碼,也許你能憑著過人的記憶力把腦子里殘余的片段復(fù)寫出來,但如果丟的是三個(gè)月前的代碼,恐怕就沒有那么好的運(yùn)氣了。理想的程序員會(huì)著力找尋有效的資料保存方式,把工作里靈光閃現(xiàn)寫下的代碼、腳本、配置、經(jīng)驗(yàn)等短的片段保存起來,以便任何時(shí)候都能復(fù)查。
理想的程序員必須懶惰。對(duì)他們來說,重復(fù)的步驟和重復(fù)的代碼一樣丑陋,如果意識(shí)到一項(xiàng)工作有可能長期要重復(fù),那么自動(dòng)化的時(shí)間總是越早越好。
第6個(gè)一點(diǎn)點(diǎn):管理時(shí)間
之所以管理時(shí)間會(huì)對(duì)程序員這個(gè)行當(dāng)特別重要,是因?yàn)樵谕瓿扇蝿?wù)時(shí)你必須像荒野里的狼一樣,「獨(dú)行」。沒有外界約束的情況下還能穩(wěn)定控制自己,保證能高效率地工作和學(xué)習(xí),那么日積月累你肯定會(huì)變得比一般人厲害。
程序員干的是高強(qiáng)度的腦力活,一般每天集中4-5個(gè)小時(shí)應(yīng)對(duì)本職工作就足夠了,但工作之外,一定要安排時(shí)間用于學(xué)習(xí)。除了學(xué)習(xí),留點(diǎn)時(shí)間放空自己也是必要的,利用泡茶或者喝咖啡的間隙,把彌足珍貴的時(shí)間留給自己,往前想往后想,事半功倍。
掃一掃
獲取更多福利
獵學(xué)網(wǎng)企業(yè)微信
獵學(xué)網(wǎng)訂閱號(hào)
獵學(xué)網(wǎng)服務(wù)號(hào)