如何讓研發(fā)管理工作更加簡單高效
作者: 來源: 文字大小:[大][中][小]
原來是從事顧問類的工作,對別人工作中存在的問題指指點(diǎn)點(diǎn)(即咨詢顧問的工作內(nèi)容),后來在一次偶然的機(jī)會中轉(zhuǎn)行做了研發(fā)類工作的管理,剛?cè)氪?行,困難重重!
首先,對技術(shù)人員的管理就是一個非常嚴(yán)峻和現(xiàn)實的問題。由于原來的技術(shù)人員中有一位在該環(huán)境中工作時間比較長,資歷自認(rèn)為很老。在他的帶領(lǐng)和影響 下,幾個技術(shù)人員都采取不合作的態(tài)度。雖然經(jīng)過一段時間的努力與嘗試,但還是收效甚微。在這段工作中,為了后期的工作便于開展,倉促間招了一些人,良莠不 齊,但有人干活總比沒有干活的強(qiáng)。艱難中工作了一段時間,幸好這段時間的工作過程中與老板保持著充份的溝通,使得老板非常理解本人的處境和工作進(jìn)展。但原 來的那幫人一直沒有太多的改觀,我也無暇估計他們的工作情況和感受,多次努力改善與他們之間的相處之后還是沒有得到好的結(jié)果,在征得老板的同意后,把他們 全部干掉(因為在此過程中,他們也犯了一個不可饒恕的錯誤,把公司的產(chǎn)品代碼轉(zhuǎn)賣給別人)。
這樣一來,內(nèi)部的工作暫時理順了,但是實際遇到的困難還是存在的,人員的技術(shù)素質(zhì)和對該技術(shù)的積累使得對項目的把握能力很差,于是又在尋找更高素 質(zhì)的人加入。就這樣不停地循環(huán)和反復(fù),到了現(xiàn)在,這個問題得到一定的好轉(zhuǎn)。
目前面臨的問題就是如何使這些人能夠更高效地工作,其中也找了一家研發(fā)咨詢公司做了相關(guān)的工作,可是還是沒有得到很好的效果。所以就陷入了一個新 的困惑中:如何讓研發(fā)工作的管理更簡單、更有效,這也將是我下步工作中的主要解決難點(diǎn),也希望能夠得到各位高手的指點(diǎn)。”
這位仁兄遇到了遇到的困境也正是大多數(shù)
研發(fā)管理者可能經(jīng)常會遇到的:
1:研發(fā)管理理念與研發(fā)管理實施。
研發(fā)管理咨詢師能夠為客戶提供管理理念和思想,但是對如何將這些先進(jìn)的管理理念付諸實施經(jīng)常顯得無能為力。多數(shù)情況下告訴你哪些做法不對,哪些做 法是對的是比較容易的;但是卻很難告訴你具體如何做?就算具體告訴你如何做?你也不知道如何應(yīng)對實施過程中的困難?或者很多情況下你的團(tuán)隊可能根本不具備 實施這些管理理念的條件!目前國內(nèi)對研發(fā)管理的咨詢很多基于
IPD,CMM的思路,但是這些管理思路多數(shù)情況下也就是看起來很美,要真正實施起來遇到的困 難和能夠切實帶來的效果很值得讓人再三衡量。沒有人買鞋時不將鞋穿上腳并走幾步試試,但是我見過有些公司
采購管理系統(tǒng)后發(fā)現(xiàn)根本“穿不上腳”的失敗案例, 因工作的原因,筆者總是偶爾能耳聞一些公司耗近百萬采購“咨詢+IT管理系統(tǒng)”后的悲慘結(jié)局,聽來讓人惋惜。
2:人員流失尤其是資深技術(shù)人員的流失對公司的影響。
任何公司的研發(fā)人員流失特別是資深技術(shù)人員的流失都會或多或少的給公司帶來一些影響。對于小公司而言,有時這種人員流失足以讓一個公司停擺。但是 人員流動又不可避免,因此研發(fā)管理者應(yīng)該對此采取相應(yīng)的預(yù)防措施。必要的文檔,關(guān)鍵崗位的備份,資深人才的長期激勵等都是方法,但是最怕的就是沒有采取任 何預(yù)防措施。這里說一個真實案例,杭州一家為制襪企業(yè)提供織花控制產(chǎn)品的公司,由于公司比較小,只有3個研發(fā)人員,1個硬件,1個軟件和1個項目經(jīng)理,結(jié) 果這個做軟件工程師離職后,新來的人員發(fā)現(xiàn)這個離職的軟件人員連公司產(chǎn)品的軟件代碼都沒留下,只得再從零開發(fā)!在CTO俱樂部里,也聽聞有個公司的經(jīng)理被 研發(fā)人員要挾到連代碼都不敢要求提供。看到這些事例真是讓人感到惋惜,其實做老板的只需要做一點(diǎn)點(diǎn)工作,就可以避免這種悲劇的發(fā)生。對這些小型企業(yè),我有 一個建議:花幾千元錢買個臺式機(jī)做服務(wù)器,在該計算機(jī)上安裝一個代碼管理系統(tǒng)(SVN,SourceSafe),安裝一個文檔管理系統(tǒng);然后要求公司所有 代碼和文檔,都必須歸類存放到該服務(wù)器上,當(dāng)然,出于安全考慮,這個服務(wù)器最好將硬盤配置成雙備份模式。
3:公司的核心研發(fā)機(jī)密如何能夠被保護(hù)。
對大公司來說,核心機(jī)密往往存在于人的頭腦中,但是由于往往涉及的產(chǎn)品都比較復(fù)雜,一兩個開發(fā)人員的離職并不會導(dǎo)致核心機(jī)密的泄漏,但是對中小型 公司而言,核心開發(fā)人員的離職很可能導(dǎo)致核心機(jī)密被競爭對手竊取。因此必要的權(quán)限管理還是需要的,對于能夠接觸到的文檔和代碼,最好在不影響開發(fā)工作的前 提下,盡量啟用較為嚴(yán)格的權(quán)限控制。如果是采用信息化管理系統(tǒng),最好對系統(tǒng)的權(quán)限控制這一塊仔細(xì)評估一下。時而聽到一些小公司的老總開玩笑,研發(fā)資料放到 到處都是,反而不容易泄密,至少不會被內(nèi)賊一鍋端走,如果整理得很好,反而容易被搞走。
4:如何讓研發(fā)工作的管理更加簡單高效。
讓研發(fā)管理工作更加簡單高效,我想這是所有研發(fā)管理者的心聲。然而研發(fā)工作自身的規(guī)律決定了研發(fā)管理工作并不簡單,即并不存在簡單的管理。姑且不 說CMM的實施,很多團(tuán)隊在實施SCRUM方面都困難重重。有一位研發(fā)主管在聽我介紹TOPO研發(fā)管理系統(tǒng)后問了一個問題,你怎么能夠保證研發(fā)人員填寫的 信息的真實性?他指的是研發(fā)人員完成某個任務(wù)后,會將該任務(wù)的狀態(tài)更改為完成狀態(tài),他的意思是如果研發(fā)人員沒完成某個工作卻直接將任務(wù)改成了完成狀態(tài)怎么 辦。記得還有一次一位研發(fā)主管問了類似問題:你這個系統(tǒng)好是好,要是研發(fā)人員不愿意用這個系統(tǒng)咋辦?這類問題同樣讓我想到另外一個同樣的問題:中美兩國舉 辦一個法律體制方面的研討會,出席研討會的中國法官問美國大法官的問題是,你們?nèi)绾伪苊庖粋€法官的腐敗,如何保證法庭的判決能夠得到執(zhí)行。
對于前3個問題,看得出這位老兄經(jīng)過一段困難期后總算勉強(qiáng)度過去了,能夠挺過去很大程度上是得到了老板的強(qiáng)力支持。對于如何讓研發(fā)工作的管理更加 簡單高效的這個問題,個人認(rèn)為不是方法太少而是方法太多,唯一需要的是需要仔細(xì)評估哪些方法適合引入團(tuán)隊,引入的方法如何才能夠被長期堅持并得到持續(xù)改 善。筆者個人看法是中小企業(yè)在研發(fā)管理方面可以注重下面三個方面:
1:研發(fā)文件體系的建立。
這個包括文檔管理和代碼管理。文檔很好理解,但是要注意,這里的文檔不僅僅包括諸如用戶使用手冊,產(chǎn)品白皮書等容易看到的正式文檔,也包括所有的 過程文檔,例如設(shè)計文檔,技術(shù)文檔,競爭對手資料,產(chǎn)品測試文檔等等。注意這里的文檔一定是所有而不是部分,將公司所有文檔存放到一個統(tǒng)一的文件體系下永 遠(yuǎn)都是必要的。代碼管理其實并不僅僅是指軟件人員編寫的代碼,硬件人員的PCB,原理圖,CPLD,測試人員寫的測試用例腳本,對外發(fā)布的版本等文件都是 代碼管理的范疇。可以說,無論是何種性質(zhì)的
研發(fā)團(tuán)隊,研發(fā)文件體系的建立都是必須的,否則隱患太大。
2:過程信息化體系的建立。
過程信息化體系的建立,盡管不是必須但卻很有必要。研發(fā)工作是包含了各種各樣的復(fù)雜活動,相對于其它類型而言,研發(fā)工作者對信息的依賴更加大些。 在授權(quán)管理下研發(fā)相關(guān)的各項信息的最大化共享對促進(jìn)研發(fā)工作高效開展非常重要。借助于信息化系統(tǒng),通過提供統(tǒng)一的工作入口,完全一致的工作方式,最大化的 知識共享與沉淀等來高效的提升研發(fā)效率顯得尤為必要。如果貴公司正好有研發(fā)過程信息化方面的需要,不妨評估一下集成式研發(fā)管理協(xié)作平臺,如TOPO研發(fā)管 理系統(tǒng)。
3:開發(fā)自動化體系的建立。
相對于過程信息化而言,開發(fā)自動化體系的建立容易被忽視。其實,隨著計算機(jī)技術(shù)的不斷發(fā)展,在開發(fā)自動化支持方面已經(jīng)有了不少成熟的解決方案。對 軟件開發(fā)而言,最典型的莫過于自動構(gòu)建與持續(xù)集成,其它還包括代碼自動走查,自動測試工具等。對硬件而言,也有不少自動測試手段,研發(fā)在生產(chǎn)加工的自動化 支持方面同樣有不少工作可做。其實,這里之所以提出自動化體系的建立,是指研發(fā)團(tuán)隊?wèi)?yīng)該不停審視所有的研發(fā)過程,盡量將能夠自動化的過程自動化。如果能夠 通過一個系統(tǒng)或計算機(jī)自動完成,就不要用人工的方法來完成這個工作。盡管很多研發(fā)過程自動化的建立相對而言比較耗費(fèi)時間,但是為企業(yè)研發(fā)團(tuán)隊帶來的效率的 提升卻往往非常明顯。當(dāng)然,自動化體系的建立是一個長期而艱苦的過程,但是真正優(yōu)秀的公司的研發(fā)核心競爭力也往往會體現(xiàn)在這個方面。
對于文檔體系和信息化體系的建立,我想不用過多的闡述大家都很容易理解,但是對于“開發(fā)自動化體系的建立”的這個概念,或許只是我的一點(diǎn)個人看 法,為了便于大家理解,我這里就用一個對電子通訊和儀器儀表等行業(yè)研發(fā)團(tuán)隊在嵌入式軟件開發(fā)領(lǐng)域非常適用的具體實例來闡述一下何謂開發(fā)自動化思想,如果您 負(fù)責(zé)的團(tuán)隊正好也包含嵌入式軟件研發(fā),我想你會更加容易理解下面的內(nèi)容:
對嵌入式軟件來說,堆棧空間有嚴(yán)格的大小限制,而堆棧的使用狀況對編程人員來說又不能夠直觀的被觀察,這直接導(dǎo)致在嵌入式軟件系統(tǒng)中經(jīng)常會遇到堆 棧溢出問題,一些低水平的開發(fā)人員總是容易在這上面犯錯。而這種問題一旦被引入到最終的產(chǎn)品中,其隱蔽性強(qiáng),導(dǎo)致的后果嚴(yán)重,且不易跟蹤重現(xiàn)。我們具體來 分析一下原因,從事過嵌入式軟件開發(fā)的人都知道,函數(shù)參數(shù)和函數(shù)內(nèi)的局部變量以及函數(shù)的遞歸調(diào)用層次等在函數(shù)運(yùn)行時都會對堆棧的占用產(chǎn)生影響,而一些編程 經(jīng)驗不足的開發(fā)人員往往容易在函數(shù)實現(xiàn)時在內(nèi)部定義空間要求過大的局部變量(諸如多維數(shù)組)。
大多數(shù)研發(fā)團(tuán)隊的解決思路是:將這個定義成編程規(guī)范,或者寫 成經(jīng)典案例,或者將這個檢查作為代碼審查的CheckList的一部分。但是,我要說的是這些方法都不是最優(yōu)的終極解決方案。這里我推薦我以前負(fù)責(zé)的研發(fā) 團(tuán)隊中采用的一種做法給大家參考:函數(shù)對堆棧的大小依賴是可以被靜態(tài)檢查的,在函數(shù)編譯的中間過程文件中,你可以分析一下里面的匯編語言,然后通過正則表 達(dá)式匹配找出函數(shù)實現(xiàn)的地方,并分析出函數(shù)對堆棧的使用情況。通過寫一小段堆棧使用檢測的掃描腳本,在每次軟件編譯后,自動運(yùn)行該腳本,然后將掃描的異常 結(jié)果發(fā)給相關(guān)人review。這個自動處理的過程在我們的系統(tǒng)中引入后,幾乎再也沒有出現(xiàn)過堆棧耗盡溢出問題。我總結(jié)一下上面的過程:開發(fā)人員 checkin代碼->自動構(gòu)建腳本運(yùn)行->構(gòu)建完成后自動運(yùn)行代碼靜態(tài)掃描腳本(這里可以是任何靜態(tài)檢查工具,如PCLINT和 C++Test以及我上面提到的堆棧檢測掃描代碼)->自動運(yùn)行測試腳步(如冒煙測試,Unit測試等)->自動保存build結(jié)果供后續(xù)人 工測試。上面的任何步驟失敗都會自動通知相關(guān)人。 以上過程說復(fù)雜也有些復(fù)雜,說簡單也簡單,畢竟你要做的僅僅是整合各種現(xiàn)成的工具,然后開發(fā)一點(diǎn)點(diǎn)自動腳本,但是這條自動生成線一旦建立,卻能夠切實提升 研發(fā)效率。
我上面只提到一個軟件開發(fā)的實例,其實在開發(fā)過程中,有很多具體的環(huán)節(jié)都可以通過一些自動化的手段顯著提高研發(fā)效率。如何發(fā)現(xiàn)哪些研發(fā)過程需要或 可以自動化呢?這個需要仔細(xì)觀察團(tuán)隊的實際工作情況,找出開發(fā)過程中重復(fù)的手工勞動比重大的工作,然后研究一下自動化是否可行,然后實施推廣。
上述三個方面的內(nèi)容談的都非常籠統(tǒng),任何一方面的工作展開來探討都是一大堆內(nèi)容,希望今后有機(jī)會能夠與大家共同探討一下這些方面的工作如何開展。