|
程序員是可以當(dāng)作一生的職業(yè)。但首先,你需要熱愛(ài)編程,而不是把它作為完成其他人生目標(biāo)的工具。
既然計(jì)劃投入數(shù)十年的人生,那么一定會(huì)不斷的反思自己在哪些方面的努力是更有效率的。換句話(huà)說(shuō),現(xiàn)在的你,和十年前的自己到底有哪些不同,十年后又怎樣超越現(xiàn)在的自己?
我的職業(yè)生涯還遠(yuǎn)遠(yuǎn)沒(méi)有過(guò)半,深深感覺(jué)沉淀不足。總會(huì)有新的理解迭代到舊有的想法上。這次應(yīng)邀來(lái)用簡(jiǎn)短的文字探討這個(gè)深刻的話(huà)題,只能盡力來(lái)表達(dá)一些現(xiàn)階段的淺薄之見(jiàn)。
我認(rèn)為,一個(gè)程序員,無(wú)論他在哪個(gè)子領(lǐng)域工作,都需要在三個(gè)方面提高自己。
首先,保持對(duì)未知領(lǐng)域的好奇心,盡力開(kāi)闊視野。
如果你只精通一門(mén)編程語(yǔ)言,那么就趕快去學(xué)習(xí)另一門(mén),最好和之前的那門(mén)語(yǔ)言親緣關(guān)系越遠(yuǎn)越好。這可以讓你從不同的視角去看待過(guò)去的問(wèn)題。
如果你只專(zhuān)注于一個(gè)領(lǐng)域,那么深入研究一下其它領(lǐng)域會(huì)有很大的幫助。大多數(shù)人都喜歡在自己熟悉的知識(shí)結(jié)構(gòu)下解決問(wèn)題,因?yàn)槿碌臇|西總有學(xué)習(xí)門(mén)檻,你需要去了解很多基礎(chǔ)知識(shí)才能開(kāi)始實(shí)際的工作。在大腦里把相關(guān)信息組織起來(lái)輕松調(diào)配,和借助外部資料是很不一樣的。后者要經(jīng)歷一個(gè)相當(dāng)痛苦的過(guò)程。但是,一旦你習(xí)慣經(jīng)常學(xué)習(xí),可以逐步掌握一套自己的方法減輕這種痛苦。大多數(shù)人實(shí)際會(huì)遇到的領(lǐng)域有限,看似沒(méi)有價(jià)值的知識(shí),學(xué)習(xí)起來(lái)更為困難。要做到這點(diǎn),需要保持單純的好奇心。
其次,把握各個(gè)層次上的細(xì)節(jié)。
盡可能向人解釋清楚系統(tǒng)每個(gè)層面的運(yùn)行。硬件如何調(diào)度機(jī)器指令;數(shù)據(jù)在硬盤(pán)、內(nèi)存、緩存、CPU 間的流向;代碼如何被編譯鏈接,代碼經(jīng)歷了何種過(guò)程被加載到內(nèi)存,JIT 怎樣加速字節(jié)碼的運(yùn)行;操作系統(tǒng)怎樣管理線(xiàn)程、處理 IO ;軟件用到的第三方模塊和工具如何在處理數(shù)據(jù);在網(wǎng)絡(luò)環(huán)境中,數(shù)據(jù)流的通訊協(xié)議;你的代碼中每個(gè)模塊逐個(gè)層次中的相互關(guān)系……
對(duì)細(xì)節(jié)掌握的越多,思路會(huì)越清晰。在每個(gè)層次上,你會(huì)看到不同層次的設(shè)備對(duì)上一層業(yè)務(wù)邏輯的抽象方式,直到最終你直接面對(duì)的業(yè)務(wù)。對(duì)業(yè)務(wù)的抽象能力,不僅僅來(lái)至于你對(duì)業(yè)務(wù)的熟悉程度。這種能力是隨同細(xì)節(jié)把握能力同時(shí)俱備的。了解的越多,就越能知道你經(jīng)手工作的合理性。
第三,對(duì)代碼的直覺(jué)。
優(yōu)秀的程序員能很快的發(fā)現(xiàn)性能熱點(diǎn)、找到系統(tǒng)崩潰的原因、找出不合理的代碼…… 準(zhǔn)確的估算能力非常重要,快速心算出每個(gè)模塊的開(kāi)銷(xiāo)和輸入的數(shù)據(jù)量之間的關(guān)系;在寫(xiě)下每行代碼時(shí)能夠判斷其對(duì)性能的影響、以簡(jiǎn)潔去挑戰(zhàn)各個(gè)層次模塊間的耦合復(fù)雜度。
培養(yǎng)這種能力,以我個(gè)人淺見(jiàn),除了不停不斷的編寫(xiě)代碼,別無(wú)良方。在寫(xiě)代碼的同時(shí),時(shí)刻保持著思考,對(duì)壞味道的地方零容忍。只要在最早的時(shí)刻動(dòng)手,任何推倒重來(lái)的代價(jià)都不會(huì)太大;而放任它們?cè)谀抢镏粫?huì)讓局面演變到不可收拾。
保持自己總有代碼可寫(xiě),不斷的去發(fā)掘自己新的興趣點(diǎn),拓展新領(lǐng)域。單純一些,編程本身就是一件有趣的腦力活動(dòng),而不必僅僅為了解決一些問(wèn)題而寫(xiě)程序。
it知識(shí)庫(kù):程序員的職業(yè)素養(yǎng),轉(zhuǎn)載需保留來(lái)源!
鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。