您的位置:軟件測試 > 軟件項目管理 > 項目人 >
程序開發(fā)的心理研究??“以人為本”
作者:網(wǎng)絡(luò)轉(zhuǎn)載 發(fā)布時間:[ 2013/6/7 15:19:53 ] 推薦標簽:

    天看到CSDN網(wǎng)友sunlen在BLOG中寫的“程序開發(fā)的心理研究”,讓我想起了Weinberg先生的著作——《程序開發(fā)心理學》。在計算機界,還沒有任何一本計算機方面的書,在初次出版之后,能夠在長達25年的歲月中一直保持活力,而且這種活力到仍在繼續(xù)!冻绦蜷_發(fā)心理學》是開創(chuàng)“以人為本”研究方法的先驅(qū),它以其對程序員們在智力、技巧、團隊和問題求解能力等方面獨特的視角和敏銳的觀察經(jīng)受住了時間的考驗。以下是sunlen在程序開發(fā)心理學的一些個人見解:

    本文只是根據(jù)本人的一些經(jīng)驗,還有外界的一些文章,總結(jié)出來的程序開發(fā)過程中程序員的心理的一些總結(jié),并沒有通過嚴格的驗證。

一、開發(fā)項目的原則

    一般研究發(fā)現(xiàn),一個人剛進行一個新的公司,或者接受一個新的任務(wù),他總得要一個適應(yīng)的過程,這段時間叫做適應(yīng)期,這個過程根據(jù)不同的人所需要適用的時間長度不同,對于一個程序員來說,如果接受一個難度適中的項目,他一般需要3個月的時間來適應(yīng),當然,這個時間只是一個一般比較普遍的情況,可能有些人1個月可以適應(yīng)了,有些人搞了半年,還是對系統(tǒng)很不熟悉。這個適應(yīng)期大概包括下面幾個部分:

    1 對環(huán)境的適應(yīng)

    社會是由人組成的社會,當然程序員進行一家新的公司、或者一個新的環(huán)境,總免不了要跟人打交道,可能有人會說,“每次開發(fā)系統(tǒng)都是我獨自一人完成”,恕我坦白一點的說,這樣開發(fā)出來的系統(tǒng)根本不能算是一個系統(tǒng),現(xiàn)代項目開發(fā)一般需要包括前期需求分析、需求文檔開發(fā)、設(shè)計文檔開發(fā)、代碼編寫、系統(tǒng)測試等。要使得這一總個流程順利的進行下去,那需要人與人之間的合作,所以一個程序員到了一個新的環(huán)境、面對一些陌生的人、總得有一點的時間相互之間進行交流,建立起一種友誼。

    2 對項目的適應(yīng)

    我們接受一個項目,不管是全新的還沒開發(fā)的項目,還是已經(jīng)處于維護狀態(tài)的項目,我們總得對它的業(yè)務(wù)邏輯、開發(fā)風格、編程規(guī)范、系統(tǒng)構(gòu)架等有一個了解。業(yè)務(wù)邏輯是指一個項目相關(guān)的操作是怎么進行的、各個操作具體如何操作等等。開發(fā)風格是系統(tǒng)原有是如何進行開發(fā)的,現(xiàn)在國內(nèi)有很多系統(tǒng)都是一招了一個新人叫他進行代碼的開發(fā),結(jié)果他等到開發(fā)完了才發(fā)現(xiàn)原來他花了很久才開發(fā)出來的類(java和c++中的一種概念,相當于一個功能模塊,可以被其它功能使用),其實系統(tǒng)早已經(jīng)有了,使用的時候這樣調(diào)用可以了,等等。編程規(guī)范大家應(yīng)該都知道了,現(xiàn)在基本不同的語言都有自己的編程規(guī)范,比如說java有java編程規(guī)范,同時,不同的公司可能根據(jù)自己的情況定義了一些規(guī)范,比如說,判斷一個變量是否為空,有些公司要求將null放在前面等。系統(tǒng)構(gòu)架是指一個項目的總的框架是如何搭建的,采用哪種語言等,比如說、現(xiàn)在很多開發(fā)網(wǎng)上應(yīng)用系統(tǒng)都采用Struts+Spring+Hibernate構(gòu)架(采用java語言)。這些都需要一個適應(yīng)的過程,如果對這些都還沒了解清楚匆忙的開發(fā)編寫代碼,那寫出來的將會是一些格格不入的代碼、不管這個代碼單獨拿出來看的時候是多么的完美。

    適應(yīng)期過后,接下來是一段比較長的穩(wěn)定期。這段時間一般有半年到一年的時間。在這段時間里面,程序員對系統(tǒng)業(yè)務(wù)比較熟悉,開發(fā)系統(tǒng)得心應(yīng)手,他們一般在定位一個系統(tǒng)問題的時候,能夠比較快地查找出問題并處理,而不像一些新手一樣,對系統(tǒng)調(diào)試N久之后,才將問題處理,之后才發(fā)現(xiàn),問題只不過處理了一半,在其它地方存在的相同的問題沒有處理,或者處理完一個問題之后,卻導(dǎo)致其它地方出了問題。

    穩(wěn)定期過后,程序員開始陷入了厭煩期。這個厭煩期是沒有期限的,隨著時間的推移,程序員可能越來越討厭自己的工作,他經(jīng)常抱怨系統(tǒng)編碼是如何的差勁,而完全忘記了這個差勁的系統(tǒng)也有他的一份功勞在內(nèi)。他們工作的時候不像以前那樣有積極性,經(jīng)常在上班前2分鐘到達公司,還可能在下班前半個小時開始收拾東西、給家人打電話、等待的下班時間的到來。他們開始對反饋的一些問題應(yīng)付了事,他們開始對新近來的員工指手畫腳,在開會的時候發(fā)短信,等等。

    根據(jù)上面我們可以發(fā)現(xiàn),一個程序員新接觸一個新的項目的時候,我們要給他一段時候熟悉系統(tǒng),而不管他是多么強的一個高手。很遺憾的是,現(xiàn)在國內(nèi)很多公司一招了一個新人,開始壓一大堆任務(wù)給他,而完全不給他們適應(yīng)的機會。這樣產(chǎn)生出來的經(jīng)常是一個千瘡百孔的系統(tǒng),甚至完全是一個失敗、無法使用的系統(tǒng)。當一個人開發(fā)對現(xiàn)在的系統(tǒng)厭煩的時候,要開始分配新的任務(wù)給他,讓他去熟悉、開發(fā)新的系統(tǒng),而不要總抱著這樣的想法,是現(xiàn)在系統(tǒng)他熟悉了,讓他開發(fā)合適,讓他去開發(fā)新系統(tǒng)還要讓他花時間去熟悉新系統(tǒng)等等。這樣下去的結(jié)果可能有兩種,一是開發(fā)人員被迫辭職了,剩下來的是一個沒有人熟悉的系統(tǒng),招來的新員工在這個系統(tǒng)上花費了大量的時候,才搞個一知半解,甚至系統(tǒng)可能這樣壽終正寢了。還有一種結(jié)果是開發(fā)人員因為高工資繼續(xù)留下來,但是系統(tǒng)的開發(fā)進度越來越慢,bug越來越多,開發(fā)人員也變得有恃無恐的,而領(lǐng)導(dǎo)層卻越來越擔心由于開發(fā)人員辭職導(dǎo)致系統(tǒng)無法進行下去。

