程序員的德行

程序員的德行
(文章來源:登龍門人力資源網絡 作者:趙月旺) 

  程序員一定要除了基本的道行修煉外。更重要的是德行修煉。德行=合作能力或溝通能力。對於規模大,生命週期長(特別是衍生生命週期長)的軟件項目而言,德行更重要。
  德行的標準
  軟件開發離不開企業,企業的文化決定着程序員的行爲規範,比較理想的企業文化是:
  溝通方式開放、自由、平等,個人長期發展和企業發展的有限度統一。這樣的企業文化,必然會造就具有長遠眼光和冒險精神的將帥之才。
  這方面的楷模是微軟公司,該公司全球員工平均年齡只有28歲,無論在全球的哪家公司,微軟評判人才的標準都是相同的。挑選員工的第一標準是應聘者是否具有良好的品德。微軟認爲,良好的品質是職業道德的基礎。其次,看應聘者解決問題的能力如何,在面對困難時是退縮,還是勇往直前,因爲實際工作中常有新問題需要解決。第三,要測試應聘者有沒有快速學習的能力,日新月異的技術發展要求有快速學習能力。另外,團隊精神、責任心、工作熱情、創新精神和獨立工作能力都是必須的。
  好的企業文化薰陶出來的程序員,必然是關注個人長遠發展的職業精英,這樣的程序員必然會較早地設定自己的職業發展管道。比如:
  管理序列:程序員->項目管理人員->中級管理人員->高級管理人員;
  技術序列:程序員->高級程序員->需求分析師//架構工程師//質量管理;
  市場序列:程序員->售前支持->銷售;
  與這樣的個人職業發展管道相適應的個人技能是:
  ——軟件基礎理論紮實;
  ——系統分析與設計能力較強;
  ——具有熟練的系統開發、系統測試與系統維護技術和管理技能;
  ——較強的項目管理能力和交流與組織協調能力;
  ——在企業既能適應軟件產品研發,又能適應項目管理崗位;
  ——具備獨立工作能力和創新意識。
  在項目開發過程中,有效溝通非常重要,溝通的形式多種多樣,除了常見的幾種方式外,下面講幾種比較有特點的溝通方式:
  * 歷史和現在
  如何最大程度地挖掘過去成果的價值,需要講過去的成果(算法,code,設計思想等)進行再組織,使之可以被快速檢索。
  * 標準化
  “最好的溝通是沒有溝通”,通過標準化的技術手段,使個人的輸出可以被他人非常容易地瞭解,這樣可以避免溝通帶來的效率低下。
  * 技術一致性
  軟件技術的發展,使得程序員這個職業需要不斷細分,這帶來的最大問題是不同技術間的互通問題。爲此,在程序開發過程中,需要不斷進行的技術預研變得越來越重要。並且,只要滿足功能需求,就採用最簡單的實現技術。
  * 簡單性
  程序規模變得越來越龐大的同時,修正Bug的代價程指數級增長。因此,儘量少用比較容易犯錯誤的編程技術(比如C語言的指針),儘量採用簡單(犧牲效率)的算法,接口間儘量少一些“合併點”,將是非常有價值的。
  不良的德行
  儘管國內程序員有一些普遍的優點:比如有雄心壯志,面對困難時比較堅毅,理論基礎、尤其是數學功底紮實,編程能力強,吃苦耐勞、講紀律、講服從等。
  而缺點也是突出的:創新精神不足,做事缺乏主動,獨立從事研究的能力弱,對很多事沒有主見,而且有想法不直接說,對新知識瞭解不夠,不善於與人交流,缺乏合作精神。
  還有一些缺點:不誠實——表現在答應了的事不去做;貪小便宜——用公司設備辦私事;不夠踏實——急功近利,擅長做表面文章。
  這些不良德行在實際的程序開發中表現如下:
  * 濫用不變量,以自己模塊調試通過爲最高目的
  大家知道,程序中到處存在着“瓶頸”,這些瓶頸是造成程序運行時不穩定的最重要的因素之一。比方說,在模塊接口間定義了一個用常數開闢的內存空間。消除這些瓶頸要從幾個方面入手:
  ——採用技術手段減少不變量的使用,不要給別人造成麻煩;
  ——集中使用不變量,方便自己的上司作出Bug修正決定;
  ——應用各種異常捕獲機制,在不變量導致的異常出現點進行精確定位;
  * 不尊重文檔,契約意識淡薄
  應該把文檔看成法律合同,要認真書寫,完全徹底地遵守。並且,一旦發現定義模糊的地方,應該及時通報作者進行適當修正。
  * 不寫或少寫註釋,小農思想嚴重
  程序是共有的,模塊是不能獨活的,註釋可以幫助測試人員和維護人員的工作,並且,特別利於軟件重用,最大限度地延長模塊的生命週期;
  * 不關心他人的進度,個人利益高於以前
  開發進度的平衡是一個項目成功的重要標誌。個人的能力是不平衡的,每個人的工作量也是不平衡的。關心他人的進度,並在適當時機施以援手,將最大程度地消除開發進度中“人的瓶頸”。要知道:團隊成功是個人成功的前提;
  * 不借鑑他人的閃光點,偏重技術,忽視德行,難成大器
  創新分精神創新和內容創新。有一個有趣的現象,大家大概都經歷過,比如:A在他負責的模塊內用了一個算法,得到領導表揚;B就另外寫一個算法,可能B的算法要好,但,站在整個項目的角度看,B的行爲是有害的,因爲他損害了溝通的效率(領導要分別看兩個算法,測試員要策兩種算法,維護人員就更苦了)。
  企業的德行
  IT界普遍認爲國內IT教育在課程設置上存在不足,比如課程陳舊,學生的動手能力差,缺乏實踐經驗。很多企業抱怨,學生到了企業後,不好用,企業不得不再培訓一段時間才能用,所以,很多企業不願選擇應屆生,而喜歡從社會上招聘。實際上是這樣嗎?
  這實際上反映了國內軟件企業的規模比較小,偏重只有較短生命週期的應用軟件開發,所以,這些企業在自身資源有限和發展定位上的“鼠目寸光”決定了他們對人才需求的的急功近利。
  實際上,培養剛從學校出來的大學生是最合適的人才選拔方式。學生剛剛踏上社會,對職業的理解可以從0開始塑造,這樣建立起來的團隊特別整齊。這可以從每年跨國公司的校園招聘會上得到證明。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章