世界上有兩類軟體公司:一類像工廠另一類像電影攝製組

36kr發表於2013-02-22

  前一段時間,程式設計師問答網站Stackoverflow上有人提問:“我們都知道程式設計比做甘特圖(專案進度管理圖表)要更難,而且程式設計師加班也更多,那為什麼IT公司裡PM和BA的工資比程式設計師要高?” 英國的Vlad Gudim給出了一個很有意思的答覆。

  這個問題的答案取決於你工作在一個什麼樣的軟體公司和環境。

  簡單回答,原因是我們生活在一個按照職位在公司的層次和等級發工資的社會。但是這個答案並不完整,因為我們沒有回答為什麼PM和BA職位的等級在很多軟體公司裡比程式設計師要高,也沒有回答為什麼很多軟體公司要選擇這種等級制度的管理方式;這兩個問題其實才是最值得探討的。

  概括地來講,這個世界上有兩種做軟體的公司:一種類似於工廠,而另一種類似電影攝製組。

  工廠型的軟體公司起源於MIT Sloan管理學家Douglas McGregor提出的激勵理論Theory X:普通員工是懶惰的,而且需要不斷的監督和管理;員工來工作只是為了拿工資;經理的能力永遠要比手下的員工強。在這種管理理念的影響下,我們會認為團隊的領頭可以代表,甚至於替代他的整個團隊,而團隊成員只是完全可以互換的人力資源,他們的唯一價值就是幫助領隊完成任務。因此,這類公司都採用等級制度的管理方式,工作的分配也很單一。

  軟體工廠的管理層認為軟體是可以通過一個很明確的流程生產出來的,而這個流程需要PM的監督和BA寫出來的軟體specs。生產過程本身只要有足夠合格的但是可以隨時替換的程式設計師和QA就搞定了。當然專案的預算和最後釋出的產品也都是PM和BA說了算。

  軟體工廠的經理人是很容易識別出來的,因為他們在形容軟體製作時會經常提到“資源”(指的是他們團隊的成員)、“流程”、“運營效率”、“質量監控”等工廠生產業的術語。

  而另一種軟體公司類似於電影攝製組,他們的管理理念來源於McGregor提出的Theory Y:他們認為員工是自覺而聰明的,也很喜歡自己的工作,對待工作像小孩子對待玩耍一樣。這類公司認識到個體工作者(individual contributor)的能力有可能遠遠大於管理人員。當經理不可以代表和替代所有手下人的時候,等級制度的管理方式就不太好使了。人們需要在一種更扁平化的團隊結構下互相合作,工作的分配也更加多樣化,每個人都需要具備多種能力。

  攝製組類軟體公司的“導演”會意識到如果想做出一個很好的產品,他需要很牛的人加入他的團隊,而他需要給這些人一個可以盡情發揮與合作的環境。導演這個角色給予他人靈感,而且掌控大方向,而不是單純的管理者。團隊裡的每一個人都很重要,因為最後的產品是團隊上所有人性格和思維的體現,而不是某某BA寫出來的軟體specs。

  在工資方面,軟體工廠會認為在等級化組織頂端的PM和BA是最有價值的,所以自然會給他們最多錢。團隊的其它成員只要差不多,會把specs變成程式碼就可以了。PM和BA會勾心鬥角全力維護他們在頂端的位置,不與團隊成員分享很多有關專案的資訊。沒有這些資訊,團隊成員無法自己做很多設計上的決定,所以只能聽從命令,按照specs來寫程式碼。這種情況會構成一種惡性迴圈,軟體工廠的程式設計師會真的變成像工廠裡的流水線工人一樣,只會做技術上覆雜,但是實際上重複性很強的工作。

  相比之下,攝製組類軟體公司會更加平等;所有的團隊成員都可以參考有關專案的所有資訊,並且做出自己的判斷和設計決定。誰有能力誰就可以來領頭專案的某一部分,而工資的分配是依據這個人給團隊和產品帶來了多少價值。在這種公司裡面,PM往往不負責產品設計和創意,而僅負責一些行政和與外界打交道的事情。BA的職位可能根本就沒有,而是所有團隊成員都承擔一些軟體spec的編寫。

  當然,你應該知道很多大公司的內部IT部門和外包類軟體公司都是像我所形容的軟體工廠。在這些公司裡,PM和BA的工資比程式設計師要高,而且程式設計師很難改變管理層做出的設計決策。

  成功的軟體公司往往傾向於電影攝製組型,因為只有這樣,他們才可以吸引最優秀的人才來做出最優秀的軟體。

  在軟體公司工作的讀者們,那你的公司是屬於哪一類呢?

  英文來源: programmers.stackexchange.com

相關文章