二、、早點回家吧!

    我想國內(nèi)企業(yè)擅長的是剝削勞動者的勞動力的,甚至有人叫嚷著:“沒有程序員是不需要加班的”。他們將一個又一個的任務(wù)壓在程序開發(fā)人員的身上,將完成時間壓縮后再壓縮,直壓得開發(fā)人員兩眼冒星,口吐三口鮮血后在當天的工作日志上寫道:“是我連續(xù)第三天通宵了,總共處理了283個系統(tǒng)問題,后系統(tǒng)終于跑起來了,用戶終于同意通過了檢查,我光榮的完成了使命!”。

    在這里我并不想批駁公司對程序開發(fā)人員的剝削,這種高強度開發(fā)對系統(tǒng)的影響,它終也會損壞到公司的利益。項目開發(fā)跟一般工廠上組裝一件電器是不一樣的,我們的項目要實現(xiàn)一個功能,是有很多種實現(xiàn)方式的,還要考慮系統(tǒng)構(gòu)架、可重用性、可讀性等。比如說,一個好的系統(tǒng)構(gòu)架,你會發(fā)現(xiàn)實現(xiàn)起功能來又快又好,而且能夠應(yīng)付系統(tǒng)開發(fā)過程中業(yè)務(wù)邏輯的變化,而一個差的構(gòu)架,實現(xiàn)起功能來很困難,而當業(yè)務(wù)邏輯變化時,你會發(fā)現(xiàn)幾乎所有的代碼都需要重新修改,這會令你陷入絕望的境地,而不像一個好的架構(gòu)那樣修改一下配置文件或者兩段代碼都搞定了,這其中的快慢有時可以用N次方來形容的。而恰恰是這種好的構(gòu)架在前期需要大量的時候進行設(shè)計,如果一味求快的話,那么開發(fā)人員根本沒有時間進行一個好的構(gòu)架的設(shè)計,這樣前頭快的做法,將會對后續(xù)的開發(fā)帶來影響,使得開發(fā)起來更加困難?芍赜眯砸彩且粯,如果考慮可重用性的話,那么可以將一些邏輯抽象出現(xiàn),寫出一個類,這樣,還后續(xù)開發(fā)的時候,如果有相同的邏輯,可以使用這個類了,如果對這個邏輯進行修改的話,那只要修改了這個類,所有的邏輯都同時改變了。如果完全不考慮這些的話,那么后續(xù)開發(fā)都要開發(fā)類型的代碼,如果對邏輯修改的話,那么將是很麻煩的事情,當然,這個進行抽象成一個類的動作,比自己開發(fā)更花時間,但是更好。對于可讀性,對于一個緊急的開發(fā),你可能發(fā)現(xiàn)里面連一個注釋都沒有,很可能開發(fā)人員后來翻出這些代碼來看的時候,他已經(jīng)不記得這到底是什么意思了,甚至連是不少他開發(fā)的都不記得了。

    所以,我想說的是,不要給程序開發(fā)人員太大的壓力,只要適中可以了。還有,不要一味的要求開發(fā)人員干活,要適當?shù)谋憩F(xiàn)出對他們的關(guān)心,比如說,的時候,跟他們說:“,早點回家吧!”,這樣對開發(fā)人員的作用是很大的。

