程序員的職業素養

作者: 云風  發布時間: 2012-12-27 17:29  閱讀: 5000 次  推薦: 15   原文鏈接   [收藏]  

  程序員是可以當作一生的職業。但首先,你需要熱愛編程,而不是把它作為完成其他人生目標的工具。

  既然計劃投入數十年的人生,那么一定會不斷的反思自己在哪些方面的努力是更有效率的。換句話說,現在的你,和十年前的自己到底有哪些不同,十年后又怎樣超越現在的自己?

  我的職業生涯還遠遠沒有過半,深深感覺沉淀不足。總會有新的理解迭代到舊有的想法上。這次應邀來用簡短的文字探討這個深刻的話題,只能盡力來表達一些現階段的淺薄之見。

  我認為,一個程序員,無論他在哪個子領域工作,都需要在三個方面提高自己。

  首先,保持對未知領域的好奇心,盡力開闊視野。

  如果你只精通一門編程語言,那么就趕快去學習另一門,最好和之前的那門語言親緣關系越遠越好。這可以讓你從不同的視角去看待過去的問題。

  如果你只專注于一個領域,那么深入研究一下其它領域會有很大的幫助。大多數人都喜歡在自己熟悉的知識結構下解決問題,因為全新的東西總有學習門檻,你需要去了解很多基礎知識才能開始實際的工作。在大腦里把相關信息組織起來輕松調配,和借助外部資料是很不一樣的。后者要經歷一個相當痛苦的過程。但是,一旦你習慣經常學習,可以逐步掌握一套自己的方法減輕這種痛苦。大多數人實際會遇到的領域有限,看似沒有價值的知識,學習起來更為困難。要做到這點,需要保持單純的好奇心。

  其次,把握各個層次上的細節。

  盡可能向人解釋清楚系統每個層面的運行。硬件如何調度機器指令;數據在硬盤、內存、緩存、CPU 間的流向;代碼如何被編譯鏈接,代碼經歷了何種過程被加載到內存,JIT 怎樣加速字節碼的運行;操作系統怎樣管理線程、處理 IO ;軟件用到的第三方模塊和工具如何在處理數據;在網絡環境中,數據流的通訊協議;你的代碼中每個模塊逐個層次中的相互關系……

  對細節掌握的越多,思路會越清晰。在每個層次上,你會看到不同層次的設備對上一層業務邏輯的抽象方式,直到最終你直接面對的業務。對業務的抽象能力,不僅僅來至于你對業務的熟悉程度。這種能力是隨同細節把握能力同時俱備的。了解的越多,就越能知道你經手工作的合理性。

  第三,對代碼的直覺。

  優秀的程序員能很快的發現性能熱點、找到系統崩潰的原因、找出不合理的代碼…… 準確的估算能力非常重要,快速心算出每個模塊的開銷和輸入的數據量之間的關系;在寫下每行代碼時能夠判斷其對性能的影響、以簡潔去挑戰各個層次模塊間的耦合復雜度。

  培養這種能力,以我個人淺見,除了不停不斷的編寫代碼,別無良方。在寫代碼的同時,時刻保持著思考,對壞味道的地方零容忍。只要在最早的時刻動手,任何推倒重來的代價都不會太大;而放任它們在那里只會讓局面演變到不可收拾。

  保持自己總有代碼可寫,不斷的去發掘自己新的興趣點,拓展新領域。單純一些,編程本身就是一件有趣的腦力活動,而不必僅僅為了解決一些問題而寫程序。

15
0
 
標簽:程序員
 
 

文章列表

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 大師兄 的頭像
    大師兄

    IT工程師數位筆記本

    大師兄 發表在 痞客邦 留言(0) 人氣()