軟體設計和編碼中有壞味道,管理中一樣存在壞味道,而且禍害更大。結合自己幾年的工作經歷,試著分享幾種:
1)壓迫式管理
市場的發展要求軟體的交付速度要越來越快,而成本要不斷降低。這是一種趨勢。但軟體開發的種種不確定性導致軟體的交付通常需要比“期待的”要更多些時間。這確實一個規律。不過有的公司無視這個軟體的開發規律,採用“期待”時間制定計劃。比如通常需要半年完成的專案,制定計劃時就給兩個月。計劃出來的時候,大家心裡都明白,“這只是個笑話”。但日常管理中就會以這種計劃控制進度,計劃也成為了懸在開發人員頭上的一把尖刀和管理人員手中的另一個砝碼。從此開發陷入了無盡的延期和加班。最後專案提交了,質量雖然有點低下但僅用了三個月。這樣的專案不斷重複,領導們也看到了規律,雖然有延期,但還是可以加快進度的,所以這樣的方法屢試不爽。而專案的參與者通常只能疲於應付,開始忘記了思考和決策,只能是應付。計劃的嚴肅性也就灰灰湮滅。
2)放養式管理
這種管理其實很簡單,分配任務然後督促進度。這樣的管理下每個團隊都拿到專案,每個成員都承擔某些模組,然後就埋頭苦幹,期間會很少交流。設計、程式碼中充斥著“個人”的味道和喜好。沒有規則,也就沒有一套統一的風格和理念。每個人都緊鎖著自己心中的酸甜苦辣,默默暗喜於自己小小成就的同時也不斷重複著別人經歷的摸索。專案初始可能還可以承受,但隨著越來越多的人蔘與進來以及越來越多的人離開,專案就開始變得無法維護。個人的成果很快成為了大家的雷區,無人敢去觸碰,出問題的時候迫不得已的一次改動可能就看到了無情的崩潰。新人得不到規範地指導,老人也不會再被挑戰中調整和進步,人員流動成為了常態。
3)簡單管理
有的公司專案的日常管理有專門的團隊進行,而有時這些團隊並不熟悉軟體開發及其規律,通常就只能按照最初安排的計劃進行確認。管理人員和開發者之間除了“是否完成?”“是否延期?”之類的對話外沒有其他共同的語言。這種結果導向式管理很快讓開發人員在經歷一些開發障礙時通常感覺有點煩,因為這時得不到急需的理解和支援,而是還得彙報“沒完成”,“有點延期”。同時開發人員乘機的一些忽悠也使得進度監控失去了意義。簡單管理導致的後果就是開發人員和管理團隊之間巨大的交流溝壑,溝壑中迴響著總是“是否完成?”“是否延期?”。
軟體的發展有賴於軟體的管理進步。但軟體管理從科學和藝術淪為工具的時候,所開發的軟體還能值得期待嗎?