|
英文原文:Programming Achievements: How to Level Up as a Developer
一個優(yōu)秀的程序員如何能練就成一個卓越的程序員?
先等等,暫時不談卓越,先談?wù)勅绾纬蔀橐粋€優(yōu)秀的程序員。
從第一步到第N步并沒有明確的路線圖。事實(shí)上,第N步到底是什么還不確定。就像邏輯型思維的開發(fā)者一樣,缺乏明確的目標(biāo)會讓從入門到精通的道路變得異常崎嶇。
過去的幾年中,我花了不少時間來思索這個問題。我該如何從一名能力尚可的程序員修煉成一個真正優(yōu)秀的程序員呢?
成功是什么?
當(dāng)我對成功有清晰的目標(biāo)、量化的標(biāo)準(zhǔn)的時候,我就能發(fā)揮我的最大潛力。比如,我想實(shí)現(xiàn)5分鐘跑完一英里這個目標(biāo)。好吧,這個路程很容易測量,成功的界限分明。我很容易知道跑一英里需要多久,網(wǎng)上也到處都是提高跑步速度的建議和訓(xùn)練計(jì)劃。我可以選擇一個計(jì)劃并付諸努力,我深信我最終能夠?qū)崿F(xiàn)目標(biāo)。這是一個神奇的可量化的計(jì)劃,因此,每個星期我都可以檢測到距離我的終極目標(biāo)還有多遠(yuǎn)。
但是如何界定你是否成為了“足夠優(yōu)秀的程序員”呢?一言蔽之,難以界定。這個目標(biāo)從一開始就太主觀,太模糊,太簡單,無法量化。那么我們能找到能量化的東西嗎?
我們都有過一些提高我們技能的經(jīng)驗(yàn)。我們可能曾經(jīng)學(xué)過一門開啟我們思路的新語言。我們也可能曾經(jīng)有過一套完美的設(shè)計(jì)方案,但直到最終投入生產(chǎn)時才發(fā)現(xiàn)它漏洞百出,但我們因此而成長。有一些經(jīng)驗(yàn)增長你的技能,有一些讓你遇見反模式(注:反模式是指軟件開發(fā)中經(jīng)常被用到的但效率不高的模式。),并讓你認(rèn)知它們?yōu)槭裁词欠茨J健U沁@些經(jīng)驗(yàn)給你上了課,影響了你的思維模式,改變了你解決問題的方法,最終改善了你的設(shè)計(jì)。而你是否獲得了某種經(jīng)驗(yàn),這是顯而易見的。把經(jīng)驗(yàn)當(dāng)做是我們的收獲或許很有趣。
所以,雖然這需要付出時間,但我現(xiàn)在學(xué)會了適應(yīng)成為“一個真正優(yōu)秀的程序員”這一目標(biāo)的不可量化性。如果一個程序員依靠經(jīng)驗(yàn)取得了某些進(jìn)展,那么我們就能有一個清晰的路線圖來實(shí)現(xiàn)“成為真正優(yōu)秀的程序員”這一終極目標(biāo)。我想這個路線圖應(yīng)該是這樣的:
- 1. 確定哪些技能能夠幫助程序員進(jìn)步
- 2. 著重積累某一個技能的經(jīng)驗(yàn)
- 3. 直到這個技能完全掌握(成功攻關(guān)!)
- 4. 反復(fù)思考這個技能,直到融會貫通[A]
- 5. 重新回到第二步,選擇一項(xiàng)新的技能
如何更好的開始第一步呢?下面列出了一些編程目標(biāo),我粗略的分了一下類。[B]我會在本文的結(jié)尾和你一起討論下想法。
編程目標(biāo)
學(xué)習(xí)不同的編程語言范例
- 用匯編語言寫一個應(yīng)用
- 用函數(shù)式語言寫一個應(yīng)用
- 用面向?qū)ο笳Z言寫一個應(yīng)用
- 用基于原型的語言寫一個應(yīng)用
- 用邏輯編程語言寫一個應(yīng)用
- 用Actor模型寫一個應(yīng)用
- 用Forth語言寫一個應(yīng)用[C]
擴(kuò)寬對我們開發(fā)時使用的基本組件的了解:
- 寫一個網(wǎng)絡(luò)客戶端(如HTTP, FTP客戶端)
- 寫一個設(shè)備驅(qū)動程序
- 寫一個B叉樹數(shù)據(jù)庫
- 改進(jìn)一個現(xiàn)有的庫包,來獲得更好的用戶體驗(yàn)
- 寫一個提供插件模型的應(yīng)用或框架
- 寫一個測試框架
- 寫一個程序語言
更上一層樓:不斷的練習(xí),積累
- 完成五個code katas (Kata是來自日本武術(shù)的概念,通過不斷的重復(fù)和練習(xí)來提高技藝)
- 用Koan編程來學(xué)習(xí)一種你想學(xué)的語言
- 參加編程進(jìn)修課程
- 閱讀SICP,完成所有的練習(xí)
編寫程序并開源:
- 為開源項(xiàng)目貢獻(xiàn)力量
- 讓別人接受你的補(bǔ)丁
- 獲得一個重要的開源項(xiàng)目的提交權(quán)限
- 發(fā)布一個開源項(xiàng)目
- 優(yōu)化一個開源項(xiàng)目的代碼,詳細(xì)記錄并分享出來。
通過教導(dǎo)別人來提高自己[D]
- 做一個繪聲繪色的演講
- 在一個本地用戶組面前演講
- 在一個會議上演講
- 開設(shè)一個訓(xùn)練課程
- 發(fā)布一個教程
- 發(fā)布一個開源項(xiàng)目的有建設(shè)性代碼審核
- 寫一本有關(guān)編程的書
關(guān)于這些目標(biāo)
現(xiàn)在讓我們來多說一點(diǎn)。注意這些目標(biāo)都是可量化的。每一個都有個布爾值:你要么完成了,要么沒有。例如,雖然很難界定你是否掌握了一門函數(shù)式語言,但是非常容易確定你是否用函數(shù)式語言寫了一個應(yīng)用。后者是可觀測的,可量化的,布爾值。以上所有的目標(biāo)都具有這一特性──可量化性。
無可否認(rèn),這個可量化性并非無懈可擊。就拿在一個會議上進(jìn)行演講來說,你當(dāng)然可以做一個很爛的演講,然后還可以拍拍胸脯說你實(shí)現(xiàn)了這個目標(biāo)。不過既然你是我這篇博客的讀者,我假設(shè)你想成為一個優(yōu)秀的程序員,你是一個對自身要求很高的人,不會是僅僅完成了某個任務(wù)就沾沾自喜的人。
既然我們在討論改善,那么你對這份列表有什么改進(jìn)意見呢?
這個列表作為GitHub的有效依據(jù),你們可以隨意fork并添加更多的成績。(確保它們是可量化的)
或者fork之后,你可以劃分出你已經(jīng)取得的成績。你還可以為你正在努力的目標(biāo)做上標(biāo)記。(可以參考Justin Blake, Pierre Chapuis, Yann Esposito的分支)
你也可以寫評論,什么經(jīng)驗(yàn)讓你變得更為優(yōu)秀,以及你希望下一步實(shí)現(xiàn)什么目標(biāo)。
注釋
[A]不得不強(qiáng)調(diào)下第四步。想要更出色的實(shí)現(xiàn)目標(biāo),你必須在你進(jìn)行下一步之前停下來回想一下,問問自己到底學(xué)到了什么。花些時間寫下些想法,更好的做法是,和他人分享,與其他完成同樣任務(wù)的人作個對比,看看你的學(xué)習(xí)效果。
[B]在coderwall.com這個網(wǎng)站,你可以更詳細(xì)了解以目標(biāo)為驅(qū)動的學(xué)習(xí)方法。
[C]Forth本身就是一個語言范例。
[D]我想起Paulo Freire 的一句名言:“傳授知識本身就是在學(xué)習(xí)傳授知識的藝術(shù)...”
-------------------------------------------------------------------
譯文出處:伯樂在線- 職場博客 - 程序員
譯文鏈接:http://www.jobbole.com/entry.php/1420
原文:Jason Rudolph 翻譯:敏捷翻譯 - 唐小娟
如需轉(zhuǎn)載,但請注明原文/譯文出處、譯文超鏈接和譯者等信息,否則視為侵權(quán),謝謝合作!
it知識庫:編程目標(biāo):開發(fā)人員如何提高能力,轉(zhuǎn)載需保留來源!
鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請第一時間聯(lián)系我們修改或刪除,多謝。