職業(yè)程序員培養(yǎng)之道

字號:

軟件開發(fā)是以人為核心的過程,對人的依賴性遠高于傳統(tǒng)的硬件生產(chǎn)企業(yè),為了保持開發(fā)能力的穩(wěn)定性,一方面需要定義軟件過程,以過程為樞紐將人、技術(shù)、工具銜接起來,另一方面也要加強人才的培養(yǎng),使人的工作能力能夠穩(wěn)定、提高人員的自治性。隨著社會需求的膨脹,對程序員的需求量、對熟練的程序員的需求量在劇增,然而對程序員的培養(yǎng)問題卻成了一個盲點,學生在學校里學習的是關(guān)于軟件開發(fā)的基礎知識,軟件企業(yè)需要的是熟練的能夠快速開發(fā)出產(chǎn)品的程序員,需要程序員具有很強的實用知識,因而出現(xiàn)了明顯的學校教育與實際需求脫節(jié)的問題。企業(yè)反映新畢業(yè)的學生知識老化、動手能力太差、缺乏實用理論知識、缺少工程管理知識等問題。盡管社會上有各種各樣的專業(yè)程序員培訓班,但是距離企業(yè)的實際需求仍然有較大的差距。在企業(yè)中培養(yǎng)一名合格的程序員一般需要3個月到半年時間,對企業(yè)來講,這個周期就顯得太長了,所以一般的企業(yè)不愿要新畢業(yè)的學生,企業(yè)希望程序員能夠“來則戰(zhàn)之,戰(zhàn)則勝之”。無論如何,對程序員來講總是要面臨一個成長的過程,希望學?;蛘吲嘤柊鄟斫鉀Q這個問題很難,因為程序員不是標準件,程序員不是教育出來的,是在實踐中干出來的,終還是要在實踐中來培養(yǎng)程序員,這是任何軟件企業(yè)必須承受的,因此,對軟件企業(yè)來講需要有一套機制,一套辦法來培養(yǎng)程序員。
     那么,我們需要從哪些方面來培養(yǎng)程序員呢?大體來講,包括以下幾個方面:精神、能力、理論基礎、工作方法、工作習慣。
     1、精神
     軟件開發(fā)是一項智力勞動,需要開發(fā)人員很投入的工作,因而需要開發(fā)人員能夠熱愛軟件開發(fā),有工作熱情,有投入的精神。如果一個程序員缺少一種投入的精神,他不可能在需要他投入精力的時候來工作。有的人很聰明,但是他對軟件開發(fā)沒有興趣,或者他工作很不專心,雜事很多,工作效率很低,別人1天能干完的,他需要3天甚至5天才能干完,而且還漏洞百出,這樣的程序員需要盡早識別出來,盡早轉(zhuǎn)換工作。
     現(xiàn)在的工作環(huán)境對程序員的誘惑很多,比如游戲、QQ、各種新聞等等,這些誘惑使不能很好處理這些關(guān)系的程序員瀏覽忘返,浪費了大量的時間,降低了工作效率。程序員的業(yè)績很大程度上不是取決于其智商,而是取決于其情商。
     2、能力
     程序員主要的能力可以概括為3點:良好的邏輯思維能力、良好的溝通能力與良好的學習能力。
     良好的邏輯思維能力
     軟件的開發(fā)過程是解決復雜業(yè)務邏輯的過程,是簡化復雜邏輯的過程,是用精確來實現(xiàn)模糊的過程,開發(fā)人員需要具有良好的邏輯思維能力才能勝任?,F(xiàn)實空間是模糊的,數(shù)字空間是精確的,在現(xiàn)實世界中很簡單的問題,在數(shù)字空間中來模擬時,就變成了一個復雜的問題。它要求程序員能夠全面、準確、簡潔地把握問題、分析問題、解決問題。
     在筆者接觸過的很多程序員新手中,很少有程序員能將下列的題目解答的完全正確:
     畫出解答下面問題的程序流程圖:輸入三個整數(shù),作為三角形的三個邊,判斷是否構(gòu)成:等邊、等腰、直角、銳角、鈍角三角形。
     這個題目的邏輯很簡單,需要的處理的邏輯包括:
     1 輸入的合法性判斷:輸入的是否是正整數(shù)
     2 是否構(gòu)成三角形:任意2邊之和大于第三邊
     3 是否構(gòu)成等腰或等邊三角形
     4 是否構(gòu)成鈍角、直角、銳角三角形
     答題者常見的錯誤有: 序號 常見的錯誤
    1
     沒有判斷輸入的合法性
    2 沒有判斷是否構(gòu)成三角形
    3 判斷為其中一種結(jié)論時就結(jié)束了,沒有考慮到:等邊三角形也是銳角三角形,等腰三角形可以是鈍角也可以是直角或銳角
    4 程序內(nèi)部邏輯復雜
     上邊的題目是一個很簡單的程序,但是類似的邏輯問題在實際的軟件開發(fā)中是經(jīng)常用到的,需要程序員能夠?qū)Ω鞣N情況進行仔細的分析、歸納、總結(jié),如果在這樣的問題上出錯是很難成為出色的程序員的。
     溝通能力
     現(xiàn)在的軟件越來越龐大,根本不是單兵作戰(zhàn)能解決的,需要多人來協(xié)同工作,比如一套簡單的進銷存系統(tǒng)可能就要產(chǎn)生30萬行代碼,按每人天生產(chǎn)100行代碼來估算,也需要3人年,再加上分析、測試等的時間,需要6人年才能完成,因此就需要開發(fā)人員具有很好的溝通能力。作為程序員要善于溝通,習慣溝通。程序員在交流問題時,往往在描述問題是什么時要花費大量的時間。這種現(xiàn)象在項目組中是經(jīng)常出現(xiàn)的:在給一個程序員布置任務時,講清楚任務比他完成這項任務花費的時間還要多,而有的程序員自己心里明白,但是說不清楚,或者干脆就不說,這些情況都會降低整個團隊的工作效率。
     學習能力
     軟件的新技術(shù)發(fā)展很快,開發(fā)人員必須能夠不斷的跟蹤、學習新技術(shù),要有很好的學習能力。只有善于學習的人,才能夠不斷進步,在實踐中快速成長。真正優(yōu)秀的程序員一定是掌握了很好的學習方法的程序員,否則現(xiàn)在是優(yōu)秀的程序員,2年后可能就被淘汰了。