一名優(yōu)秀程序員的要有那些潛質(zhì)
發(fā)布時(shí)間: 2018-01-04
很多像這樣的日子,當(dāng)?shù)厣戏e起厚厚的雪時(shí),我通常會(huì)燃起鐵爐,把馬蹄跌燒的通紅,搓搓溫暖的手,開始打造特制手工馬蹄鐵。
經(jīng)過了5年多的專職釘馬掌生活后,我開始問自己一個(gè)問題:我要一直這樣干下去嗎?能不能干點(diǎn)兒別的?我的性格跟其他鄉(xiāng)下那些叼著雪茄、喝著小酒的鐵匠不一樣,我從來沒有戴過牛仔帽或騎過公牛。我渴望的是知道更多的事情,琢磨更多的事情,做更多的事情。
成功的從事開發(fā)工作7個(gè)月后,我已經(jīng)給幾百人回復(fù)了郵件,他們問我如何成為一個(gè)程序員的,尋求我的建議,他們想知道如何判斷自己是否適合去做一名程序員。
下面羅列了7種特征,是我從同事中最有效的程序員身上觀察到的,我知道,優(yōu)秀的程序員都有很多共同之處:
“差不多”、“很接近”是只能在做馬蹄鐵時(shí)用的詞,在軟件開發(fā)中,95%的正確仍然是不能用,一個(gè)“差不多”能用方法或一個(gè)使圖片很“接近”居中的CSS樣式都是不合格、不能用的。這剩下的5%對(duì)于整個(gè)軟件的有效性十分重要,能造成完全相反的結(jié)果。
??? 如果你討厭細(xì)節(jié),你就別去做程序員。
起初這句話聽起來會(huì)很迷人,你會(huì)很喜歡!我喜歡學(xué)習(xí)新事物!尤其是當(dāng)你來自于一個(gè)無聊的工作或像釘馬掌這樣永遠(yuǎn)不變的事情時(shí) =-)。然而,經(jīng)過了一段時(shí)間后,你會(huì)發(fā)現(xiàn),這變成了一條永不停息的知識(shí)河流,如果你不喜歡水,你會(huì)感覺困在了無盡無邊的知識(shí)瀑布前,無法停止,也無法窮盡。我每天大概有學(xué)到10-20種新的東西,我喜歡這些!我的弟弟卻希望事情永遠(yuǎn)不會(huì)變化,始終如一,他對(duì)我說他永遠(yuǎn)都不愿意去學(xué)編程。
??? 如果你不喜歡堅(jiān)持不懈的去學(xué)習(xí)新事物,而喜歡待在一個(gè)永不變化的環(huán)境中,那你很可能成為不了一名程序員。
沒錯(cuò),每個(gè)人都喜歡使用軟件,但你喜歡面對(duì)任務(wù)的最后期限和最終目標(biāo)嗎?需要什么時(shí)候完成?做完這些要花多少時(shí)間?我們能在這段時(shí)間里完成更多的任務(wù)嗎?是否還記得要注意細(xì)節(jié)?你怎么辦?急匆匆的完成?加班加點(diǎn)希望能多完成一些?在理想世界里,編程是一個(gè)很有趣的活動(dòng),我們寫出代碼,讓它們完成很酷的事情,吃著批薩,喝著可樂。而在現(xiàn)實(shí)生活中,有的是壓力,雖然不是時(shí)刻都這樣,但事情會(huì)比那種做一個(gè)30分鐘的簡單在線輔導(dǎo)要不同的多。我喜歡挑戰(zhàn)我的極限,我渴望成長,變成一個(gè)更棒的程序員,所以我不介意。
??? 你面對(duì)時(shí)間限制和工作壓力會(huì)怎樣?如果你想回避這些壓力,那你將無法成為一名程序員。
我知道有些程序員的生活一塌糊涂,看起來他們似乎沒自我組織能力,但我說的不是這些,我是說管理好工作流程的能力。比如,能否迅速容易的在你的計(jì)算機(jī)里找到一個(gè)東西?我認(rèn)識(shí)的優(yōu)秀的程序員通常能迅速的定位一個(gè)需要的文件,能夠用工具或腳本幫他們處理繁雜的事物,這些都是高效的工作。
??? 當(dāng)你學(xué)到了一個(gè)新東西時(shí),你是否把它寫下來?你是否喜歡想出辦法來替你完成那些重復(fù)的工作?你能很好的安排各種不同的任務(wù)嗎?如果不能,那你就不適合去當(dāng)一名程序員。
當(dāng)我還是十幾歲時(shí),教堂里的一位夫人幾乎每月都會(huì)對(duì)我說一次,她說我應(yīng)該停止問那么多為什么,她說這讓人討厭。雖然受了批評(píng),最終我還是清楚的認(rèn)識(shí)到,優(yōu)秀的程序員總是在問“為什么?”這個(gè)應(yīng)用的工作原理是什么?那個(gè)橫跨街道的建筑是怎么建起來的?程序員之間的對(duì)話聽起來總是像這樣開始的:“很奇怪他們?yōu)槭裁匆@樣做…?”以前我以為問這么多為什么是很奇怪的表現(xiàn),但現(xiàn)在我明白,至少是在軟件開發(fā)中,這是一個(gè)好的品質(zhì)。
??? 不明白的事情會(huì)引起你的好奇心嗎?新事物會(huì)讓你興奮的想搞清楚它的原理嗎?如果你不具有某種程度天生的好奇心,那么你就很可能不喜歡做一名程序員。
我知道,很多的程序員都上過大學(xué),出自高校的,但這不是我要說的。優(yōu)秀的程序員總是在鉆研程序代碼和文檔,來弄清楚東西的工作原理,他們不會(huì)敲開老板辦公室的們說:“我需要上培訓(xùn)課,學(xué)習(xí)這款新軟件”。優(yōu)秀的程序員在不斷的學(xué)習(xí),不斷的靠自己研究出事情的原委——不論是有高學(xué)歷還是沒有學(xué)歷。
??? 如果你需要有人教你,或者等著參加熱門的課程去學(xué)知識(shí),那你很可能不會(huì)成為一名程序員。
這在程序員中不是一個(gè)普遍的特征。真正優(yōu)秀的程序員善于與人交往,但大多數(shù)程序員缺乏這些能力。如果你善于溝通,你的老板、你的公司會(huì)非常喜歡你。而且,不要因?yàn)樗麄儾粫?huì)編碼就瞧不起他們。