程序員做領(lǐng)導(dǎo)需要的一些特質(zhì)
![](http://image.woshipm.com/wp-files/img/55.jpg)
背景:
我們公司有一位COO,Yahoo過來的,做產(chǎn)品經(jīng)理出生。下面有2個(gè)SVP,一個(gè)技術(shù),一個(gè)產(chǎn)品經(jīng)理。技術(shù)的SVP性格比較溫和,不強(qiáng)勢(shì),最看重的是make things done。產(chǎn)品經(jīng)理的SVP性格強(qiáng)勢(shì),是COO從Yahoo招過來的。
網(wǎng)站的流量也不大,一個(gè)站點(diǎn)16臺(tái)應(yīng)用服務(wù)器就搞定了,不是那種技術(shù)要求非常高的公司。
以上的背景就決定了,我們公司文化并不是工程師導(dǎo)向。很多事情,還是PM話語權(quán)比較大,公司策略,開發(fā)資源調(diào)動(dòng),主要是由PM來驅(qū)動(dòng)。甚至有時(shí)候需要多少開發(fā)人員,也是PM那邊直接給建議。
我們出現(xiàn)過的一些問題:
1. 我們有一個(gè)頁面,是網(wǎng)站最重要的頁面,因?yàn)殚L期在這個(gè)頁面添加各種功能,這個(gè)頁面的代碼已經(jīng)非常復(fù)雜,每次做一個(gè)小改動(dòng),開發(fā)人員會(huì)不經(jīng)意間弄壞其他功能,而QA測(cè)試跟bug修復(fù)的時(shí)候都要幾周。
2. 我們有個(gè)功能很獨(dú)立的組件,作為本地代碼放在我們網(wǎng)站應(yīng)用里面,于是出現(xiàn)了這個(gè)組件跟整個(gè)網(wǎng)站的代碼耦合很深,代碼互相牽扯。屢次想花時(shí)間把這個(gè)組件分離成單獨(dú)的web service,但是總是因?yàn)閎usiness需求的緊迫性,這個(gè)項(xiàng)目分不到人手。
3. 諸如此類的,以上種種的技術(shù)負(fù)債,就導(dǎo)致了我們有時(shí)候會(huì)在正式環(huán)境上出現(xiàn)一些很嚴(yán)重的技術(shù)問題,或者有一些簡單的需求卻花費(fèi)了巨大的開發(fā)代價(jià)。而最終為這些問題買單的,還是技術(shù)部門。
4. 有些PM會(huì)給一些所謂的“完成”的需求文檔,或者以我們要agile為借口寫一些不夠詳細(xì)的文檔。在開發(fā)過程中,開發(fā)人員花了很大的精力來討論這些需求,導(dǎo)致項(xiàng)目不斷拖延,開發(fā)人員因?yàn)楣て谕祥L,出現(xiàn)人員變更,而新來的開發(fā)人員又帶來了更多的bug,于是更加拖延了項(xiàng)目,結(jié)果就是,項(xiàng)目合作很不愉快。
去年美國那邊來了一位技術(shù)副總,在Oracle跟Collabnet呆過,我跟他一同負(fù)責(zé)Platform的開發(fā)工作。經(jīng)過大半年的合作,經(jīng)??梢栽诟恼?wù)撝?,感受到他一些?duì)我們很有用的想法:
1. 技術(shù)需要marketing
我的部門除了有Platform開發(fā)的團(tuán)隊(duì),還有一個(gè)團(tuán)隊(duì)是負(fù)責(zé)架構(gòu)的,跟Platform不一樣的是,架構(gòu)要做的項(xiàng)目都是技術(shù)部門自己催生出來的,所以經(jīng)常PM端,COO都不太了解我們做的項(xiàng)目。不知道為什么做這個(gè)項(xiàng)目,有什么好處。我相信在一個(gè)工程師驅(qū)動(dòng)的公司,這樣的問題并不是大問題。但是問題是我們是業(yè)務(wù)型公司。
比如我們最近在做的一個(gè)組件化的項(xiàng)目。
于是有一回,這個(gè)VP在跟我打電話的時(shí)候,談到這個(gè)組件化項(xiàng)目,他說,”XXX,你知道,你們現(xiàn)在在做的這個(gè)組件化項(xiàng)目,很危險(xiǎn)!“
我說,”怎么講?“
他說,”你覺得XXX(Platform的PM,是個(gè)VP)知道你們?cè)谧鍪裁磫?“
我說,”他應(yīng)該知道一些,我有跟他說過。“
他又說,”你覺得XXXX(我們的COO)知道你們?cè)谧鍪裁磫?“
我說,”他應(yīng)該不清楚,這個(gè)太技術(shù)了?!?/p>
他又說,”那你覺得XXXX(PM的SVP)知道你們?cè)谧鍪裁磫?“
我說,”他應(yīng)該也不清楚?!?/p>
他說,”那如果你這項(xiàng)目出現(xiàn)一些問題需要幫助的時(shí)候,或者說需要resource的時(shí)候,你覺得他們會(huì)幫助你嗎?“
我說,”看來不會(huì)。“(我心里想,肯定不會(huì),現(xiàn)在就出現(xiàn)問題了。)
他說,”如果有其他項(xiàng)目需要人,你覺得他們會(huì)第一個(gè)從你這個(gè)項(xiàng)目中抽調(diào)人手,還是從其他他們了解的項(xiàng)目抽調(diào)人手。如果現(xiàn)在他們發(fā)現(xiàn)開發(fā)部門的開發(fā)資源不足,他們第一個(gè)challenge的項(xiàng)目是哪個(gè)?“
我沉默。
他又接著說,“我們都是XXXXX(技術(shù)的SVP)的人沒錯(cuò),但是說白了還是XXXX(COO)的人,你現(xiàn)在拿COO的人,在做一些他不懂你們?cè)诟闶裁吹氖虑?,你覺得這樣是不是很危險(xiǎn)?”
我說,“嗯?!?/p>
他說,“我可以幫你。首先,你應(yīng)該以PM能夠懂的語言,解釋這個(gè)項(xiàng)目能給他們帶來的好處。你說說,你這個(gè)項(xiàng)目可以帶來什么好處?”
我倆Balabalabala了一陣子。
(用XXXX代人名太痛苦了,之后我還是直接用職位吧。)
然后他說,“所以你這個(gè)項(xiàng)目,F(xiàn)ront End的PM VP,Platform的PM VP都可以從中帶來這個(gè)益處對(duì)不對(duì)?“
我說,”是的?!?/p>
他說,”所以你現(xiàn)在不用他們的人手,卻在做對(duì)他們有好處的項(xiàng)目,對(duì)于這樣的好事,他們歡迎還來不及呢,對(duì)不對(duì)?“
他又說,“如果COO知道了,哇,原來架構(gòu)組還做一件對(duì)公司這么有好處的事情,那很好啊,這個(gè)組很棒!”
他繼續(xù)說,”可是,現(xiàn)在沒有一個(gè)人知道這件事情,所以,很明顯,你們做的marketing不夠?!?/p>
他說的很對(duì)。只要稍微懂技術(shù)的人都知道架構(gòu)的重要性,但是以前我們一直沒有固定的人員去做我們架構(gòu)組自己想改進(jìn)的東西,直到去年,我才說服我們技術(shù)的SVP,騰出固定的人員做架構(gòu)自己的項(xiàng)目。而如果我們有人能夠?yàn)槲覀兗軜?gòu)的項(xiàng)目做好marketing的話,我相信業(yè)務(wù)負(fù)責(zé)人會(huì)主動(dòng)為我們?cè)黾痈倪M(jìn)架構(gòu)的resource,支持我們的項(xiàng)目而不是像目前這樣睜一只眼閉一只眼的不管不問。而且也不會(huì)出現(xiàn),個(gè)別PM以他一知半解的技術(shù)知識(shí),把我們網(wǎng)站的架構(gòu)錯(cuò)誤的描述給公司的業(yè)務(wù)負(fù)責(zé)人。
2. 處理技術(shù)負(fù)債
我們技術(shù)部門跟PM有約定,在制定roadmap的時(shí)候,會(huì)給出20%的時(shí)間解決一些技術(shù)負(fù)債。但是我們一直沒有一個(gè)合理的流程來使用這20%。
最近技術(shù)部門在想辦法促成一件事情,就是從每個(gè)產(chǎn)品線的開發(fā)部門里面抽出一些比較強(qiáng)的開發(fā)人員,組成一個(gè)團(tuán)隊(duì),專門用來處理技術(shù)負(fù)債。這可能是一種變相的使用20%的方法。但是這件事情一直不好推進(jìn),因?yàn)閺臉I(yè)務(wù)端來說,這個(gè)團(tuán)隊(duì)做的事情對(duì)他們不透明。
而這位VP的做法是這樣子的。把處理技術(shù)負(fù)債的項(xiàng)目加到PM的roadmap進(jìn)去。
(我們的Roadmap其實(shí)就是每個(gè)產(chǎn)品線的年度工作計(jì)劃,什么時(shí)間做什么項(xiàng)目。)
我們以20%的時(shí)間,算出每一年用來解決這些技術(shù)負(fù)債的人周。然后根據(jù)這些總?cè)酥?,列出用這些人周可以完成的項(xiàng)目再制定計(jì)劃。這其實(shí)跟PM要做的項(xiàng)目很類似,從什么時(shí)間到什么時(shí)間,花多少人,做哪些事。但是我們?cè)谔嶙h這些重構(gòu)項(xiàng)目時(shí),要清清楚楚的以PM能夠理解的語言寫出我們具體要做什么,這個(gè)項(xiàng)目做了有什么好處。
這個(gè)方法,跟前者我們提議的方法比起來,從開發(fā)管理來看,更透明,也更可控。也更容易讓業(yè)務(wù)端接受。
3. 約定大家都接受的規(guī)則,然后大家嚴(yán)格按照規(guī)則來做事
比如說在項(xiàng)目管理里面,他會(huì)先說好,我們用SCRUM的方式來跑,大家同意了。于是就嚴(yán)格的按照SCRUM的方式來跑。當(dāng)在一些問題上有分歧的時(shí)候,就參照SCRUM流程來解決。
我們?cè)跍?zhǔn)備這個(gè)spirit的時(shí)候,PM必須要提前準(zhǔn)備好足夠的backlog給大家看。這樣我們就不用再從一個(gè)很粗略的很大的PRD去痛苦的找出開發(fā)人員要做的需求。
每個(gè)backlog都要有acceptance criteria。還要有對(duì)應(yīng)到PRD的地方。這樣開發(fā)人員就可以直接去了解他要做的任務(wù)。
開發(fā)人員在把功能交付給QA測(cè)試的時(shí)候,必須運(yùn)行QA提供的一些基本測(cè)試。這樣就防止了開發(fā)人員交付沒完成的功能。
這樣大家都有了清楚的,自己要達(dá)到的標(biāo)準(zhǔn),做得好,做不好,也很清楚。
最近他還做了一件讓我很贊成的事:
我們很多項(xiàng)目都會(huì)有一些所謂的consultor的角色,他們并不做具體的事情,所以很難界定他們做得好不好。但是在說明每個(gè)project花費(fèi)的時(shí)間的時(shí)候,他們又說有30%之類的時(shí)間在這個(gè)項(xiàng)目上。我注重實(shí)際的產(chǎn)出,所以我不太喜歡這樣子光說不做的角色。表面上很忙,但是具體對(duì)項(xiàng)目有多少的幫助,又很難說清。
于是我們?cè)谡務(wù)撃硞€(gè)“consultor”要做什么的時(shí)候,他會(huì)問清楚,這一位,扮演的是雞還是豬的角色。(不懂豬或雞的,請(qǐng)去了解SCRUM流程)如果是豬,那就是具體的開發(fā)人員。如果是雞,卻又找不出他是雞這個(gè)角色的理由。于是最終界定,他是豬的角色,也就是要參與具體的開發(fā)。我相信,這樣就避免了前者我說的那種不喜歡的角色。
我經(jīng)常在想,他為什么可以把很多事情推動(dòng)起來,而且讓大家都認(rèn)可,即使他有時(shí)候是贊同了一些人,而反對(duì)了另一些人,但是所有人還是都對(duì)他信服的。
我們?cè)侔焉厦嬉粭l一條的回顧。
1. 我們?cè)诟鷺I(yè)務(wù)溝通的時(shí)候,用擴(kuò)展性,穩(wěn)定性,易維護(hù)性,但是這不是雙方都能有個(gè)直觀印象的語言。做了對(duì)公司有什么好處,不做對(duì)公司有什么壞處,這才是雙方都有直觀印象的語言。
2. 如何處理技術(shù)負(fù)債。成立一個(gè)專門的小組去處理負(fù)債,這并不是一個(gè)雙方都能理解的做計(jì)劃的方式。Roadmap才是雙方都有個(gè)直觀印象并且都認(rèn)可的做年度計(jì)劃的方式。
3. 需求清不清楚,這是個(gè)很不直觀的判斷,每個(gè)人判別的方式不一樣,得出的結(jié)論也不一樣,但是有沒有acceptance criteria就很明了;
開發(fā)人員做到什么程度才算完成呢?跑完QA提供的基本測(cè)試才算;
SCRUM里面有個(gè)Consultor要做什么?人們可以很容易的說,他要幫助什么……,推進(jìn)什么……解決什么……,可以說出一堆一堆。直接問一下,是雞?還是豬的角色?非常的清楚明了。
這就是我想說明的這位VP的特質(zhì),不管跟什么人溝通,CEO,COO,還是PM,開發(fā)人員,他都是以雙方可以有直觀印象的語言來做溝通,他想知道你的意見的時(shí)候,提出的問題,盡可能的,不是給你出主觀題,而是選擇題。而要達(dá)到這個(gè)目標(biāo),我相信他在問每一個(gè)問題,每一次談話之前,都會(huì)先把思路理得井井有條。
VIA:難得簡單
- 目前還沒評(píng)論,等你發(fā)揮!