優秀的程式設計師該如何更上一層樓

2015-03-30    分類:程式設計師人生5人評論發表於2015-03-30


關於我們這個行業,“是什麼品質使得優秀的程式設計師區別於其他程式設計師?”是最難回答的問題之一。最近我閱讀了 Eran Galperin 的《What Makes a good programmer》,很有感觸,於是想和大家分享一下我認為團隊中每個人都需要具備的基本技能和特質。

1. 適應性和靈活性
很多開發團隊都在喊我們需要靈活的開發人員——尤其是在軟體開發初期這類人才更為重要。如果你平時是搞 UI 程式設計的,那麼我們希望你能深入到資料持久層。我們甚至可能還會要求你去做一些測試。你可能是作為一個 Java 程式設計師而聘用的,但我們希望下一個應用程式你能用 .NET 寫……擅長多工和成為某個領域的專家一樣重要。在當時可能會讓你想抓狂,但是捱過這段日子之後,你的簡歷絕對會讓你的下一個僱主心動不已。

2. 熱情
也許你上大學學習電腦科學這個專業,只是因為你聽說這行業能賺錢。幾年之後,當你發現回報並沒有你想象得那麼豐厚的時候,可能就會開始沮喪,提不起幹勁來。偉大的程式設計師會真心實意地愛著程式設計——可以不喜歡現在正在搞的程式碼——但總的來說,你應該成為一個享受於構建一些東西來解決問題的人。當有時間空下來可以喝杯咖啡的時候,你會去逛逛類似於 JavaLobby 的網站,尋找提高自己的途徑。你會對谷歌最新的舉措,市面上剛出來的 Web 框架感興趣,津津樂道。

3. 用科學武裝頭腦的實幹家
《The Pragmatic Programmer》是軟體行業中最重要的書籍之一。它不僅不侷限於某一種特定的程式語言,而且還為我們提供了一系列的指南,是一部非常經典的著作。在團隊工作時我們需要考慮到自己的行為所帶來的後果,拒絕“破窗理論”。對工作保持一貫的高標準——測試、編碼和文件等等——然後漸漸帶動整個的團隊,蔚然成風。
保持新鮮感的最好辦法是用科學的思維武裝頭腦。任何問題都可以被分解,所有語言都有著一系列相似的特徵。之所以有些人能做到這一點,而其他人卻不能的主要原因是在於,你是否保持對自己的質疑:這個程式碼片段還能不能寫得更好?是不是可以用一種更有條理的方式呈現這些資訊?我可以鄭重地告訴你,這些答案几乎總是肯定的,所以踏踏實實地解決這些“自我質疑”吧!

4. 良好的組織安排能力
一個優秀的程式設計師會把事情安排得井井有條,甚至每天下班前都會列出明天的任務。這樣如果需要做別的事情的話,至少可以參考這個清單,看看放到什麼時候做合適,或者會不會對其他任務造成影響。ps,這裡推薦一個蠻有用的工具——Mylyn,一個基於任務的 Eclipse 外掛。
在處理程式碼和文件方面也需要良好的組織安排能力。如果我們能夠有組織地進行封裝、設計、命名類和變數,不但有助於團隊成員的理解,還能讓你幾個月後的再次檢視,不至於像是在閱讀他人的程式碼。

5. 通情達理,平易近人
我們大多數在團隊環境中工作的,所以我們必須要具備人際交往的能力。所有被尊重的偉大程式設計師個個都平易近人。你需要騰出時間為他人提供幫助,不管是有問題的程式碼,還是專案經理想了解一下你的預估。除此以外,你還應該儘量做到表達清晰——以免交流之後,對方反而對問題更加困惑了。
通情達理也很重要。不管你在企業中是什麼職位,或多或少總要涉及到協商和談判。或許當你知道自己是正確的時候沒法心平氣和地做到這一點,但是你最好還是找到雙方都可以接受的方案,千萬不要太過於強硬。

6. 把握機會
不要寄希望於別人會來告訴你需要做哪些正確的事情。也許你就快要釋出了,卻還必須轉到最新的框架版本。如果你是熱衷於自己的工作,那麼你應該保持與時俱進。如果你擅於變通,那麼你可能願意犧牲午餐時間,或者在家中的空閒時間,來研究研究原型看看是否奏效。每一個機會都有它的成本,但是在你決定要不要使用之前先好好盤算盤算是否值得,千萬不要盲目。
把握機會也適用於你的職業生涯。這個新的創業公司是否值得加入?也許你對目前的工作感到滿意,但是你還是應該挑戰自己。每個成功人士的故事背後都有著共同的主題——抓住值得的機會,在那些錯誤的機會上學習,吃一塹長一智。

7. 引以為豪
請為你的工作感到自豪。這是來自於很多專業人士的諄諄教誨——那些我們眼中的偉人,總是認為自己的行業是最重要的,堅信我們的世界需要偉大的程式設計師。
這是很難做到的,如果你不喜歡程式設計的話,但它依然是有可能的。如果你不喜歡自己的工作,那麼為什麼不想想辦法解決呢?如果你覺得每天的日常工作就是編寫繁瑣的程式碼,那麼也許加入一個開源專案會點燃你激情的火花?你會發現那些對自己職業感到自豪的開發人員讓你望塵莫及,無論是他們的程式碼質量,還是他們在解決艱鉅任務中所享受到的快感。

當然上面這些只是我的觀點,而且並沒有涉及到任何開發工作中碰到的實際技術問題。如果我有任何遺漏和忽略的方面,歡迎各位不吝賜教。最後,你認為偉大的開發人員需要哪些優秀特質呢?歡迎留下你的看法。

譯文連結:http://www.codeceo.com/article/how-good-programmer-better.html
翻譯作者:碼農網 – 小峰
來自:部落格園
評論(1)

相關文章