程序員的德行

          Posted on 2006-07-27 15:01 無為 閱讀(468) 評論(0)  編輯  收藏 所屬分類: 禪語

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

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

          posts - 10, comments - 0, trackbacks - 0, articles - 3

          Copyright © 無為

          主站蜘蛛池模板: 宁南县| 泽普县| 夏邑县| 清水河县| 嫩江县| 五台县| 眉山市| 广丰县| 赤城县| 全南县| 黔西| 广安市| 南城县| 云南省| 库尔勒市| 云霄县| 庄浪县| 岑溪市| 彩票| 交城县| 张家川| 兴隆县| 武强县| 潞西市| 雷州市| 冷水江市| 巍山| 庆云县| 青岛市| 武邑县| 屏边| 谷城县| 南丰县| 类乌齐县| 渭源县| 桐庐县| 马公市| 莱州市| 嘉黎县| 敖汉旗| 寿阳县|