在前一篇 軟體團隊的崩壞與求生筆記 (中) 提到,在面對大量湧現的需求時,建議在記錄清楚需求後,優先處理較多使用者提出的需求。然而,這一建議在實際應用中仍存在一些模糊的空間,例如當每個需求僅由單一人提出時,或是多個人的需求是否真的比較重要等問題。我後來加入了另一個軟體團隊,其以能見度為導向,擁有較明確的規範處理順序。他們優先處理事宜的順序如下:
這樣的處理順序考量了不同層面的重要性和實際需求,以確保團隊在應對各類需求時能夠有條不紊、有效率地進行。不過順序並非是不能違反的,老闆給了我三個要納入考慮的影響因子:
在實行這樣的處理規範時,有些舊有的合作對象難免會產生不滿,曾經有人當面向我抱怨說:「我們就像進了你們家開的餐廳吃飯,可是餐廳在漏水你們不處理,上菜也越上越慢!」我很清楚,若非有這些舊有的合作對象,我們或許難以走到現在這裡,更沒辦法吸引到新的客戶。然而,我無法輕易地違反這樣的規範,在面對相處比較融洽的合作對象時,我會說實話,當面告訴對方這是我們求生存的手段,若我們因能見度不足而倒下,對他們也是有害的。
實際上,我會盡量讓每個合作對象的需求都有機會能被處理,同時也會參考平時與對方的交情,大家互相幫助;這時我可能會對老闆說這需求是我過往開發時沒處理好的,或是我自己造成的程式錯誤,即便事實並不是這樣的也沒關係;有時候我也會在檯面下悄悄完成某些需求。
一次深刻的經驗是,有使用者希望我們加快網頁的顯示速度,我想這對商業軟體至關重要,不過對於我們內部軟體並非迫切的。老闆也明確告知我這是非必要的需求,不需要處理;但是我發現我們已擱置那位使用者太多的需求,我仍私下進行修改,結果被老闆發現,我就尷尬的和老闆說這是我出於自我滿足而做的。老闆只說了「對」這一個字後就頭也不回地離開了。確實,做這樣的事還是有風險的。
最後,我想分享一個老闆提到的思考方式。老闆認為,當每個需求浮現時,最理想的情況不是自己處理,而是思考是否有辦法讓對方自行協助處理。舉一個例子來說,如果對方頻繁要求軟體團隊新增或更新某些規則進入程式中,或許可以考慮為其建立一個獨立的空間,使其能夠自行上傳規則,進行新增或更新。若是需要進行程式撰寫的,或許可以讓對方按照我們訂定的標準撰寫程式,再將其程式傳到在我們指定的空間,以便我們自動採用。這樣的方法既能滿足對方需求,又能減輕我們軟體團隊的工作負擔。
總結來說,在公司裡經營一個軟體團隊充滿著許多挑戰,這裡分享的是我所觀察到的和所學習到的,不見得是對的,或許也沒有所謂的對與錯,就供參考囉。