編程成就:開發人員如何升級

http://sd.csdn.net/a/20111109/307185.html

如果一個開發者能夠以他的經歷來區分,也許我們已經有了一個明確定義的路徑朝向“相當優秀的開發者”這麼一個大方向了。我揣測這麼一條路徑,應該是這樣子的:

1.標誌着從一個普通人成長成程序員的經歷    

2.選擇某種經歷去追求    

3.追求的經歷完成了(成就解鎖了!)    

4.經歷的反思,深入的思考。[A]    

5.返回第2步,這次是選擇一個新的經歷。

如何以一種更好的方式開始第一步,而不是衆包給各位。這裏我給出了一部分編程的成就,鬆散的分了組。我會在文末爲你提供多種方式,讓你來創造你自己的想法。

成就

1.學習多種編程範式:    

2.體驗不同平臺上編程的來龍去脈:    

  • 寫過一個普通的Web應用    
  • 寫過一個普通的桌面應用    
  • 寫過一個普通的手機應用   
  • 寫過一個普通的嵌入式應用   
  • 寫過一個實時系統

3.增強你對開發人員所常用的模塊的理解:    

  • 寫過一個網絡客戶端(HTTP,FTP等)    
  • 寫過一個設備驅動    
  • 寫過一個B-tree 數據庫    
  • 包裝現有的一個庫,以提供更好(更愉快)的用戶體驗    
  • 編寫一個應用程序或框架,提供插件模型    
  • 寫過測試框架    
  • 寫過編程語言

4.讓自己知道koans,katas,以及歲月的智慧: 

完成過五個 code katas    

5.開源編程:    

  • 爲一個開源項目共享代碼    
  • 補丁被接受    
  • 在一個重要的開源項目中得到提交權限    
  • 發佈一個開源項目    
  • 對一個開源項目實施Refactotum

6.通過教授別人來學習[D]:    

  • 發表一次啓迪性的講話    
  • 在一個本地用戶組中演講    
  • 在一個會議中演講    
  • 教授一次培訓課程    
  • 發佈一個教程    
  • 發佈一個開源項目的constructive code review    
  • 寫一本編程的書

關於成就

現在,讓我們來繼續探討一會兒。注意每一個成就都是可以衡量的。每一個都是一個布爾值:你完成或者沒有完成。例如,很難衡量你是否學過一個函數式編程語言,但是卻可以輕易的知道你是否用函數式編程語言寫過一個程序。後者是客觀察、可測量、布爾的。這種可衡量性意圖適用所有這些成就。

需要承認的是,這種可衡量性並不完美。比如在一個會議演講這個成就:你完全可以做到一般稱職的時候就說你贏得了這份成就。但是如果你正在讀這篇文字,我假設你是想要變得卓越。你知道只是爲了把一項從清單中劃掉而號稱做到是非常遜的。

既然我們談到了改進

既然我們談到了改進,你會如何改進這個清單呢?

這個清單現在在github上作爲一個gist,你可以任意的fork它然後添加更多的成就(確保你加的成就是可以衡量的)。或者fork它然後標記那些你已經征服了的成就。你還可以標記你正在做的一項,(例如,你可以去看看這些forks:Justin Blake, Pierre ChapuisYann Esposito. )

或者發表評論:什麼經歷將你塑造成一個更好的開發者?以及你會接下來去解鎖哪一個成就?

註釋

[A]我無法充分的強調第4步。爲了獲得幾乎每個成就,你應該停頓和反思這些經歷,然後再移動到下一個。反思。問問自己,你學到什麼,花些時間來寫下這些想法。更好的是,與別人分享,並且對比其他人也已經獲得這一成就的人,看看你的學習收穫的如何。    

[B]可以去coderwall.com看看基於成就的模型這些方面的,很有意思。

[C]Forth基本上是自己的範式    

[D]突然想到了這句:“寓學於教”——Paulo Freire

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章