作為一名軟體開發人員 你該如何磨快你的鋸子?
“磨鋸子”實際上是一個代名詞,泛指一切程式設計以外的活動(不必編寫程式碼),而這些活動(從理論上來說)能使你成為一名更出色的程式設計師。這個詞源自於Covey的一本書:《高效能人士的7個習慣》(《The 7 Habits of Highly Effective People》)。
有個人在山間漫步,偶遇一位伐木工。他便停下來觀察這位伐木工,看他熱火朝天地鋸一棵很大的樹。他發現這位伐木工幹得大汗淋漓,不停地鋸來鋸去,但是沒有絲毫進展。這個過路人注意到伐木工所使用的鋸子已經和黃油刀一樣鈍了。於是,他就對伐木工說:“不好意思,伐木工先生,我看著你已經很使勁地在鋸那棵樹了,但為什麼進展不大呀?”伐木工回答道:“是呀……我也知道。不過,看起來這棵樹不好對付啊!”此時,汗正從他的眉毛間滴落下來。過路人於是提醒道:“伐木工先生,這不是樹的問題,是你的鋸子太鈍了。這麼鈍的鋸子什麼東西也鋸不斷的!”“我知道。”伐木工回答,“但是,我連鋸樹都忙不過來,哪有時間磨鋸子啊!”
大家都知道,如果想要在某方面有所提高,最好的辦法就是勤加練習。但是,如果你只顧著埋頭寫程式碼,連討論、反思或者學習的時間都沒有,將得不到真正的進步。你必須在磨鍊工藝與思考如何提高工藝之間找到一個適當的平衡點。
我們應該鼓勵開發團隊裡的每個成員都先去磨快他們的鋸子。正所謂磨刀不誤砍柴工。在這方面,Scott Hanselman有一些很不錯的建議。其實還有個更簡單的方法,就是你此刻正在做的事情:閱讀程式設計相關的部落格或書籍。如果你有一個開放的心態,你可以用這種方法來磨快你的鋸子,正如Reginald Braithwaite所述:
我們通常是這樣做的:每當讀起一篇博文,我們會把我們認同的內容一點一點讀下去,而只要有一個論點不符合我們自己的世界觀,我們就會很較真。如果整篇文章的主題都跟我們的成見相左,我們就會大罵作者是個白痴。老實說,如果讓我們去做銷售,結果會一塌糊塗,因為我們一碰到不認同我們的人就會匆匆放棄。
我建議我們要向銷售人員學習。當我們在讀一篇帖子,或者一本書,或者學習一門新的語言時,我們應該假定它的某些部分(甚至絕大部分)並不新穎。讓我們假設我們肯定會討厭它的某些部分。與此同時,我們也要從自身利益出發去考慮:如果我們能從中找到哪怕只有一點對我們有用的東西(它能讓我們變成更好的程式設計師),我們就已經賺了。
這就是我們對一篇博文應有的期待。明白這一點很重要!如果一篇帖子中能有一樣有價值的東西,我們就賺大了。其實我們不該這麼貪心—只要我們在讀了100篇帖子後能學到一樣有價值的新東西,我們就已經賺大了。
如果你正在尋找優秀的程式設計部落格來磨快你的鋸子(或者至少能激發你的潛力和興趣),我可以向你推薦兩個很棒的專門針對程式設計的連結聚合網站,相信它們一定可以幫助你。
一個是Hacker News(http://news.ycombinator.com)。我強烈推薦這個網站。
Hacker News是Paul Graham想出來的,所以這個網站多多少少反映了他在Y Combinator的投資興趣,以及他對諸如創業公司、企業事務之類的關注。Paul對網站內容的審閱是非常認真的,因此除了那個很有代表性的搖滾(Diggy-style)投票機制外,還有一個由他親自挑選的編輯組成的祕密集團(我喜歡把他們想象成忍者黑幫,“沒有人會承認他們仍然存在!”)他們會刪除標記過的帖子。更重要的是,這個網站上關於文章內容的討論都非常理性,幾乎沒有任何嘈雜聲和罵戰。
另外一個是programming reddit(http://www.reddit.com/r/programming)。相比之下,那裡的討論更加雜亂,像狂野的西部,任何事情都變得很敏感,而且它僅靠社群裡或頂或踩的投票機制來把關。不過,我們往往能從這個網站發掘出各種各樣程式設計師特別感興趣的連結。
當然,過多地磨鋸子,或者隨意地、沒有目標地磨鋸子,會變成另外一種形式的延誤。然而,如果一個程式設計師對這些完全不感興趣,那也是一個巨大的危險訊號。就像Peter Bregman說的那樣,“痴迷可以是一件好事”:
人們成功常常不是因為他們克服了自己的機能障礙,反而是這些障礙成就了他們。痴迷是通向成功的一個最明顯的風向標。如果理解了一個人的痴迷,你就會理解他最自然的動機—他會為之堅持走到世界的盡頭。
對磨鋸子有些痴迷是沒有問題的,但前提是,你的痴迷是類似Hackers News的網站上積極地提交和討論與程式設計相關的文章。
作為一名程式設計師,你對如何磨快鋸子有更好的建議嗎?
相關文章
- @程式設計師,你該如何磨快你的鋸子程式設計師
- 如何成為更好的軟體開發人員
- 作為軟體開發人員真的需要學歷嗎
- 十步讓你成為一名優秀的Web開發人員Web
- 如何成為一名Java自由開發人員Java
- 如何成為一名專家級的開發人員
- 我的測試之旅:(1)起點——作為軟體開發人員
- 作為開發人員,這四類Code Review方法你都知道嗎?View
- 作為IT從業人員,你需要什麼證?
- 軟體開發人員通病
- 如何透徹分析Java開發人員-給將成為程式猿的你們!Java
- 作為JavaScript開發人員,這些必備的VS Code外掛你都用過嗎?JavaScript
- 作為JavaScript開發人員,這些必備的VS Code外掛你都用過嗎JavaScript
- 作為軟體測試人員,這些常用的效能測試工具你一定要知道!!!
- 那些年你追過的女神:開發人員應該懂多少運維運維
- 【專題1:電子工程師 之 軟體】 之 【15.軟體開發流程(b)- 人員協作】工程師
- 給開發人員的幾點建議:如何理解你的DBATHBAT
- 如何量化考核軟體開發人員績效薦
- 作為一個開發人員,你需要了解的一些HTTP基礎知識HTTP
- 做為開發人員 你為什麼應當關心設計
- 軟體測試新人,你該如何找到方向?
- [北京]招聘軟體開發人員(java)Java
- 做一名iPhone自由開發人員iPhone
- 作為嵌入式/軟體開發工程師你需要知道的東西工程師
- 軟體開發人員的“七重苦”
- 軟體開發人員的組織與分工
- 軟體開發中,如何為你的程式碼構建三層防護體系
- 作為一名前端開發工程師,你必須掌握的WEB模板引擎:Handlebars前端工程師Web
- 軟體開發人員如何提升自己的架構設計能力?架構
- 前端開發人員為什麼應該拿高薪前端高薪
- 軟體開發人員如何走好職業生涯前幾步?
- 如何判斷自己是否是一名優秀開發人員?
- 81%的開發人員表示知道軟體存在缺陷
- 劃分軟體開發人員的兩種尺度
- 軟體開發人員的組織與分工(轉)
- 為什麼 Python 開發人員應該使用 PipenvPython
- 每位開發人員都應該成為架構師架構
- 軟體工程--為什麼軟體開發方法論讓你覺得糟糕軟體工程