三、監(jiān)獄里的囚犯

    我想大概國內(nèi)的軟件公司是全世界男女比例失調(diào)的吧,隨便走進那家公司,你經(jīng)常會看到的是大批的男性開發(fā)人員的,而作為女性的一般都是些文員,市場人員,資料開發(fā)人員等,領(lǐng)導(dǎo)層他們有自己的想法,他們這樣想著,如果招了一個女性開發(fā)人員進公司的話,那么她晚上不能加班太晚,不然還得負責她的安全。還有,在中國程序員眼里,女性程序員大多不懂編程,整天問東問西。還有,領(lǐng)導(dǎo)們可能擔心招了女性程序員之后,會影響到大家的情緒,可能是造成公司內(nèi)部分裂的根源,等等。同樣的,也是女性自身方面的問題,國內(nèi)的女性一般偏向于學習文科方面的東西,在大學里面,學習理科的女性要比男性少得多。等等這些都造成了現(xiàn)在程序開發(fā)行業(yè)陽盛陰衰的現(xiàn)象。

    這種現(xiàn)象所引起的后果是國內(nèi)很多的男性開發(fā)人員都很內(nèi)向,不善于跟女性交流,見了女性有些還會臉紅。很多在公司里面勤勤懇懇,工資也不低,人長得也不衰,但是是沒有女朋友。他們的生活是壓抑的(至少是性壓抑吧)。程序員好像被關(guān)在監(jiān)獄里的囚犯,白天干活,經(jīng)常加班,晚上回去睡覺,第二天又開始新的工作。他們在公司里的經(jīng)常是在處在一個被壓迫的狀態(tài),很少有時間進行其它的活動等。

    我想這是有害的,中國如果繼續(xù)這樣發(fā)展的話,將會阻礙軟件行業(yè)的發(fā)展。領(lǐng)導(dǎo)應(yīng)該多考慮招一些女性的程序員,多組織一些活動等。讓程序員感覺到公司里面的一些人性化管理,這是一個公司的軟環(huán)境,讓程序員安居樂業(yè)的軟環(huán)境。

軟件測試工具 | 聯(lián)系我們 | 投訴建議 | 誠聘英才 | 申請使用列表 | 網(wǎng)站地圖
滬ICP備07036474 2003-2017 版權(quán)所有 上海澤眾軟件科技有限公司 Shanghai ZeZhong Software Co.,Ltd