在IT行業(yè)飛速發(fā)展的時(shí)代,有過的程序員,有些成為程序員心中的大神,那么那些成為大神的程序員們是因?yàn)槭裁闯蔀榇笊竦哪兀拷裉煨【幘秃痛蠹艺f說,希望那些想要進(jìn)入程序員界的小白或者剛學(xué)編程的伙伴們認(rèn)真看看。
在《The Effective Engineer》的作者在寫書的過程中,為了了解那些頂級(jí)程序員和普通程序員的區(qū)別,采訪了很多硅谷頂級(jí)科技公司的頂尖軟件工程師。他發(fā)現(xiàn)這些給世界帶來巨大影響的的工程師們至少有以下5個(gè)共同的思維模式:
1.精通代碼調(diào)試(debug)
很多人在寫代碼的過程中,經(jīng)常會(huì)有的一個(gè)問題就是:為什么我寫出來的代碼不能運(yùn)行?為什么運(yùn)行的結(jié)果不是我想要的?
幾乎所有的程序員寫代碼都不是一遍就能寫好的。但是頂尖的程序員非常快的就明白自己代碼的問題可能是什么。這是一個(gè)很重要的能力,但是偏偏學(xué)校里不教,面試的時(shí)候考官也不經(jīng)常提及。
那么怎么去調(diào)試代碼呢?其實(shí)核心就是以下幾個(gè)方法:
1、不妨先猜測(cè)一下到底發(fā)生了什么。2、假設(shè)你的猜測(cè)是對(duì)的,想想你的猜測(cè)會(huì)導(dǎo)致程序有什么結(jié)果。3、試著觀察這些結(jié)果有沒有異常的地方。4、如果你沒有發(fā)現(xiàn)異樣,那么說明你的猜測(cè)就是對(duì)的。5、如果你發(fā)現(xiàn)了異樣,那么說明你的猜測(cè)是錯(cuò)的,接下來?yè)Q一個(gè)猜測(cè)試試。
對(duì)于頂尖程序員來說,這個(gè)過程在腦海中就是電光火石的一瞬間。只要你解決的問題足夠多,你做出來的猜測(cè)就會(huì)越準(zhǔn)確。
至于如何發(fā)現(xiàn)異樣?你就需要有一套自己的工具或者方法論了。最簡(jiǎn)單的就是在代碼里輸出日志來判斷。但是這是比較笨的辦法,你需要去接觸一些高級(jí)的工具或者直接帶有Debug功能的編輯器。
2.優(yōu)化你的迭代速度
假設(shè)你要花12秒鐘去搜索某個(gè)函數(shù)是在哪里定義的。再假設(shè)你每天做這個(gè)動(dòng)作60次,那么你每天就要花12分鐘去搜索函數(shù)定義。
如果你用一個(gè)好一點(diǎn)的編輯器,每次找到函數(shù)定義只要2秒鐘,那么你每天就會(huì)節(jié)約10分鐘。每年你就可以節(jié)約40個(gè)小時(shí)。
如果你能找到3個(gè)這樣的場(chǎng)景去優(yōu)化一下,那么你每年可以節(jié)約一個(gè)月的時(shí)間。想想這一個(gè)月你可以做多少有意義的事情。
再假如你在調(diào)試一個(gè)App的bug的時(shí)候,改完一次代碼都需要重啟一下App,然后點(diǎn)擊4、5次才能看到bug有沒有改好。那么你是不是可以先花幾分鐘設(shè)置以下,讓App一啟動(dòng)就轉(zhuǎn)到顯示Bug的頁(yè)面呢?
千萬(wàn)不要小看這些瑣碎的細(xì)節(jié),改善它們的回報(bào)是巨大。
3.系統(tǒng)性的思考方式
當(dāng)你在寫代碼的時(shí)候,你很容易就認(rèn)為只要你按照需求實(shí)現(xiàn)了指定的功能,你的代碼就寫完了。但是這其實(shí)只是冰山一角。任何沒有發(fā)布到生產(chǎn)環(huán)境的代碼都不會(huì)產(chǎn)生任何價(jià)值。
如果想寫出真正有影響力的代碼,你需要從整個(gè)系統(tǒng)去理解你的工作:
1、你的代碼和其他人寫的代碼在功能上是什么關(guān)系?2、你有沒有好好測(cè)試你的代碼?或者其他人是否很容易測(cè)試你的代碼?3、為了部署你的代碼,線上生產(chǎn)環(huán)境的代碼是不是需要改動(dòng)?4、新的代碼會(huì)不會(huì)影響到已經(jīng)運(yùn)行的代碼?5、在新的功能下,你的目標(biāo)用戶的行為是不是你期望的?6、你的代碼有沒有產(chǎn)生商業(yè)上的影響?
這些問題都不是很容易就能回答的,但是在寫代碼的時(shí)候,你需要明白你的代碼最后會(huì)不會(huì)得到最好的結(jié)果。
4.重視能夠節(jié)約時(shí)間的工具
最近打敗人類的AlphaGo每天可以進(jìn)行上百萬(wàn)局的下棋訓(xùn)練,我們?nèi)祟愐蝗f(wàn)個(gè)小時(shí)的訓(xùn)練卻需要10年之久。也就是說,電腦運(yùn)行幾分鐘,可能就等于人類工作好幾年。
曾經(jīng)在Facebook擔(dān)任技術(shù)總監(jiān)的Bobby Johnson描述過,高效率的程序員都把時(shí)間花在制作工具上。
很多人也認(rèn)為工具是很重要的,但是他們并沒有花時(shí)間去制作、整合自己的工具。但是,Jonson團(tuán)隊(duì)最出色的員工耗費(fèi)了他們1/3的時(shí)間在工具制作上,這些工具可以用來發(fā)布代碼,監(jiān)控系統(tǒng),以及能讓他們花更少的時(shí)間去做更多事情。
總之,不要花時(shí)間去做機(jī)器可以代替你去做的事情。
5.勇于去研究你不懂的代碼
一般人都不愿意去研究自己不曾接觸過的代碼,很多人都沒有嘗試就放棄了。如果你經(jīng)常去研究你沒有接觸過的代碼,你就會(huì)越來越熟悉不同的代碼結(jié)構(gòu)和設(shè)計(jì)模式。現(xiàn)在人們很容易就接觸到優(yōu)秀的開源代碼資源,你可以很方便的就下載下來做一些改動(dòng)或者調(diào)試,去研究為什么代碼可以這么寫。
除了代碼之外,很多人對(duì)于陌生的工作內(nèi)容也會(huì)感到恐懼。每次換工作的時(shí)候,你可能都會(huì)遇到新公司的工作內(nèi)容和以前工作的內(nèi)容不一樣的情況,以至于剛開始的時(shí)候工作效率沒有以前那么高。很多人甚至覺得,他們是不是騙了面試官。
其實(shí),大家都是在學(xué)習(xí)的過程中。在一個(gè)陌生的領(lǐng)域,沒有人從一開始就是大神。如果你想變得越來越好,無(wú)論是寫代碼,與人溝通或者其它的技能,都是需要投入時(shí)間去學(xué)習(xí)的。
責(zé)任編輯:wv
-
程序員
+關(guān)注
關(guān)注
4文章
953瀏覽量
29867
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
阿里云升級(jí)通義靈碼AI程序員,全面上線
TMS320C55x DSP CPU程序員參考補(bǔ)充
![TMS320C55x DSP CPU<b class='flag-5'>程序員</b>參考補(bǔ)充](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
UCD3138A64/UCD3138128程序員手冊(cè)
![UCD3138A64/UCD3138128<b class='flag-5'>程序員</b>手冊(cè)](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
機(jī)械革命發(fā)布CODE AI程序員本
Linux驅(qū)動(dòng)程序程序員指南
![Linux驅(qū)動(dòng)<b class='flag-5'>程序</b><b class='flag-5'>程序員</b>指南](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
AI編程工具會(huì)不會(huì)搶程序員飯碗
第五屆長(zhǎng)沙·中國(guó)1024程序員節(jié)開幕
京東上萬(wàn)程序員都AI用它!
![京東上萬(wàn)<b class='flag-5'>程序員</b>都AI用它!](https://file1.elecfans.com//web2/M00/FD/06/wKgZomaXgOKAf_q0AADLwFkyfJU838.jpg)
程序員節(jié)視頻創(chuàng)意大賽,用串口屏贏取千元大獎(jiǎng)
![<b class='flag-5'>程序員</b>節(jié)視頻創(chuàng)意大賽,用串口屏贏取千元大獎(jiǎng)](https://file1.elecfans.com/web2/M00/8D/79/wKgaomS7KZ-AY3GzAAArJzrUg1c443.png)
程序員節(jié)視頻創(chuàng)意盛宴,邀您共襄盛舉!
![<b class='flag-5'>程序員</b>節(jié)視頻創(chuàng)意盛宴,邀您共襄盛舉!](https://file1.elecfans.com/web2/M00/F7/E1/wKgaomaDZHyAdCpxAACC-PIdRiA155.png)
大模型時(shí)代,程序員當(dāng)下如何應(yīng)對(duì) AI 的挑戰(zhàn)
![大模型時(shí)代,<b class='flag-5'>程序員</b>當(dāng)下如何應(yīng)對(duì) AI 的挑戰(zhàn)](https://file1.elecfans.com//web2/M00/F6/06/wKgaomZ-ceeAU_ldAAYCIRbxQ_w529.png)
薪資高、青春飯,是不是程序員=青樓?
瑞薩Flash程序員V3 發(fā)布說明
![瑞薩Flash<b class='flag-5'>程序員</b>V3 發(fā)布說明](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
評(píng)論