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