站長工具,就用查一把!
收錄查詢  關鍵詞排名  Alexa排名  PR檢測  友情檢測  IP反查  WHOIS查詢    更多查詢  
  收藏  最近查詢 查一把
信息分類 首頁 » 資訊信息

好站推薦

IT新聞

  業界猜想

  名人名企

建站推廣

  站長創業

  運營推廣

設計編程

  美工設計

  開發編程

編程目標:開發人員如何提高能力
信息來源:查一把 發布時間:2011/9/15

一個優秀的程序員如何能練就成一個卓越的程序員?

先等等,暫時不談卓越,先談談如何成為一個優秀的程序員。

從第一步到第N步并沒有明確的路線圖。事實上,第N步到底是什么還不確定。就像邏輯型思維的開發者一樣,缺乏明確的目標會讓從入門到精通的道路變得異常崎嶇。

過去的幾年中,我花了不少時間來思索這個問題。我該如何從一名能力尚可的程序員修煉成一個真正優秀的程序員呢?

成功是什么?

當我對成功有清晰的目標、量化的標準的時候,我就能發揮我的最大潛力。比如,我想實現5分鐘跑完一英里這個目標。好吧。這個路程很容易測量,成功的界限分明。我很容易知道跑一英里需要多久,網上也到處都是提高跑步速度的建議和訓練計劃。我可以選擇一個計劃并付諸努力,我深信我最終能夠實現目標。這是一個神奇的可量化的計劃,因此,每個星期我都可以檢測到距離我的終極目標還有多遠。

但是如何界定你是否成為了“足夠優秀的程序員”呢?一言蔽之,難以界定。這個目標從一開始就太主觀,太模糊,太簡單,無法量化。那么我們能找到能量化的東西嗎?

我們都有過一些提高我們技能的經驗。我們可能曾經學過一門開啟我們思路的新語言。我們也可能曾經有過一套完美的設計方案,但直到最終投入生產時才發現它漏洞百出,但我們因此而成長。有一些經驗增長你的技能,有一些讓你遇見反模式(注:反模式是指軟件開發中經常被用到的但效率不高的模式。),并讓你認知它們為什么是反模式。正是這些經驗給你上了課,影響了你的思維模式,改變了你解決問題的方法,最終改善了你的設計。而你是否獲得了某種經驗,這是顯而易見的。把經驗當做是我們的收獲或許很有趣。

所以,雖然這需要付出時間,但我現在學會了適應成為“一個真正優秀的程序員”這一目標的不可量化性。如果一個程序員依靠經驗取得了某些進展,那么我們就能有一個清晰的路線圖來實現“成為真正優秀的程序員”這一終極目標。我想這個路線圖應該是這樣的:

1.確定哪些技能能夠幫助程序員進步

2.著重積累某一個技能的經驗

3.直到這個技能完全掌握(成功攻關!)

4.反復思考這個技能,直到融會貫通[A]

5.重新回到第二步,選擇一項新的技能

如何更好的開始第一步呢?下面列出了一些編程目標,我粗略的分了一下類。[B]我會在本文的結尾和你一起討論下想法。

編程目標

學習不同的編程語言范例

1.用匯編語言寫一個應用

2.用函數式語言寫一個應用

3.用面向對象語言寫一個應用

4.用基于原型的語言寫一個應用

5.用邏輯編程語言寫一個應用

6.用Actor模型寫一個應用

7.用Forth語言寫一個應用[C]

擴寬對我們開發時使用的基本組件的了解:

1.寫一個網絡客戶端(如HTTP, FTP客戶端)

2.寫一個設備驅動程序

3.寫一個B叉樹數據庫

4.改進一個現有的庫包,來獲得更好的用戶體驗

5.寫一個提供插件模型的應用或框架

6.寫一個測試框架

7.寫一個程序語言

更上一層樓:不斷的練習,積累

1.完成五個code katas (Kata是來自日本武術的概念,通過不斷的重復和練習來提高技藝)

2.用Koan編程來學習一種你想學的語言

3.參加編程進修課程

4.閱讀SICP,完成所有的練習

編寫程序并開源:

1.為開源項目貢獻力量

2.讓別人接受你的補丁

3.獲得一個重要的開源項目的提交權限

4.發布一個開源項目

5.優化一個開源項目的代碼,詳細記錄并分享出來

通過教導別人來提高自己[D]

1.做一個繪聲繪色的演講

2.在一個本地用戶組面前演講

3.在一個會議上演講

4.開設一個訓練課程

5.發布一個教程

6.發布一個開源項目的有建設性代碼審核

7.寫一本有關編程的書

關于這些目標

現在讓我們來多說一點。注意這些目標都是可量化的。每一個都有個布爾值:你要么完成了,要么沒有。例如,雖然很難界定你是否掌握了一門函數式語言,但是非常容易確定你是否用函數式語言寫了一個應用。后者是可觀測的,可量化的,布爾值。以上所有的目標都具有這一特性──可量化性。

無可否認,這個可量化性并非無懈可擊。就拿在一個會議上進行演講來說,你當然可以做一個很爛的演講,然后還可以拍拍胸脯說你實現了這個目標。不過既然你是我這篇博客的讀者,我假設你想成為一個優秀的程序員,你是一個對自身要求很高的人,不會是僅僅完成了某個任務就沾沾自喜的人。

既然我們在討論改善,那么你對這份列表有什么改進意見呢?

這個列表作為GitHub的有效依據,你們可以隨意fork并添加更多的成績。(確保它們是可量化的。)

或者fork之后,你可以劃分出你已經取得的成績。你還可以為你正在努力的目標做上標記。(可以參考Justin Blake, Pierre Chapuis, Yann Esposito的分支)

你也可以寫評論,什么經驗讓你變得更為優秀,以及你希望下一步實現什么目標。

注釋

[A]不得不強調下第四步。想要更出色的實現目標,你必須在你進行下一步之前停下來回想一下,問問自己到底學到了什么。花些時間寫下些想法,更好的做法是,和他人分享,與其他完成同樣任務的人作個對比,看看你的學習效果。

[B]在coderwall.com這個網站,你可以更詳細了解以目標為驅動的學習方法。

[C]Forth本身就是一個語言范例。

[D]我想起Paulo Freire 的一句名言:“傳授知識本身就是在學習傳授知識的藝術。”

原文:Jason Rudolph 翻譯:伯樂在線 敏捷翻譯 - 唐小娟

如需轉載,但請注明原文/譯文出處、譯文超鏈接和譯者等信息,否則視為侵權,謝謝合作!

轉載請注明出處:站長工具 信息來源:http://www.zuntuo.tw/Content/72
網友點評
b北京赛车视频