研發(fā)管理就是在研發(fā)體系結構設計和各種管理理論基礎之上,借助信息平臺對研發(fā)過程中進行的團隊建設、流程設計、績效管理、風險管理、成本管理、項目管理和知識管理等的一系列協(xié)調活動。這是百度百科上的定義,不能說沒有一定道理,不過卻不太實用,很難看出其中的重點所在。
套用項目管理鐵三角的說法,研發(fā)管理三大重點則應該是效率、質量和成本。而團隊建設、績效管理、風險控制、知識管理、流程設計、項目管理等等可以認為是輔助手段或者是包含在進度、質量和成本控制中的內容。例如,流程設計應該是效率范疇中要考慮的問題,提升效率,必然要從過程即流程設計著手;而項目管理本身就包含進度、成本與質量,也與之相符。
成本控制上,在人力資源給定的情況下,研發(fā)開銷是基本固定的。對于研發(fā)成本的控制,更多的是資源是否用在刀刃上,是否做對了項目,研究對了課題,這方面的控制主要體現(xiàn)在公司的戰(zhàn)略規(guī)劃、產品規(guī)劃上面,做錯了產品、方向,往往是浪費最大的。規(guī)劃任何一個新產品都需要做到“大膽設想、小心求證、重質量輕數(shù)量”,嚴格立項過程。而且就研發(fā)來說,技術積累很重要,過去的成功經驗未必能夠復制到新的領域,因而進入任何一個新的領域,都需要慎之又慎。這部分的工作,大部分都產生于公司決策層面和產品規(guī)劃層面,對于研發(fā)部門來說能做的比較少。因而研發(fā)管理的重點還是在效率與質量上。
對于效率問題,在《研發(fā)感悟之二--過程與方法論》、《研發(fā)感悟之三--敏捷開發(fā)》兩篇博客中進行過論述。并據(jù)此在09年冬天和2010年初進行過實踐,取得了較好的效果。因此,可以說研發(fā)效率問題可以說已經基本得到了解決,這里就不再繼續(xù)探討。我們這里關注的是研發(fā)管理的另外一個重點--質量管理。
研發(fā)質量很多時候,會被理解為QA(Quality Assurance)和QC(Quality Control),往往歸宿于質量管理部門。QC往往關注的是產品而非體系,在軟件研發(fā)領域對應的就是測試;而QA則建立體系并確保體系按要求運作,涉及到過程內容(流程設計)。QC是通過對質量的結果進行檢測、鑒定,防止劣質產品的發(fā)布;QA對研發(fā)是否符合過程進行控制。通過QA/QC兩個環(huán)節(jié)的配合,確實能夠起到一定的質量控制作用,但質量管理單單靠QA和QC是遠遠不夠的,會存在很多問題與漏洞,更重要的是技術經理們在設計、開發(fā)環(huán)節(jié)中進行控制。
首先,在微觀問題上,QA人員由于能力的限制對研發(fā)過程中細節(jié)的把握不可能像開發(fā)經理一樣到位,這就注定了對于流程是否符合的控制,往往是僅僅解決了要做什么的問題,而無法解決怎么做,做得怎樣的問題?!霸趺醋?,做得怎樣”,這往往跟執(zhí)行者的能力相關,僅僅靠流程、控制點是難以達到的。而且過程中的細節(jié)問題,很難去全部規(guī)范完備、做到滴水不漏,即使真的做到滴水不漏,也必然使得過程過于龐大而導致效率低下。就如同有些SOP去規(guī)范員工如何寫郵件一樣,那應該是小學語文老師的工作,不是QA所要關注的點,也不具有可操作性。
解決怎么做,做得怎樣的問題則需要技術經理去控制,而且在控制過程中還需要注意方式方法。例如,開發(fā)過程中要求規(guī)范編碼,包括規(guī)范編碼風格、采取統(tǒng)一的變量命名方式、必要的注釋、抽取公用函數(shù)解決重用問題、代碼不合理情況下進行重構、設計不足情況下優(yōu)化設計等等。而這些往往就是QA們難以做到,也非QA人員能力范圍之內,即使做了也難以控制好的,這就需要技術經理們的去進行管理、同時靈活把握方式方法。就像王傳福所說技術人員往往不善于交際、脾氣怪一樣,程序員們大部分也都這樣,容不得其他人指手畫腳,技術經理們當面去指出程序員那里代碼寫得有問題,很多時