關於我們這個行業,“是什麽品質使得優秀的程序員區別於其他程序員?”是最難回答的問題之壹。
最近我閱讀了EranGalperin的《WhatMakesagoodprogrammer》,很有感觸,於是北大青鳥/想和大家分享壹下我認為團隊中每個人都需要具備的基本技能和特質。
1.適應性和靈活性很多開發團隊都在喊我們需要靈活的開發人員——尤其是在軟件開發初期這類人才更為重要。
如果妳平時是搞UI編程的,那麽我們希望妳能深入到數據持久層。
我們甚至可能還會要求妳去做壹些測試。
妳可能是作為壹個Java程序員而聘用的,但我們希望下壹個應用程序妳能用.NET寫?擅長多任務和成為某個領域的專家壹樣重要。
在當時可能會讓妳想抓狂,但是挨過這段日子之後,妳的簡歷絕對會讓妳的下壹個雇主心動不已。
2.熱情也許妳上大學學習計算機科學這個專業,只是因為妳聽說這行業能賺錢。
幾年之後,當妳發現回報並沒有妳想象得那麽豐厚的時候,可能就會開始沮喪,提不起幹勁來。
偉大的程序員會真心實意地愛著編程——可以不喜歡現在正在搞的代碼——但總的來說,妳應該成為壹個享受於構建壹些東西來解決問題的人。
當有時間空下來可以喝杯咖啡的時候,妳會去逛逛類似於JavaLobby的網站,尋找提高自己的途徑。
妳會對谷歌最新的舉措,市面上剛出來的Web框架感興趣,津津樂道。
3.用科學武裝頭腦的實幹家《ThePragmaticProgrammer》是軟件行業中最重要的書籍之壹。
它不僅不局限於某壹種特定的編程語言,而且還為我們提供了壹系列的指南,是壹部非常經典的著作。
在團隊工作時我們需要考慮到自己的行為所帶來的後果,拒絕“破窗理論”。
對工作保持壹貫的高標準——測試、編碼和文檔等等——然後漸漸帶動整個的團隊,蔚然成風。
保持新鮮感的最好辦法是用科學的思維武裝頭腦。
任何問題都可以被分解,所有語言都有著壹系列相似的特征。
之所以有些人能做到這壹點,而其他人卻不能的主要原因是在於,妳是否保持對自己的質疑:這個代碼片段還能不能寫得更好?是不是可以用壹種更有條理的方式呈現這些信息?我可以鄭重地告訴妳,這些答案幾乎總是肯定的,所以踏踏實實地解決這些“自我質疑”吧!4.良好的組織安排能力壹個優秀的程序員會把事情安排得井井有條,甚至每天下班前都會列出明天的任務。
這樣如果需要做別的事情的話,至少可以參考這個清單,看看放到什麽時候做合適,或者會不會對其他任務造成影響。
ps,這裏推薦壹個蠻有用的工具——Mylyn,壹個基於任務的Eclipse插件。
在處理代碼和文檔方面也需要良好的組織安排能力。
如果我們能夠有組織地進行封裝、設計、命名類和變量,不但有助於團隊成員的理解,還能讓妳幾個月後的再次查看,不至於像是在閱讀他人的代碼。
5.通情達理,平易近人我們大多數在團隊環境中工作的,所以我們必須要具備人際交往的能力。
所有被尊重的偉大程序員個個都平易近人。
妳需要騰出時間為他人提供幫助,不管是有問題的代碼,還是項目經理想了解壹下妳的預估。
除此以外,妳還應該盡量做到表達清晰——以免交流之後,對方反而對問題更加困惑了。