在外行的眼中,程序員每天就是寫代碼(把程序員當(dāng)成修電腦的也大有人在)。其實(shí)則不然。對(duì)于大多數(shù)程序員來(lái)說(shuō),他們很難做到一直坐在電腦前寫代碼,他們有很大一部分時(shí)間用在溝通上面,包括和項(xiàng)目管理者溝通進(jìn)展,和需求提供者溝通需求,和測(cè)試溝通如何定位和修復(fù)Bug……
據(jù)統(tǒng)計(jì),一個(gè)程序員一般每天工作8到10個(gè)小時(shí),其中他至少要花75分鐘的時(shí)間來(lái)進(jìn)行以email、電話、語(yǔ)音郵件或者面對(duì)面的談話等方式的非正式的溝通,另外他還需要參與項(xiàng)目例會(huì)、設(shè)計(jì)評(píng)審、代碼評(píng)審、迭代/階段/里程碑等正式的溝通。
程序員們每天平均會(huì)跟7個(gè)不同的人說(shuō)話。最多的可能會(huì)達(dá)到17人。這些交流一般比較短,其中68%都少于5分鐘,但是超過(guò)半小時(shí)或者長(zhǎng)達(dá)一小時(shí)的交流也不罕見(jiàn)。
雖然程序員的這些交流有些是被動(dòng)的,與編程活動(dòng)無(wú)關(guān)的,但是,和編程活動(dòng)直接相關(guān)的,甚至對(duì)編程活動(dòng)的進(jìn)度、質(zhì)量有重大影響的交流也不在少數(shù)。
下面的這個(gè)例子就向我們展示了在調(diào)試環(huán)節(jié)中,溝通也是編程活動(dòng)的重要組成部分。
開(kāi)發(fā)人員A在對(duì)程序進(jìn)行調(diào)試時(shí)通過(guò)bug跟蹤工具中得到了一個(gè)bug,他重現(xiàn)了這個(gè)錯(cuò)誤,然后Visual Studio告訴他問(wèn)題是某個(gè)函數(shù)錯(cuò)誤導(dǎo)致出現(xiàn)空指針異常。他發(fā)現(xiàn)函數(shù)錯(cuò)誤是由一個(gè)對(duì)象生成的,而這個(gè)對(duì)象屬于開(kāi)發(fā)人員B維護(hù)的代碼,他看不明白,所以他不得不去找B討論這段代碼。隨后他根據(jù)得到的信息作出了修改,卻發(fā)現(xiàn)修改無(wú)效,在他和B又一次溝通之后,B告訴他這個(gè)錯(cuò)誤可能是由第三個(gè)開(kāi)發(fā)人員C來(lái)負(fù)責(zé)的。所以A、B一起找到C,討論了功能的正確行為,最終把A的問(wèn)題交給了C進(jìn)行了修復(fù)。
這個(gè)例子說(shuō)明了溝通對(duì)于編程活動(dòng)的重要性。如果A不找B去溝通問(wèn)題,僅靠自己來(lái)解決問(wèn)題,那么可能他要花費(fèi)3~5倍的工作量,而且也未必就能正確地解決問(wèn)題。而依靠溝通,不僅A的問(wèn)題得到解決,B和C也從中獲益不少。
有效的溝通可以加深對(duì)需求、設(shè)計(jì)的理解,可以提高編程的技能,可以發(fā)現(xiàn)代碼的缺陷……所以,說(shuō)溝通是編程活動(dòng)的重要組成部分毫不為過(guò)。
這正是:
溝通交流很必要,提高技能增績(jī)效
溝通若能用的好,編程快速且高效
參考數(shù)目:軟件之道: 軟件開(kāi)發(fā)爭(zhēng)議問(wèn)題剖析,作者: Andy Oram Greg Wilson,出版社: 人民郵電出版社
聯(lián)系客服