軟體專案評估教學 軟體工程師評估專案時程和難度的方法

Lin Yen-Cheng on 2019-05-18 10 min. read

時程評估

時程評估問題,在工作初期就開始被主管要求,但那時無法合理的評估,問題是對自身及專案的掌握程度都不夠完整,也不知道有哪些方法,主管建議的就是儘可能多查資料增加掌握程度。

在讀了人月神話之後,發現除了沒有先後關係也不需要討論的任務,其他專案時程確實會有時程估計上的困難,尤其在溝通成本過高的團隊中,這樣的問題會更明顯。

人月神話

難度評估

後來看了另外一本書 SCRUM:用一半的時間做兩倍的事,裡面建議不是去評估時間,而是用斐波那契數列去評估難度(2 3 5 8 13),這種數列好處是可以差異化分差。在決定難度的過程中,可以用投票的方式,其中比起舉手表決使用牌卡進行投票,會是一個比較不會受他人影響的方法,牌卡的數字結果也就代表這個問題的難度。

如果大家的分差過大或不一致怎麼辦?就再進行討論,討論為什麼簡單?為什麼困難?為什麼需要花時間?這樣估計的準度就會大為提高,也方便分派任務,且只有當每個人都發揮所長的時候,團隊的效率才有機會高於個人。

在這個方法中,感覺工時的估計可能不是重點,大家共同決定的點數才是,同類型的專案在團隊經過一段時間的磨合後,大概就可以看出團隊可以在一段時間內解掉多少的點數,時程的預估也才有參考的依據也更為真實。

增加產出

在個人的成效管理上,由於軟體工程師的工作性質關係,會是需要在專心的情況下才容易有產出,所以要儘可能去減少溝通成本

缺乏軟體開發團隊經驗的人,很可能會以為在口頭分配並得到口頭回覆後,就只需要心裡想著發大財或時不時的走去詢(打)問(擾)成員作事,所有待解問題就會迎刃而解,專案就會自動完成發大財然後放眼台灣、征服宇宙。而這樣的人也可能會認為,溝通是沒有成效可言的。網路上也就出現了下面的玩笑話:

Go away or I will replace you with a very small shell script.

在被沒有制度的團隊雷過以後,即使覺得打文件對自己來說並沒有什麼太大的幫助,我還是開始在團隊裡開始主動寫文件,像是開發時程、評估、重要的邏輯、參考資料等等,時間許可的情況下都盡可能把事情簡單的交代清楚。

後來發現乍看之下也許花時間,但比起來回的確認問題、回覆解答,那為什麼不練習一開始就把文件寫清楚? 這也許才是最有效率的方法。文件可以呈現的方法有很多:

  • Trello 的卡片:每張卡片等於一個 User Story,List 則用狀態分類。ex 卡片處在開發中 List
  • Google Doc:更詳細的文件
  • Google Sheet:開發時程
  • Readme.md:專案怎麼跑起來

品質管理 (PDCA)

  • P 計畫,在開會前就該把相關的資訊整理清楚,跳過只需要閱讀的部分,需要討論的才進行討論,畢竟開一個會把有產出的人關在同一個地方,成本是很高的,所以主持會議的人也要控制問題不要發散
  • D 當天要做的事項,每次討論的目的在能快速的修正及同步訊息
  • C 確認大家的進度、方向、遇到的問題
  • A 更好的方法,能夠趁今天試看看? 怎麼找出答案? 可優化的有哪些?

成效改善

PIP,Performance Improvement Period,開始工作之後慢慢會聽到部分公司有這樣的一個流程,主要是針對工作上有問題的同仁進行處理,當然合理的流程應該是主管在這之前要先盡主管的義務,盡可能去引導成員的效率。

看到這段流程讓我不小心回想起以前在某導航公司的時候,我們花了兩周訂了一個小目標,這個小目標是需要大家一起合作的,每天早上團隊會花個五到十分鐘進行問題及工作確認,然後就分別各自進行,那時候遇到了一個學長,出了問題沒有即時反應,而且有覆蓋伺服器上程式碼的問題,現在讀了一些書之後,發現主管應該是因為這樣的原因,才進行這樣的流程讓他離開的。

  • 問題:事件、結果
  • 原因:引導或探討問題發生的原因
  • 對策:引導解決方法
  • 計畫:訂出改善計畫

小結

這段時間的經驗下來,即使知道再爛的人在團隊裡面也可以有發揮的地方,但有時候會發現年紀較長且後段大學畢業的同仁,很可能因為以往經驗的關係會有很多既定的價值觀跟想法,這很可能是長期在特定環境經驗累積下來的一個結果,也才發現為什麼當時的公司主管會有名校的迷思,學校不是重要的,但學校影響在後續工作上的累積就會是重要的,在工作以及團隊成員的選擇上,這也許也是個需要考量的重點。

新創公司在徵才的初期,真的會有蠻大的後遺症

圖片來源: https://cdn-images-1.medium.com/max/2600/1*1ytrUVfjjOh7rJDorSj8eA.png


喜歡這篇文章,請幫忙拍拍手喔 🤣

share