編程成就:開發人員如何升級
導讀:優秀的開發者如何成為偉大的?還是不要想著如何成為偉大的:一個優秀的開發者如何成為一個優秀的開發者?從第一步到第N步沒有明確的路徑,哎呀,甚至不知道第N步是什么。凡是有邏輯思維的人都明白,沒有明確的路線意味著從新手到高手將是一段艱難的旅程。在過去的幾年里,我花了很多時間來思考這個難題。下一步我該怎么做才能從優秀的開發人員變成非常優秀的開發人員?
成功到底是什么樣子的?
當我有一個明確的目標和我可以衡量的成功衡量標準時,我會做得最好。例如,我想在5 分鐘內跑完一英里,這很容易衡量,成功也很明確。我知道我現在能跑多快一英里,而且互聯網上到處都是關于如何跑得快的建議和鍛煉。我可以選擇一個培訓項目,努力學習,我非常有信心最終會達到我想要的目標。這很容易衡量,每周我都可以知道我離最終目標有多遠。 (北京網站制作)
但是如何衡量自己是否達到了“相當不錯的開發者”的水平呢?簡單地說,你不能。如上所述,這個目標非常主觀,非常廣泛,而且根本無法衡量。那么,我們如何定義可衡量的東西呢?
類似于想在5 分鐘內跑完一英里,我們可以先將自己作為一名程序員與我們期望成為的程序員進行比較。五分鐘一英里賽跑者有哪些十分鐘一英里賽跑者缺乏的經驗?高級程序員從新手程序員所缺乏的經驗中受益是什么?這里的關鍵是經驗。
作為程序員,我們都有一定的經驗可以提高我們的技能。我們學會了一種新的語言,它給了我們一種新的思維方式。或者,我們都塑造了一個完美的設計,只是看到它的不完美暴露在嚴酷的現實世界中。我們因此成為更好的程序員。所以,一些經驗會給你新的技巧。有些是不同的模式,讓您了解為什么會這樣。正是這些經驗教會了你,影響了你的思維過程,影響了你解決問題的方法,并改進了你的設計。方便的是,很容易判斷您是否有過特定的體驗。 (將這些經歷視為成就很有趣。)
這花了一些時間,但我并沒有為達到“相當優秀的開發人員”水平這一無法衡量的懸而未決的目標而煩惱。如果一個開發人員可以通過他的經驗來區分,也許我們就有了一條通往“相當優秀的開發人員”的大方向的明確路徑。我推測這樣的路徑應該是這樣的:
1.標志著從普通人成長為程序員的經歷
2.選擇一種體驗去追求
3.追求經驗完成(成就解鎖!)
4.反思經驗,深入思考。 [A]
5. 返回第2 步,這次選擇新體驗。
如何以比眾包給每個人更好的方式開始第一步。在這里,我給出了一些編程成就,松散地分組。我會在文末給你多種方式,讓你創造自己的想法。
1.學習多種編程范式:
用匯編語言寫一個程序
用函數式編程語言編寫應用程序
用面向對象的語言編寫應用程序
用基于原型的語言編寫應用程序
用邏輯編程語言編寫應用程序
使用Actor 模型編寫應用程序
用Forth 語言寫一個應用程序[C]
2.體驗不同平臺編程的來龍去脈:
我寫了一個普通的網絡應用
我寫了一個普通的桌面應用程序
我寫了一個普通的手機應用
編寫一個普通的嵌入式應用程序
寫了一個實時系統
3. 增強對開發者常用模塊的理解:
編寫了一個網絡客戶端(HTTP、FTP 等)
寫了一個設備驅動程序
寫一個B樹數據庫
包裝現有庫以獲得更好(和更愉快)的用戶體驗
編寫提供插件模型的應用程序或框架
筆試框架
書面編程語言
4. 讓自己了解公案、套路和歲月的智慧:
完成五個代碼型
完成您想學習的語言的編程公案
參加代碼撤退
閱讀SICP 并完成所有練習
5.開源編程:
共享開源項目的代碼
接受補丁
獲得對重要開源項目的提交權限
發布一個開源項目
為開源項目實施Refactotum
6. 教人學[D] :
發表有啟發性的演講
在本地用戶組中發言
在會議上發言
教授培訓課程
發布教程
發布一個開源項目的constructive code review
寫一本編程的書
關于成就
現在,讓我們來繼續探討一會兒。注意每一個成就都是可以衡量的。每一個都是一個布爾值:你完成或者沒有完成。例如,很難衡量你是否學過一個函數式編程語言,但是卻可以輕易的知道你是否用函數式編程語言寫過一個程序。后者是客觀察、可測量、布爾的。這種可衡量性意圖適用所有這些成就。
需要承認的是,這種可衡量性并不完美。比如在一個會議演講這個成就:你完全可以做到一般稱職的時候就說你贏得了這份成就。但是如果你正在讀這篇文字,我假設你是想要變得卓越。你知道只是為了把一項從清單中劃掉而號稱做到是非常遜的。(高端網站建設)
既然我們談到了改進
既然我們談到了改進,你會如何改進這個清單呢?
這個清單現在在github上作為一個gist,你可以任意的fork它然后添加更多的成就(確保你加的成就是可以衡量的)。或者fork它然后標記那些你已經征服了的成就。你還可以標記你正在做的一項,(例如,你可以去看看這些forks:Justin Blake, Pierre Chapuis, Yann Esposito. )
或者發表評論:什么經歷將你塑造成一個更好的開發者?以及你會接下來去解鎖哪一個成就?
注釋
[A]我無法充分的強調第4步。為了獲得幾乎每個成就,你應該停頓和反思這些經歷,然后再移動到下一個。反思。問問自己,你學到什么,花些時間來寫下這些想法。更好的是,與別人分享,并且對比其他人也已經獲得這一成就的人,看看你的學習收獲的如何。
[B]可以去coderwall.com看看基于成就的模型這些方面的,很有意思。
[C]Forth基本上是自己的范式
[D]突然想到了這句:“寓學于教”——Paulo Freire
我們專注高端建站,小程序開發、軟件系統定制開發、BUG修復、物聯網開發、各類API接口對接開發等。十余年開發經驗,每一個項目承諾做到滿意為止,多一次對比,一定讓您多一份收獲!