軟件開發(fā)技術(shù)人員如何做項(xiàng)目溝通
軟件開發(fā)技術(shù)人員一直被外界認(rèn)為另類,我們專注于程序開發(fā)本身,我們熱衷于軟件產(chǎn)品開發(fā),心動于新程序的誕生及利用這些新的程序完成項(xiàng)目產(chǎn)品交付,與他人合作或溝通交流往往被我們忽視,所以,程序員就這樣誕生了。
我們要通過這篇文章讓他家了解程序員,也為程序員未來提供些暗示,程序員光技術(shù)牛X可不夠。除了技術(shù),一名_的程序員更需要關(guān)注其他的一些方面。更重要的是和項(xiàng)目組成員及項(xiàng)目經(jīng)理、測試工程師、業(yè)務(wù)需求分析師、甚至客戶的溝通能力。無論項(xiàng)目是做什么,你都需要通過溝通了解需求,知道客戶要什么,我們能夠做什么,直至按照項(xiàng)目范圍、時間、成本完成項(xiàng)目,比如:
作為一個開源項(xiàng)目的貢獻(xiàn)者,你需要合作審查別人的補(bǔ)丁或者讓其他人審查你的補(bǔ)丁,你需要解決用戶提出的問題,你需要和新用戶溝通需求,開項(xiàng)目需求溝通會議,做需求變更流程,和其他提交者或共同維護(hù)者一起做計(jì)劃。
作為一個自由職業(yè)者,你需要同現(xiàn)在的和潛在的客戶進(jìn)行溝通。你也需要和項(xiàng)目組的其他程序員、設(shè)計(jì)師和測試人員溝通,你還需要明確每個負(fù)責(zé)人對應(yīng)負(fù)責(zé)的項(xiàng)目。
當(dāng)你在一家公司工作,需要協(xié)調(diào)你的團(tuán)隊(duì)和其他團(tuán)隊(duì)的程序員,或與其它業(yè)務(wù)部門的人員溝通,特別是和項(xiàng)目經(jīng)理進(jìn)行溝通。
程序員和項(xiàng)目經(jīng)理……通常不會一見鐘情
和項(xiàng)目經(jīng)理的關(guān)系時常會出現(xiàn)一些狀況:作為程序員我們很容易去抱怨他們。畢竟他們總是企圖讓我們?yōu)榱艘恍└膭佣谥芪宓臅r候加班,也是他們一直逼迫我們?nèi)プ鲆恍└菊f不通的功能。
但我認(rèn)為項(xiàng)目經(jīng)理在一個成功的團(tuán)隊(duì)中發(fā)揮了至關(guān)重要的作用。有團(tuán)隊(duì)成功,我作為程序員才能成功。出于這個原因,我認(rèn)為和項(xiàng)目經(jīng)理保持很好的關(guān)系,才是交付成果的關(guān)鍵。我很幸運(yùn)可以和那些很棒的項(xiàng)目經(jīng)理合作,他們給予我很大的幫助。
但我知道正是由于他們的工作,我們才可以沿著正確的方向前進(jìn),快速地發(fā)布功能,并在項(xiàng)目上和公司的其他團(tuán)隊(duì)展開合作。
所以我深信項(xiàng)目經(jīng)理對公司的影響力舉足輕重。但這種影響可以是極其負(fù)面的或是非常積極的。我并不了解一個項(xiàng)目經(jīng)理所有的職責(zé),而且我也相信有很多事情他們并沒有與程序員溝通。我只是在想項(xiàng)目經(jīng)理應(yīng)該如何同程序員溝通,以及程序員對項(xiàng)目經(jīng)理有什么期望。
在我看來,一個項(xiàng)目經(jīng)理如果做到以下五件事情,就可以幫程序員提高效率。
1) 溝通業(yè)務(wù)重點(diǎn),思考技術(shù)重點(diǎn)
我們都在超負(fù)荷工作,我們有一堆希望可以在本周完成的工作。作為一名程序員,我需要評估每項(xiàng)要完成的工作所花費(fèi)的精力,以及它們之間的關(guān)系。也許某個重構(gòu)可以簡化一項(xiàng)功能的開發(fā),因此對這些工作做相應(yīng)的排序是非常合理的。某項(xiàng)工作可能需要兩周,而其它三個功能每個只需要半天就搞定了。我當(dāng)然希望可以先完成它們。
但技術(shù)方面只是一方面的考量:對這些工作進(jìn)行排序,需要了解業(yè)務(wù)的重點(diǎn)。什么功能對客戶_重要?什么功能對收入 有直接影響?這對我們決定集中精力先交付什么相當(dāng)重要。我認(rèn)為項(xiàng)目經(jīng)理應(yīng)該和程序員經(jīng)常溝通項(xiàng)目的優(yōu)先順序,并且項(xiàng)目經(jīng)理也得明白:他需要對業(yè)務(wù)方面和技 術(shù)方面的項(xiàng)目優(yōu)先順序都加以考慮,才能決定我們下一步的工作是什么。
有時候技術(shù)的優(yōu)先順序也是很重要的:不能只考慮業(yè)務(wù)優(yōu)先順序而忽視它們,因?yàn)槿绻@樣做會影響我們交付軟件的質(zhì)量,進(jìn)而影響到業(yè)務(wù)。
2) 提前讓開發(fā)者知道截止時間
曾幾何時你突然發(fā)現(xiàn)有件事情需今天晚些時候就要交活?或者昨天的時候有人_客戶會拿到一個新的版本?它們不是驚喜,而是驚嚇。坦白來講就是一旦出現(xiàn)異常我們需要立刻處理。如果應(yīng)用程序掛了的話,公司每分每秒都在賠錢:所以無論你手頭上有什么事都要停下來,把它解決掉。比如說發(fā)現(xiàn)了一個棘手的新的bug,或者存在安全漏洞需要盡快解決等等?,F(xiàn)實(shí)生活中很多事情都不是計(jì)劃好的:我們只能見招拆招。
但不能每件事情都這樣,我們不能總是進(jìn)行應(yīng)急驅(qū)動開發(fā)。這是很差的實(shí)踐。大家需要討論截至日期并達(dá)成共識,開發(fā)就可以按計(jì)劃行事。程序員通??床坏秸麄€項(xiàng)目的全貌,但項(xiàng)目經(jīng)理又何嘗不是呢:他們會忽視技術(shù)的方面,但如果不能提前知道這些,是不可能在截止日期前完成工作的。所以親愛的項(xiàng)目經(jīng)理們:一旦你們知道截止時間就馬上告訴我們。
提醒:我所說的“讓程序員知道截止時間”,是指真實(shí)的截止時間。項(xiàng)目經(jīng)理做的_爛的事情就是給出一個假的、自己強(qiáng)加的截止時間。有的項(xiàng)目經(jīng)理有自己的小算盤,他們給自己留有一定的時間余量,比如他告訴開發(fā)者客戶希望1號交付,但實(shí)際上他和客戶_的日期是15號。他們這么做可能是因?yàn)槲覀兘?jīng)常晚交付東西,但是……你猜怎樣?程序員早晚都會發(fā)現(xiàn),并認(rèn)為這些無謂的壓力和長時間的工作都是拜你的謊言所賜。你猜他們會有何反應(yīng)?
3) 溝通管理
我知道這聽起來讓人不爽,但程序員或多或少都會有些小缺點(diǎn)。其中一點(diǎn)就是開發(fā)者的溝通方式……與眾不同。他們傾向于直言不諱。這樣的性格很適合與機(jī)器一起工作,但是對客戶也這樣就會出問題。是的,客戶提 供給你的 SDK 是不是看上去不夠……優(yōu)化。是的,如果我們給一群猴子,提供一瓶廉價的威士忌和一本手冊,上面記載了所有軟件工程上的_差實(shí)踐,他們也就做成這個樣子。好了,還是不要讓客戶知道這些。項(xiàng)目經(jīng)理需要重新措詞再告訴客戶。
每當(dāng)看到項(xiàng)目經(jīng)理追著客戶要他們確定需求的時候,或者是他們與其他團(tuán)隊(duì)的項(xiàng)目經(jīng)理交涉,說服其他團(tuán)隊(duì)回復(fù)我們提出的需求的時候,我都感到異常欣慰。是的,我們很迫切地需要回答,但是往往一個同樣的需求我們轉(zhuǎn)了三遍,都好幾周了還沒有回復(fù)。
一個出色的項(xiàng)目經(jīng)理會提供給我們所有工作中所需要的信息,并且可以確保所有參與的團(tuán)隊(duì)都可以順暢地溝通。我們很可能沒有意識到他為此所付出的努力。
4) 讓程序員遠(yuǎn)離麻煩
公司里壓力很大。壓力來自方方面面,所以需要對它進(jìn)行管理。作為一名程序員,我們需要應(yīng)對很多的技術(shù)難題:一個很難復(fù)現(xiàn)的 bug,一個和線程同步有關(guān)的偶發(fā)問題,一個改動很大的框架發(fā)布,一段不可靠的、無法通過集成測試的基礎(chǔ)代碼。我們有足夠的理由感到壓力山大。
項(xiàng)目經(jīng)理也一樣:他們需要比我們處理更多的內(nèi)部規(guī)章,參與功能開發(fā)的討論,還要積極為團(tuán)隊(duì)爭取資源。他們會和其他團(tuán)隊(duì)展開競爭,也要接受客戶對他們的咆哮發(fā)泄。對此我深表同情,但如果項(xiàng)目經(jīng)理把這些壓力轉(zhuǎn)嫁到程序員身上,那我們這些程序員就會成為板上魚肉,任人宰割。我們會受到兩方面的壓力,一方面是現(xiàn)實(shí)的技術(shù)難題,另一方面是瘋狂的客戶和辦公室政治。這些重?fù)?dān)太沉重,所以我們需要達(dá)成一個共識:技術(shù)上的問題,我們會負(fù)責(zé)搞定。而其余的問題——雖然我同情項(xiàng) 目經(jīng)理——但那些都是你們的責(zé)任。
5) 確保我們沒做不相關(guān)的工作
想要開發(fā)對公司產(chǎn)品影響很少的東西是非常困難的。盡管對于那些喜歡長時間開發(fā)很酷的東西的人而言,會很享受這一點(diǎn),但是這對你的職業(yè)生涯很不利。如果你一直開發(fā)不相關(guān)的東西,你很難被升職加薪。相反如果你做的事情可以對于業(yè)務(wù)開展非常有意義的話,好處是顯而易見的:它為你提供額外的動力,容易讓人注意到你,也更容易在組織內(nèi)獲得更多的資源和支持。
開發(fā)一個不相關(guān)的功能并被不是_糟糕的事情。_慘的是工作的項(xiàng)目在完成前或完成后馬上被丟棄掉。想象一下你的努力和汗水就這樣被丟棄掉。感覺很差,不是嗎?所以_好和那些不會把你帶入這種境地的項(xiàng)目經(jīng)理合作。
我認(rèn)為項(xiàng)目經(jīng)理與業(yè)務(wù)需求分析師會為我們擋掉很多問題。他們是我們和客戶以及公司其他團(tuán)隊(duì)的接口。他們_我們?yōu)榭蛻籼峁┯袃r值的工作。他們來統(tǒng)籌大局,而我們只需要關(guān)注下一個功能的開發(fā)、產(chǎn)品測試和交付。
事實(shí)上很多時候程序員認(rèn)為項(xiàng)目經(jīng)理沒什么大不了的。我相信大多數(shù)程序員都會低估項(xiàng)目經(jīng)理。我們只是不理解他們的職責(zé)。但是請相信我,如果你和_的項(xiàng)目經(jīng)理和不那么棒的項(xiàng)。
本文來自于艾威培訓(xùn)
轉(zhuǎn)載請注明:http://m.c-d21.com/share/1379.html