天天看點

【譯文】是什麼成就一個偉大的程式員?

原文:What Makes A Great Programmer?

  按:有很多人不關心自己天天使用的工具,這是一個階段。有一部分人開始關注工具,但卻容易忘記使用工具本來的目的。有一段時間确實迷失在各種工具之中,是以文章的開頭部分讓我很有感觸。希望大家能夠警惕類似的思維陷阱,分享此文共勉。

   我記得仿佛是昨天。那是2000年,Pargas博士站在我們的資料結構課堂上談論着一些Y資料結構的話題,同時一個SSH會話被投影到我們面前的牆 上。有人問了個問題,而他說了些類似于“好吧,如果你成為一個真正的計算機科學家你需要開始使用vi編輯器”。我想當他說這話時他在微笑,而且事後看來他 的說法完全不對,但像我當時那樣年輕又易受影響,回到宿舍就立即着手訓練自己如何使用vi。這大概持續了一陣子,但一旦我開始掌握竅門我發覺我在vi中工 作真的很快。

  快進6年,我被TextMate迷住了。我當時在做一份Java開發的工作,但同時在空閑時間學習Rails和開發 Rails項目。當時感覺似乎我讀的每篇文章和我看的每個視訊都在展示如何使用TextMate實作文本編輯之禅。事實上當時每天使用Eclipse讓我 充滿了怒火。于是我買了台Mac,在打開它的十分鐘内購買了TextMate。

  我能坦誠地說沒有哪次文本編輯器的改變使我成為了更好的程式員。

  強大的工具隻是不能使你變得“那麼”好。你使用的工具确實重要,它們确實很棒。但老虎伍茲使用俱樂部裡的垃圾裝備仍然能擊敗我們所有人,梅西光着腳也會勝過我們,納達爾也許能用一副60年代的經典木質球拍在網球場上擊敗我們全部,他也許用乒乓拍就能擊敗我。

  你積累的技巧、知識和經驗才是方程式中最重要的部分。

   那麼工具無法成就程式員,又是什麼呢?我想成就一個偉大程式員的很多方面取決于你從事的工作以及和你共事的人,但我也看到了已經在軟體開發領域獲得大量 成功的人們身上存在的、我認為值得分享的共通品質。我不确定這些是你能夠掌握的技巧還是你與生俱來的東西。但我很強烈地感覺到如果我少花時間在換文本編輯 器,多花精力在這些品質上,我會處于一個了不起的位置。

以人為本

  我認識的最好的程式員把人放在第一位。他們認識到他 們編寫的軟體是面向人的,即使這隻是某個複雜系統的後端或是除了開發者沒人會使用的協定。他們編寫文檔因為文檔是重要的。他們幫助人們使用他們的代碼。他 們願意加班處理更複雜的問題,以給予使用他們軟體的人正确的解決方案。

求知欲

  了不起的程式員對知識的饑渴令人驚訝。他們總是告訴你新的、有趣的東西。他們願意大量閱讀(無論線上線下)并且嘗試事物擷取經驗。他們不擔心嘗試新的程式設計語言或新的平台。

技巧地問題模式比對

  一旦你編寫軟體一段時間,你開始發現出現的問題非常相似于你曾經處理過的其它問題。能夠識别這些問題,并轉化過去的解決方案,使之有效于目前的局面是一種真正有價值的技能。能夠每次改進解決方案則更好。

  注意,但這并不意味着你盲目地說因為一個過去的方案有效它就一定有效。這正是有技巧地應用問題模式比對登場的地方。你必須能夠分辨何時應當應用一個過去的方案,何時不行。

一點點瘋狂

   我的兄弟在高三上過Python課程,當我問他是否喜歡時,他告訴我我成為程式員真是瘋了,這是他做過的最無聊的事情之一。某種程度上,我認為他是對 的。大部分日子我和計算機交談多于和人交談。我得一行行地把人們的叽裡咕噜轉化為可用的軟體,這個事實讓我大為震驚。不是這裡的每個人都愛做這種事,但我 遇到過的最好的程式員絕對熱愛開發軟體。

堅持

  軟體開發總是比人們預期得更慢,這很花時間。有時你不得不足夠耐心才能 鼓搗出你需要寫的代碼。有時作為開發者我們能寫出非常有意思的代碼,但有時我們得寫很多以前差不多已經寫過一百遍代碼的代碼,得到的隻有不爽。我認為最好 的開發者能繼續前進,因為他們能看到他們正在從事的事物的大局,而且他們熱愛一點一點完成最終結果的過程。

  還有一些我認為能夠成就一個真正的好程式員的品質,但這不是一個一網打盡的清單,我希望聽到你的選擇。你認為是什麼成就一個偉大的程式員?

原文連結:http://humblepg.com/chs/articles/what-makes-a-great-programmer.html

繼續閱讀