說簡單點就是分工要明確,按照博弈論的觀點,假如我們每個人的目標(biāo)都是合理的,那么我們通過相互的制約很好的推進(jìn)項目的周期,但是如果角色分配的不合理,比如說職責(zé)重復(fù),缺少角色等等,那么開發(fā)的過程中就會遇到很多利益沖突,解決不好,就容易導(dǎo)致團隊不和諧,沒有凝聚力等等,最嚴(yán)重的情況就是大家各自為政,都聽不進(jìn)別人的意見,大家都是會為別人著想的人,但是有時候想得太多,總是會覺得不合理,不公平,難免影響工作情緒。
在我現(xiàn)在這個項目就有類似的問題,首先,就是沒有一個架構(gòu)設(shè)計人員,經(jīng)驗豐富的開發(fā)和經(jīng)驗較淺的開發(fā)做的事情是差不多的,整體架構(gòu)的設(shè)計名義上是大家一起來做,但是在開發(fā)過程中就發(fā)現(xiàn)了問題,對于一個架構(gòu)變動,沒有人有決策能力,TM只會說,有問題跟我說,然后你發(fā)現(xiàn)了問題告訴他,他卻不知道和誰來商量,經(jīng)過和一個個的開發(fā)者進(jìn)行了討論,認(rèn)為這個架構(gòu)的變更確實是必須并且可行的時候又要開一次會,來討論怎么來做這個變更,由誰來負(fù)責(zé)這個變更,所以說,SD是必須的。而在一次會議上我聽別人說做SD必須要有10年的經(jīng)驗,我覺得有點可笑,有很多優(yōu)秀的開發(fā)在很早就做上了架構(gòu)師,我認(rèn)識的人里面就有一個,其實我覺得邏輯思維能力較強,有整體架構(gòu)思想,并且對項目中使用技術(shù)有一定研究就可以做SD了,倒是我不明白現(xiàn)在為什么很多軟件公司都特別在乎工作年限,認(rèn)為做了10年IT就是萬金油了,什么事情都可以解決,真是大錯特錯。
我認(rèn)為,做什么事情都有一個精與不精的區(qū)別,假如那句什么語言不重要,重要的是思想,一通百通的話我覺得真是沒什么意義。我們都知道C和JAVA.NET的側(cè)重點不一樣,一個偏向底層,一個偏向應(yīng)用,讓一個做C做了10的人去做一個網(wǎng)站可能都做不好,為什么?因為他沒有對網(wǎng)站應(yīng)用根本就不了解,用戶需要什么他都不知道,他腦袋想的只是如何使用戶體驗更加的絢,但是卻不知道網(wǎng)頁上能不能實現(xiàn)這個絢的效果,網(wǎng)頁上上傳做個進(jìn)度條能不能實現(xiàn),實現(xiàn)的難度大不大,他都不知道,這樣的架構(gòu)師能做好網(wǎng)站嗎。同樣讓。NET程序員去做JAVA的事情也不一定做的好。聞道有先后,術(shù)業(yè)有專攻,這句話是有道理滴。
我以前就碰到過這樣一個PM,讓我去做一個圖片處理的程序,他想讓我把一張圖變清晰,我覺得一張從100K壓縮成了10K的圖你還想讓他變清晰仿佛是不可能的事情,用腳趾頭想問題也知道那丟的90K是干什么的,PM要我多測試幾次,經(jīng)過測試確實是不可行的,但是PM不相信,因為他做了一年多的開發(fā),于是中午不吃飯跑到我的機器上寫代碼,口中還念念有詞的,等我吃完飯睡好午覺,他終于認(rèn)輸了,雖然如此,但是從這件事上我就覺得有點不痛快,多的就不想說了。
角色分配的問題還體現(xiàn)在我們不能越庖代廚,如果你是RD,你就不要過多的去擺弄需求,覺得需求不該這么做,因為這個問題不該你想,想這個問題只是浪費時間。如果你是PM,你就不要過問架構(gòu)和技術(shù)細(xì)節(jié),因為你始終不如開發(fā)了解實際的問題,如果你是一個做了十幾年開發(fā)的PM,自己手下的技術(shù)不如自己,硬要按照自己的想法去做事,那么不要做PM,你可以做個SD。