細(xì)數(shù)編程能力的四重境界
原創(chuàng)【51CTO經(jīng)典譯文】無(wú)論你是干什么的,無(wú)論你在哪個(gè)行業(yè),都必須面對(duì)一個(gè)事實(shí):成功的人必然走過(guò)艱辛的路,必須一步一步踏踏實(shí)實(shí)前進(jìn)。對(duì)程序員而言也一樣,剛接觸編程的程序員非??释ㄒ婚T編程語(yǔ)言,有點(diǎn)編程經(jīng)驗(yàn)的程序員想掌握架構(gòu)設(shè)計(jì),有多年工作經(jīng)歷的程序員則想成為大師級(jí)人物,總之編程能力不是一蹴而就的,我將其分為四個(gè)階段,看看你現(xiàn)在處于哪個(gè)階段。
51CTO向您推薦:《程序員的十個(gè)層次 你屬于哪一層?》
第一階段:無(wú)意識(shí),無(wú)能力
John是一位年輕的Web開(kāi)發(fā)人員,他曾經(jīng)是法律系的學(xué)生,但他認(rèn)為讀法律賺不了大錢,因此轉(zhuǎn)移了方向,他總是能幫助好哥們修理好電腦,因此他認(rèn)為干這一行應(yīng)該很容易,于是他找了一個(gè)離家較近的培訓(xùn)班,以便有更多的時(shí)間學(xué)習(xí)電腦知識(shí),六個(gè)月后,他聲稱自己是Web開(kāi)發(fā)專家,他的簡(jiǎn)歷列出了幾乎所有編程語(yǔ)言,應(yīng)用軟件和平臺(tái)。
但真正要?jiǎng)邮謱?xiě)點(diǎn)代碼時(shí),John就只能復(fù)制粘貼了,他認(rèn)為要在瀏覽器中彈出警告窗口只有JavaScript可以辦到,PHP?小Case,他安裝了WordPress,Linux?他有一張Ubuntu LiveCD,他甚至肯定地表示可以創(chuàng)建一個(gè)Apache Web服務(wù)器負(fù)載均衡集群,他的知識(shí)是不分邊界的。
問(wèn)題是John不知道他學(xué)到的東西是多么膚淺,他經(jīng)常在論壇和郵件列表中滔滔不絕地發(fā)表自己的“高見(jiàn)”,當(dāng)真正的高手試圖以溫和的語(yǔ)氣指出他知識(shí)欠缺時(shí),它便迅速以生硬的語(yǔ)氣回?fù)?,固步自封的John最終一事無(wú)成。
因此John還屬于既無(wú)能力,又無(wú)良好意識(shí)的那一類人,屬于尚未入門的那種。
第二階段:有意識(shí),無(wú)能力
Mark是一位數(shù)學(xué)教師,他在一所大學(xué)教書(shū),他希望獲得更多的課程資料,因此他決定創(chuàng)建一個(gè)在線平臺(tái)分享課程資料。
Mark首先想到應(yīng)該做一些研究,獲得一些有用的信息,于是他開(kāi)始閱讀維基百科,經(jīng)過(guò)漫長(zhǎng)的閱讀后,他發(fā)現(xiàn)他的問(wèn)題其實(shí)早已有人提出了開(kāi)源的解決方案。
Mark開(kāi)始為這個(gè)項(xiàng)目忙碌,他從網(wǎng)站上找到文檔和教程開(kāi)始閱讀,自認(rèn)為有些基礎(chǔ)后,他下載并安裝了程序,當(dāng)他看到數(shù)據(jù)庫(kù)連接錯(cuò)誤時(shí),他所有的興奮勁一下全部消失了,在經(jīng)過(guò)多次嘗試后,問(wèn)題仍然沒(méi)有得到解決,Mark并沒(méi)有生氣,他有自知之明,這不是他的專業(yè)領(lǐng)域。
他前往郵件列表用他知道的知識(shí)準(zhǔn)確地描述了他遇到的問(wèn)題,他警告那些不知道在做什么的人,最好是多閱讀一些文檔,或其他人分享的技巧,不要盲目做事。
因此Mark屬于有意識(shí),但無(wú)能力的那一類人。
第三階段:有意識(shí),有能力
兩年前Adrian第一次拿起講解HTML的書(shū),他夢(mèng)想成為一名不折不扣的Web開(kāi)發(fā)人員,Adrian每天都在想如何提高自己的技能,幾個(gè)月前,他在一家網(wǎng)站找到了一份兼職工作,雖然工資很低,所做的事情也很基礎(chǔ),但他充滿了激情。
他始終相信一句話:最好的學(xué)習(xí)方法就是堅(jiān)持,嘗試,失敗,然后再嘗試。他總是研究如何把工作做好,把任務(wù)完成得更漂亮,他深知只有自己努力才能寫(xiě)出更安全的代碼,因此他會(huì)一遍又一遍地復(fù)查代碼,不厭其煩地修復(fù)每一個(gè)細(xì)小的BUG。
有一天,他為自己的一個(gè)私人項(xiàng)目寫(xiě)了30-40行代碼,過(guò)了幾天,當(dāng)他看到自己所寫(xiě)的代碼后不禁感到有點(diǎn)失望,這時(shí)他突然發(fā)現(xiàn)其實(shí)還有更好的寫(xiě)法,Adrian一時(shí)糊涂了,為什么自己就不能一次性寫(xiě)出更好的代碼呢?在經(jīng)過(guò)一翻思考后,他決定全部重寫(xiě)一遍,絕不做復(fù)制粘貼的操作。
Adrian的做法值得借鑒,他正在朝優(yōu)秀的專業(yè)人士進(jìn)化,他沒(méi)有給自己加冕任何頭銜,他知道還需要等待。
因此Adrian屬于有意識(shí),也有一定能力的那類人,已經(jīng)達(dá)到第三階段的境界。
第四階段:無(wú)意識(shí),有能力
這是編程大師追求的終極境界,就好像武林高手隨手撿起一片樹(shù)葉也能當(dāng)飛鏢殺人一樣,這不僅是知識(shí)日積月累的結(jié)果,也是個(gè)人多年歷練和琢磨的結(jié)果,達(dá)到這種境界的程序員已經(jīng)不是靠思考的方法來(lái)解決問(wèn)題了,而是“聞”,或者說(shuō)“靠感覺(jué)”,他們往往具有攻克復(fù)雜問(wèn)題的超人能力,簡(jiǎn)單的問(wèn)題基本上都遇到過(guò)無(wú)數(shù)次,難的問(wèn)題看一下也就能感覺(jué)到幾種可行的解決方法。
編寫(xiě)優(yōu)化的,可維護(hù)的和安全的代碼對(duì)他們來(lái)說(shuō)已成為習(xí)慣,設(shè)計(jì)模式都已被他們用爛,用什么語(yǔ)言和開(kāi)發(fā)工具都可以,你說(shuō)了算。
結(jié)束語(yǔ)
我想當(dāng)你知道這四個(gè)階段后,一定會(huì)有點(diǎn)羞愧,不要害怕,正如我開(kāi)篇時(shí)就說(shuō)過(guò),大師(或高手)不是一日練就的,先達(dá)到有意識(shí),有能力的階段,堅(jiān)持下去,你自然就會(huì)達(dá)到無(wú)意識(shí),有能力的境界。
值得一提的是,還有一些學(xué)者提出了第五階段,即要有能力將自己掌握的知識(shí)和技巧教授或傳輸給其他人,就好像武俠小說(shuō)中一代大師在Over時(shí)要將自己的功力強(qiáng)制輸送給一個(gè)有潛力的后生一樣,必須要具有準(zhǔn)確的眼光,找到那個(gè)有潛力的人。
原文標(biāo)題:The four stages of programming competence
【編輯推薦】
- 程序員,你適合做一個(gè)項(xiàng)目經(jīng)理嗎?
- 程序員的十大技術(shù)煩惱
- 深入剖析Flex程序員的四重境界
- PHP程序員如何突破成長(zhǎng)瓶頸
- 是什么成就了一名“高級(jí)”程序員?