尋找成為開(kāi)發(fā)高手的密匙
原創(chuàng)51CTO編者按:每個(gè)程序員都希望自己在技術(shù)方面更進(jìn)一步,成為程序達(dá)人,開(kāi)發(fā)高手,技術(shù)大師……;這不僅能獲得更好的職位和更高的報(bào)酬,更重要的是,開(kāi)發(fā)高手還代表著一個(gè)開(kāi)發(fā)者對(duì)自己的肯定以及對(duì)技術(shù)夢(mèng)想的忠誠(chéng)與追求。但如何成為一個(gè)開(kāi)發(fā)高手呢?也許我們能從下面這篇博文中獲得一些啟發(fā)。作者Rick Wagner是一位Java企業(yè)級(jí)架構(gòu)師,具有二十多年的開(kāi)發(fā)經(jīng)驗(yàn)的資深程序員和COBOLE語(yǔ)言的愛(ài)好者。他在文章中指出初級(jí)程序員與***程序員的根本區(qū)別在于所掌握技術(shù)的“廣度”和“深度”,Rick認(rèn)為這是程序入門(mén)者向程序高手進(jìn)階的關(guān)鍵
【51CTO譯文】20年前,當(dāng)我剛開(kāi)始從事數(shù)據(jù)處理方面的開(kāi)發(fā)工作時(shí),我在一家為銀行承擔(dān)外包工作的公司工作。開(kāi)始我只是一個(gè)實(shí)習(xí)生,畢業(yè)后進(jìn)階為程序員的***級(jí)——“初級(jí)程序員”。其實(shí),在我們公司內(nèi)部,對(duì)這些Title都做了一些神秘的標(biāo)識(shí),比如我的初級(jí)程序員的標(biāo)識(shí)是“E07”。
不久,我發(fā)現(xiàn)了我們公司是如何對(duì)程序員的級(jí)別進(jìn)行標(biāo)識(shí)的:
◆初級(jí)程序員 = E07
◆程序員 = E08
◆高級(jí)程序員 = E09
◆超級(jí)英雄 = E10 (一種非常罕見(jiàn)的品種)
這些級(jí)別不單代表技術(shù)能力,還有薪水,當(dāng)然,薪水是與這些級(jí)別排名緊密相關(guān)的,這是不會(huì)變的,不管是20年前還是現(xiàn)在。
像所有初級(jí)程序員一樣,我希望自己用一到兩年的時(shí)間在E07級(jí)別工作,然后逐漸向上爬。但有件事一直令我困惑:那些進(jìn)階***級(jí)別的程序員與一直停留在初級(jí)的程序員之間到底有什么不同?
一天,我與一個(gè)非常棒的E10程序員一起開(kāi)發(fā)一個(gè)項(xiàng)目,他叫James。在這個(gè)項(xiàng)目的過(guò)程中,我們進(jìn)行了愉快的交談,他的話(huà)令我印象深刻:“工作都一樣,無(wú)論你是E07還是E10”。
我當(dāng)時(shí)目瞪口呆。在那一刻,我意識(shí)到,在這個(gè)項(xiàng)目中我所做的工作與James所做的一樣重要。我當(dāng)時(shí)在做數(shù)據(jù)分析和編碼,James也在做數(shù)據(jù)分析和編碼。雖然他以***級(jí)別的E10在工作,但他所用的編譯器我也在用;他所用的數(shù)據(jù)我也在用;他所用的開(kāi)發(fā)環(huán)境也跟我一樣。如果他所做的部分遇到困境,我所做的部分也將遇到阻礙。在這個(gè)項(xiàng)目中,我們同行。
別誤會(huì)我的意思,雖然所做的工作一樣,但初級(jí)程序員肯定不如那些程序大牛值錢(qián)。今天,我不得不承認(rèn)這個(gè)被廣泛接受的事實(shí)。但那時(shí),我的這個(gè)想法給我?guī)?lái)不可估量的好處,直到今天。
我試圖尋找我與E10的朋友們到底有哪些區(qū)別。我和他之間到底有哪些不同?我得到的結(jié)論是,至少在兩個(gè)方面他比我更優(yōu)秀:廣度和深度。
廣度意味著在技術(shù)方面可支配的工具、技能和方法廣泛的多。當(dāng)時(shí),我只具備一些COBOL編程經(jīng)驗(yàn);而E10的朋友不單會(huì)COBOL,還精通于匯編、JCL(一種工作控制語(yǔ)言)、操作系統(tǒng)等等多項(xiàng)技能。在今天,這等于一個(gè)只會(huì)Java的程序員站在另一個(gè)Java程序員身邊,他身邊的這位同時(shí)還知道C++、C#、Ruby、Python、Erlang以及每一種語(yǔ)言的流行框架。如果一個(gè)項(xiàng)目只是需要使用Java,那這兩個(gè)Java程序員是平等的。但如果下一個(gè)項(xiàng)目需要更多的技術(shù),這種平等的情況就會(huì)發(fā)生改變。
另一個(gè)方面是深度,是指在其工作領(lǐng)域內(nèi)的知識(shí)含量和功底。在過(guò)去,我所編寫(xiě)的COBOL代碼也許跟我的E10朋友一樣好。但如果我的程序有一個(gè)Bug,我的辦法只是看著診斷報(bào)告不斷進(jìn)行調(diào)試。我的朋友不單會(huì)做這些,他還會(huì)閱讀一些核心轉(zhuǎn)儲(chǔ)的數(shù)據(jù),將一些重要數(shù)據(jù)轉(zhuǎn)變成匯編程序(他可以從中獲得一些啟發(fā))等等。在另一個(gè)我們一起進(jìn)行界面編程的項(xiàng)目中,他可以更好的理解我們所操作的平臺(tái)并知道如何***的利用這個(gè)平臺(tái)所提供的功能。同樣,我的源碼可能跟他的沒(méi)什么太大區(qū)別,但如果我們需要向下一個(gè)級(jí)別進(jìn)階……是的,我們之間有一個(gè)明顯的分界線(xiàn)。
在今天的世界里,這可能意味著程序牛人可以知道如何調(diào)整JVM,選取有用的數(shù)據(jù)分析工具;程序牛人知道如何安裝、配置、調(diào)試和配置平臺(tái)。牛人知道如何建立編譯環(huán)境,而初級(jí)程序員也許只知道按照已經(jīng)確定的方案(平臺(tái))進(jìn)行開(kāi)發(fā)。
技術(shù)的廣度和深度,我想,我找到了成為高手的密匙。我需要學(xué)習(xí)更多并努力提到自己的廣度和深度(直到今天,我還在努力?。?。20多年前與James的一席談使我知道自己哪里需要提高,這對(duì)我在事業(yè)方面的促進(jìn)比我想象的大得多。如果你是這個(gè)行業(yè)的新手,希望上面所提到的這些能夠幫到你。
Happy Coding!
原文:A secret key to 'Senior' level programming
技術(shù)的“廣度”和“深度”是初級(jí)程序與高級(jí)程序員的***區(qū)別,也是進(jìn)階開(kāi)發(fā)高手的密匙。51CTO認(rèn)為,“廣度”和“深度”是對(duì)程序員成長(zhǎng)的一個(gè)方向性指引,不斷擴(kuò)充技術(shù)外延,努力扎實(shí)技術(shù)功底是初級(jí)程序員成長(zhǎng)為高級(jí)程序的一個(gè)重要途徑。但除此之外,您認(rèn)為還有那些重要因素能夠使初級(jí)程序員成為開(kāi)發(fā)高手?歡迎在本文下方留言評(píng)論。
【推薦閱讀】