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

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

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

一、開(kāi)發(fā)項(xiàng)目的原則

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

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

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

    2 對(duì)項(xiàng)目的適應(yīng)

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

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

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

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

二、、早點(diǎn)回家吧!

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

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

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

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

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

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

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

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