論證,也有了一定的投資和時間預算,產(chǎn)品立項了。但這只是一個良好的開端,因為下面的任何一個過程的失敗,都有可能導致全盤皆輸。
二、團隊構建
產(chǎn)品立項后,就要開始組建研發(fā)團隊了。軟件開發(fā)是一個既要高度協(xié)作、又有獨立創(chuàng)造的智力活動。所以人的因素是關系到產(chǎn)品開發(fā)能否成功的一個重要方面。應該說產(chǎn)品能否研發(fā)成功,研發(fā)團隊的合理構建是關鍵性的。一個公司的領導層或許沒有多少軟件研發(fā)的經(jīng)驗,但必須要保證能構建一個合理的研發(fā)團隊。就點很容易理解,就是讓合適的人去做合適的事。不過反過來說,如果領導層沒有軟件研發(fā)的經(jīng)驗,那也很難構建一個合理的團隊。
那怎樣構建一個好的團隊呢?這個問題沒有一個非常普遍的答案。各個產(chǎn)品的規(guī)模、技術難度都不相同,答案也不一樣。我們時常看到的情況是,公司會任命一個研發(fā)經(jīng)理或叫PM,負責整個研發(fā)過程。于是問題就出來了。這個PM是負責管理工作還是技術工作,或者兩個都一起負責?怎樣規(guī)定PM的職責權限?如果沒有對這個問題的明確答案,那危險就隨之而來的。就來我的經(jīng)歷過的來說吧。在離開上一家公司后,我來到另一家軟件公司做網(wǎng)上教育平臺的產(chǎn)品研發(fā)。前期階段可以說沒有一個專職的項目經(jīng)理,管理工作基本上由一個做技術的Team Leader(架構師)負責,雖說也有不少問題,但大家基本上還是團結在一起安步就班的工作。后來公司為我們團隊招來一個PM,此君是海龜派,在國外、學習工作好幾年,也有技術背景。我們對他也充滿期待。沒想到過了不久,他居然把我們的Team Leader給開了,找了一些大家都不認可的理由。并自任技術負責人,對我們的大部分的技術方案都持否定態(tài)度,并嚴厲要求我們服從他的技術領導。如果他精通技術也就罷了,關鍵是他的技術一點也不怎樣,還自我感覺良好。那最終的結果可想而知了。產(chǎn)品基本上失敗,技術人員紛紛跳槽,最后,這個 PM也只得走人了。
這樣的故事每天都在發(fā)生,大量的技術人員在抱怨領導不懂技術,瞎指揮。在我的案例中,可以明顯的感覺到,公司對這個PM沒有明確的職責劃分,或者這個PM沒有擺正自己的位置。這個PM應該做做管理工作,而不是負責技術。做軟件開發(fā)的都知道,一個團隊中一般都有一個技術領導,或者叫架構師(Architect)。那他和PM怎樣劃分職責?如果要開發(fā)的產(chǎn)品規(guī)模比較大,比如人員數(shù)達到10人以上。這時面臨的管理、組織工作比較多,公司應該考慮起用一位專職的PM來負責這方面的工作。他的主要工作包括人員招聘,提供開發(fā)團隊所需資源,制定計劃,監(jiān)督實施等,同時,他應該是一個能夠鼓動士氣,懂得調(diào)動員工積極性的親善的領導人,對作為一個PM的職位來說,個人的素質(zhì)和性格應該具有更決定性的意義,他主要工作是為研發(fā)團隊提供一切必要的服務,監(jiān)督的作用應該包含其中。在這樣的團隊里,必須存在一位架構師來全面負責技術工作,他有權獨立決定技術方案,他與PM的關系是團結與合作,而不是領導和被領導,架構師應該得到PM應有的尊重,而這點在中國很難做到。很多PM干涉架構師的技術工作,甚至起而代之,造成團隊之間的混亂。上面的案例正是說明了這一點。架構師一般都是有一點完美主義,他總是希望看到產(chǎn)品做得更加出色,但這是否讓產(chǎn)品開發(fā)走向不可控制的地步?事實上,架構師要對現(xiàn)實情況作出妥協(xié)(如時間、資金的限制),也就是對PM作出妥協(xié)。如果說PM代表時間、資源的現(xiàn)實主義,那么架構師就代表著完美的理想主義,他們就是在不斷的合作、妥協(xié)中共同推動產(chǎn)品的發(fā)展。
對于開發(fā)的產(chǎn)品規(guī)模較小,也可以完全不設置專職的PM。設置一位Team Leader,他既負責整個技術、也同時負責團隊的管理工作。如果認為負擔較重的話,