|
英文原文:What makes a great software engineer?
原文發(fā)布于 2009-8-21
近幾周,一份反映 NETflix 公司企業(yè)文化的報(bào)告在網(wǎng)上廣為流傳。 這份報(bào)告里列舉了很多NETflix公司里令人稱贊的做法,包括這個(gè)公司是如何的招聘和辭退員工的。 里面有大量的信息是描述NETflix公司是怎樣對(duì)待員工的,這使NETflix公司變成了一個(gè)很有吸引力的工作場(chǎng)所。報(bào)告里面提到過有一個(gè)關(guān)于員工所期望的內(nèi)容的清單,但沒有把清單列出來。 報(bào)告的開始部分就談及了企業(yè)價(jià)值問題,而且是按照員工的立場(chǎng)角度寫的,可惜并沒有把這個(gè)問題展開。
我并不在NETflix工作 —— 你也知道 (我在 Yahoo!工 作) —— 但我深切的感覺到,不管你在哪里工作,成為一個(gè)優(yōu)秀的員工、優(yōu)秀的軟件開發(fā)工程師的過程是一樣的。 下面所列舉的都是偉大的程序員所具有的經(jīng)驗(yàn)和品質(zhì)。
只做正確的事
對(duì)于軟件這一行的人,我們有個(gè)很大的挑戰(zhàn),就是如何能夠用正確的方法做事情。什么是正確的方法,這依賴于你在做什么和為誰(shuí)做。而究竟所謂 “正確的方法”里都包括了什么內(nèi)容,這并不是重點(diǎn),重點(diǎn)是你是否能堅(jiān)持按照這種方式做事。初級(jí)程序員的問題通常是不能做到堅(jiān)持,而資歷較深的程序員卻能始終堅(jiān)持原則。 也許會(huì)有一個(gè)“非常緊急”的項(xiàng)目,或者這個(gè)項(xiàng)目很特殊,不能按常規(guī)過程開發(fā)。這只是個(gè)假象。 好的程序員知道即使在任何情況和環(huán)境下都要堅(jiān)持做正確的事情。如果說按正確的方式開發(fā)將導(dǎo)致不能按時(shí)完成任務(wù),那么,他們就會(huì)知道,這個(gè)項(xiàng)目是不能按時(shí)完工的。 不要妥協(xié),工程質(zhì)量是你作為一個(gè)優(yōu)秀程序員的唯一終極證明。 確保你所有的代碼都是在正確的方法下100%正確的寫出的。要按一個(gè)優(yōu)秀的程序員的標(biāo)準(zhǔn)來要求自己。
甘愿受苦
聽起來很傻,但卻是真的,優(yōu)秀的程序員都樂于承擔(dān)工作上給他們帶來的痛苦。你說出一個(gè)偉大的程序員,我都能告訴你,在他或她的職業(yè)生涯里,各個(gè)階段,都曾有花好幾天時(shí)間去解決一個(gè)問題的經(jīng)歷。優(yōu)秀的程序員品味著困難給他們帶來的挑戰(zhàn),這讓他們?nèi)找岳^夜,他們明白,問題必須要解決掉。
不太優(yōu)秀的程序員就不一樣了,他們?cè)趧倓偱龅接新闊┑嫩E象時(shí)就先想到要尋求幫助。在問題面前,他們習(xí)慣于去尋求幫助,而不是自己去努力解決這個(gè)問題。他們最喜歡的一句話是:“幫我看看這個(gè)問題”。偉大的程序員的第一反應(yīng)是我要自己解決這個(gè)問題。解決問題是種技能,是優(yōu)秀的程序員非常看重的一種技能。
好的程序員是通過痛苦的磨練才成為偉大的程序員的。痛苦的磨練是說當(dāng)你對(duì)這個(gè)問題實(shí)在無能為力時(shí)才去請(qǐng)求外援。求助就意味著認(rèn)輸, 所有盡量減少這種處境的發(fā)生。甘愿受苦。和問題做不懈的斗爭(zhēng)。這就是你要學(xué)會(huì)的。
注意: 我并不是說你不能尋求他人的幫助。我說的是,你首先要嘗試自己去完成任務(wù),如果你不能完成,再尋求幫助。不要在自己沒有努力過前就輕易的求助。你經(jīng)常會(huì)發(fā)現(xiàn),當(dāng)你知道了解決方法后,你才認(rèn)識(shí)到,你用自己的力量本也能解決這個(gè)問題的。
學(xué)無止境
如果有人敢聲稱他不需要再學(xué)任何新的知識(shí),我是絕對(duì)不愿意和他共事的。在有些行業(yè),你也許很多年不學(xué)新的東西也能干的很好,但軟件技術(shù)革新的如此之快,你不能不時(shí)刻關(guān)注。你的老板是由于你有某些技能才花錢雇你的,如果你的技能已經(jīng)落伍、過期了,那你也就沒有價(jià)值了。 想成為一名偉大的程序員,你首先要承認(rèn)你不是無所不知,你必須每天都要努力的尋找、學(xué)習(xí)新的知識(shí)。
在你現(xiàn)在的公司里或組織里尋找能讓你學(xué)習(xí)、讓你欽佩的人。在復(fù)雜的問題上征求他們的意見,看看他們是怎么思考的。向他們介紹你的解決思路,請(qǐng)他們給予批評(píng)指點(diǎn)。如果在你的周圍你不能找出一個(gè)能作為你的導(dǎo)師的人,這要么是你還沒有認(rèn)真的尋找,要么是你留在了一個(gè)不該留的公司里。如果你在現(xiàn)在的工作上不能學(xué)習(xí)進(jìn)步,那是到了你該換個(gè)工作的時(shí)候了。
要閱讀網(wǎng)上的博客。關(guān)注一些研討會(huì)。與其他程序員交流。偉大的程序員從不停止學(xué)習(xí)。
分享知識(shí)
有一些程序員認(rèn)為,他們的唯一價(jià)值所在就是他們所擁有的知識(shí),于是,分享出他們的知識(shí)就會(huì)讓他們的價(jià)值降低。這是大錯(cuò)特錯(cuò)了。讓你有價(jià)值的不是你的知識(shí),而是如何運(yùn)用你的知識(shí)給公司創(chuàng)造價(jià)值。難道還會(huì)有比分享知識(shí)給他人更能給公司創(chuàng)造價(jià)值的方法嗎?
我曾經(jīng)面試過一家公司,知識(shí)不共享、相互保密、相互提防的理念在這家公司里根深蒂固。在這樣的環(huán)境里,員工之間形成了一種惡性競(jìng)爭(zhēng)的關(guān)系,這直接導(dǎo)致了勾心斗角和誣陷中傷的產(chǎn)生。我可不想在這樣的公司里工作。如果每個(gè)人都對(duì)自己知道的事情諱莫如深,那你什么都學(xué)不到。
偉大的程序員希望他人也能知道自己所掌握的知識(shí)。他們并不擔(dān)心會(huì)因此而失去優(yōu)勢(shì),因?yàn)樗麄兿嘈糯蠹叶紩?huì)這樣做。偉大的程序員樂意看到他們的同伴成長(zhǎng)、成功。一個(gè)公司,它應(yīng)該被一群喜歡知識(shí)共享的人組成,就像人們?cè)谶\(yùn)動(dòng)場(chǎng)上,讓團(tuán)隊(duì)的每個(gè)對(duì)員都強(qiáng)大起來,整個(gè)團(tuán)隊(duì)才會(huì)強(qiáng)大。
伸出援助之手
偉大的程序員從來不會(huì)說“這不關(guān)我的事”。他們總是愿意伸出援助之手。他們經(jīng)常在做自己的工作之余,去幫助那些編程新手。如果有件任務(wù)必須按時(shí)完成,而又沒有其他人能勝任,偉大的程序員會(huì)主動(dòng)承擔(dān)起這項(xiàng)任務(wù)。他們從來不嘲笑來請(qǐng)求幫助的人,即使問題是那么的小、那么無意義、無價(jià)值。偉大的程序員重視他們的團(tuán)隊(duì),愿意為團(tuán)隊(duì)做任何的事情。不管是要去寫1,000行的代碼,還是去編輯一個(gè)圖片,偉大的程序員都會(huì)立即站出來幫助完成。
十年磨一劍
偉大的程序員不是天生的,是后天煉成的。他們是本文上面提到的那些因素造就的,加上還要通過努力的工作。如果你是剛剛意識(shí)到這些,那還不晚,你仍然有充分的時(shí)間來成為一個(gè)偉大的程序員。耐心是關(guān)鍵。偉大的程序員不是在旦夕之間就可以成就的。有些人可能要花上數(shù)年,有些人則需要十幾年。沒有人為你寫血淚史。好的公司當(dāng)發(fā)現(xiàn)你有成為偉大程序員的潛質(zhì)時(shí),會(huì)幫助你,為你提供舞臺(tái)。而你會(huì)通過你的努力工作、讓你的團(tuán)隊(duì)進(jìn)步來證明自己。要堅(jiān)定,要自律,通往偉大程序 員的道路會(huì)很長(zhǎng)。
更新 (5 Sep 2009):針對(duì)“甘愿受苦”段內(nèi)容增加一個(gè)聲明。好像很多人都誤解了我的觀點(diǎn)。
聲明: 本文里的所有觀點(diǎn)和立場(chǎng)都是來自 Nicholas C. Zakas 本人 ,跟 Yahoo!, Wrox 出版公司, O’Reilly 出版公司, 或其他人沒有任何關(guān)系。我只代表我自己,不代表他們。
it知識(shí)庫(kù):偉大的程序員是怎樣煉成的?,轉(zhuǎn)載需保留來源!
鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。