1. Communication
關於外部的溝通:
作軟體首先第一個面對的就是客戶,如何跟客戶進行有效的溝通,就是關鍵之一。
在與客戶接洽的時候,最好的方式就是實際面對面的溝通,比較容易確立 Customer 的需求。
由於客戶通常不是可以完整扮演 onsite customer 的角色,所以通常接洽的人必須兼任 Onsite customer 的角色,所以在
這方面,溝通是最關鍵且最重要的!產品能夠成功,來自於客戶的滿意度。
為了達成溝通的有效性,我通常會採取以下方式:
一、有重要的事情要確立的時候,會直接採取面對面的溝通。
二、有疑問時,直接透過線上會談及線上文件和相關圖片來詢問客戶的意見。(不能直接面對面時)
關於內部的溝通:
由於我們的開發團隊,並不是聚集在一塊的,尤其是有些是請國外處理的部分,而這部分,則透過通訊軟體和線上文件、圖片來直接溝通。對於 pair
programming 部分,雖然目前礙於人力所限,沒有辦法完整實施 pair programming ,但是我們透過 code
review 和 線上會談(開法時,透過線上會談,有任何想法都可以即時討論) ,來達到類似 pair programming 的效果。
2. 虛擬碼的重要性:
除了撰寫程式碼之外,由於開發者還必須扮演其他角色,有其他事務需要處理,在開發過程中,經常會有中斷的狀況發生,所以在正式寫下程式之
前,撰寫虛擬碼和工作日誌是相當重要的一件事,透過虛擬碼以及工作日誌,就能快速的找回到原本的狀態下,繼續撰寫。另外,虛擬碼對於 code
review 的部分也相當的重要。
3. Incremental 的重要性:
開發軟體,應該是以 incremental 的方式來進行比較恰當,先將基礎建設完畢之後,在層層向外追加功能。採行
incremental 的方式來進行,一、首先可以快速的讓客戶了解到目前專案的狀。,二、由於大部分的客戶,通常不是一開始就完整清楚系統整體的呈
現方式,所以在開發過程中,即便是一開始溝通已經很明確了,偶爾還是會遭遇到修正規格的狀況,所以透過 incremental 方式來開發,也能夠比
較容易符合客戶對於產品不確定性的狀況。
4. Spike solution 的重要性:
Spike solution 相當的重要。尤其是對於工作時間的預測很重要。早期透過 spike solution 可以做解決一些對於工時估計的
不確定性。並且透過 spike solution 發展的雛形,也能夠幫助客戶釐清一些規格細節和限制。
5. Sustainable Pace 的重要性:
最後則是要強調 sustainable pace 的重要性。有時候超時工作的確是不得已,但是超時工作是會帶來代價的。如:連續幾天的超時工
作,就會破壞原來的工作品質,當工作品質一旦破壞後,又會導致超時工作的惡性循環,當超時工作也無法達成目標時,就會導致產品品質的下降,實在是得不償
失的作法!所以維持 sustainable pace 是軟體開發重要的一環。