一向認為軟件開發(fā)就像是在搭房子或者說是在構建一座宏偉的大廈,當然這根據(jù)工程的大小而定。其實細細想來軟件工程的很多地方都是借助于建筑方面的知識,就從“工程”這個詞來說就是從建筑學引進的,類似的還有設計模式等概念也是來源于建筑學。如此說來軟件的開發(fā)和建造房屋一樣,一般是多人合作完成的。如果您非要自己動手蓋一個小平房也不是不可以,但請注意那一定是一個足夠小的小平房。
其實要說起團隊開發(fā)讓人最頭疼的不是什么技術問題,而是隊員之間的合作問題。尤其是遇到矛盾重重的團隊,那項目的進度一拖再拖將是家常便飯。團隊開發(fā)絕不是架個SVN拉幾個有水平的程序員就可以開始的事情!需要注意很多方面才有可能出色的合作完成一項工程。
l 給力的項目經(jīng)理(項目組長)
首先,項目經(jīng)理(項目組長)必須全面的了解項目的需求,根據(jù)需求和組員們商討出一套合理的解決方案來。在這個過程中遇到不同的解決方案項目經(jīng)理(項目組長)要敢于拍板,敢于承擔責任。無論選擇的對錯都要比不選擇要強,選擇時畏首畏尾只會令項目延期,而選擇錯誤大不了下次升級版本。一般說來在能實現(xiàn)功能的前提下,用戶更加關心完成的日期而不是性能。因為每拖一分鐘用戶對軟件能否實現(xiàn)的信心就減小一分。
其次,項目經(jīng)理(項目組長)要有霸氣。相信每個團隊都可能會遇到不配合的隊員,對于這樣的隊員盡量為他分配一些靈活性小的工作。如果隊員嚴重影響合作那么就需要項目組長(項目經(jīng)理)出面了,讓你干嘛就干嘛,不要廢話,出了事我擔著!畢竟在一個項目中項目經(jīng)理最大,項目如果出了問題客戶或老板不會去責怪一個程序員,他會直接劈頭蓋臉的罵項目經(jīng)理(項目組長)。所以在項目中隊員有義務也有責任聽項目經(jīng)理(項目組長)的安排。這也是為什么項目經(jīng)理(項目組長)在招人的時候格外注重隊員的合作能力的原因(是否聽從安排也屬于合作能力的一種),招個不聽話的人是多么郁悶的事情。
l 敢于否定自己
在項目的設計階段,大家一起商討具體的解決方案。很多時候大家是為了面子而不愿意否定自己的解決方案。其實這很容易理解,大家都是從程序員走過來的,程序員的通病就是常常盲目欣賞自己的代碼,在軟件設計的時候依舊“本性”難易,對于自己的設計不忍拋棄。一旦別人說自己的設計的有問題,恨不得馬上和其大吵三百回合。爭論,對于軟件的設計絕對是好事,越爭論對軟件的需求、設計越清晰,“辯則明”就是這個道理。但是必要的時候(大多數(shù)人不肯定自己的時候)就應該好好的想一想:爭論是因為面子還是因為自己的想法真的是完美的、無懈可擊的?難道別人的想法真的是不可就要的、爛到不行的?如果是前者,無論你是誰(普通組員也好項目組長也罷)為了整個項目、為了團隊,請放下自己的面子,否定自己!??!
l 不要正面否定他人的意見
無論什么時候都不要正面否定組員的意見,就算你是項目組長(或者項目經(jīng)理)也不行!
在項目設計階段,當組員為系統(tǒng)提出其他的見解的時候,如果你覺得合理那自不必說表示贊同即可。如果覺得不合理,你要做的僅僅是把你的觀點擺出來和他的觀點對比,讓團隊所有人進行討論、選擇,到底哪個更有利于軟件的實現(xiàn)。
一旦項目設計完成,無論組員有任何好的方案都不應該采用!??!這時候要做的只是記下來為以后升級系統(tǒng)做準備,這也是為什么大公司的軟件(例如windows系統(tǒng))往往在上一個版本還未發(fā)行的時候下一個版本就已經(jīng)開始準備了。很多時候開發(fā)人員就是在開發(fā)的過程中產(chǎn)生了更好的解決方案。好的解決方案——記錄下來下次系統(tǒng)升級就從些方面做起。
為什么設計完成后不能“完善”?
如果在項目設計完成后再去修改設計,那么很有可能對項目其他部分造成影響。整個系統(tǒng)經(jīng)過了長時間的設計可以說很少再有前后矛盾的地方。如果突然改變某一方面的設計,很大幾率會造成牽一發(fā)而動全身的結(jié)果,甚至因為沿著這一處小小的改動走下去而使得整個軟件前后矛盾,最終導致推倒從頭再來的惡果。(還有什么比重頭再來更糟糕??。。?/span>
l 善于利用第三人避免“踢皮球”
不得不說的是任何詳細設計文檔,任何UML圖都不會把系統(tǒng)的各個細節(jié)照顧到。畢竟文檔以及UML僅僅是建模,一個大概的樣子而已。這樣一來難免會有細節(jié)部分沒有涉及到如果非常不幸,這些細節(jié)恰恰是在兩個開發(fā)者任務之間那就麻煩了。相互推諉責任,相互“踢皮球”是不可避免的,類似下面的話就會變成團隊的主要語言。
A:“你的方法中怎么沒有……的數(shù)據(jù)處理啊,這樣傳給我的我還得再處理!”
B:“處理這個數(shù)據(jù)不應該是你做的么?”
A:……
可能無論誰處理一下這個數(shù)據(jù)僅僅需要1個小時,但是爭論到底是誰的責任卻會花費數(shù)小時,這也是導致團隊開發(fā)進度緩慢的原因之一。但是如果有另一個人在場(要是項目經(jīng)理最佳),無論第三人到底向著誰,這場“戰(zhàn)爭”雙方人員比例肯定是2:1。這樣一來對于整個項目來說會大大縮短不必要的爭論時間。
整個預期對話如下:
A:“你的***方法是不是沒有處理……數(shù)據(jù)呀?”
B:“這個數(shù)據(jù)處理應該在你哪吧,C你說對么?”
C:“按道理來說,這應該是B的責任,你看啊我是這么認為的……”
A:“我也是這么認為的,還有就是……,B你說呢?”
B:“好吧,我這就去加”(雖有一千個不愿意,雖有一萬個罵娘,但是……你懂得?。?/span>
l 溝通的方式無比重要:Change your words,change your world(點我呀)
要注意自己的說話方式,同樣的意思不同的表達,效果不同。不用或少用第二人稱,要多用“我們”、 “咱們”、“您”或者直接用昵稱(*哥、*姐等等)之類的代詞開頭。試比較下面的句子
方式一:“你為什么不這么寫這個方法?”
方式二:“咱們?yōu)槭裁床贿@么寫這個方法?”
毫無疑問第一句帶有責怪的語氣,盡管你說的時候可能沒有這個意思,但是聽者會很容易這么認為。如果再加上任務繁重、心情煩躁,那么這勢必會造成團隊內(nèi)部的不和諧。
無論自己的心情是多么的不好,請使用禮貌用語!試比較如下不同的對話。
對話一:
A:“你的那個方法寫完了沒有啊,快一點啊!哥等著測試呢!”
B:“哦”(TMD跟誰充哥呢,慌你妹,趕死?。【筒唤o你寫?。?/span>
對話二:
A:“*哥(*姐)咱們的那個**方法實現(xiàn)了沒有呀,拜托稍微快一點啊,你那一搞定我這就基本可以完工了,完事兒咱一起去喝茶啊。”
B:“好的呀,馬上啊~~”
一樣的意思兩種不同的表達方式,感受就截然不同。第一種很難讓人接受,正常的人聽了多少會不好受,雖然括號里面的話并沒有說出口,但是那已經(jīng)影響到了團隊內(nèi)部的和諧氛圍。要盡量多用第二種那沁人心脾的話語才能使團隊更有戰(zhàn)斗力!
其實關于禮貌用語方面中國人普遍做的不好,很多人認為大家都是自己人,那樣說話未免太虛假,恰恰相反正因為是自己人所以才更加需要尊重彼此!從接觸的外國信息(例如外文、美?。﹣砜?,在國外無論是不認識的人之間,還是親的不能再親的親人之間都是非常尊敬對方的。雖說中國是什么“禮儀之邦”但是國內(nèi)外對中國人禮貌方面評價普遍不高。我想這也可能是為什么中國造不出大型軟件(操作系統(tǒng)、數(shù)據(jù)庫等等)的原因之一吧。缺乏友好的溝通,組員之間彼此不服氣、整個團隊矛盾重重、相互使絆,那這個團隊還合作個磷?。。?!
以上幾方面是自己在合作時候的感受,希望可以幫助您的團隊更好的合作,請牢記:沒有凝聚力的團隊最終的結(jié)果必是“食盡鳥投林,落了片白茫茫大地真干凈!”