Ruddy Lee 分享空間

Emergent Design 演化設計

敏捷開發談「交接」

leave a comment »

<<同事離職,引發自己一陣聯想,就把它紀錄下來了>>

一個人若工作一輩子都待在同一家公司,這是幸還是不幸呢?

在離職轉換跑道之前勢必會面臨所謂的「交接」,到底該如何交接呢? 這是一個人生的大課題,有人草草結束,只留下Github上的一個帳號。有人大費周章的準備了許多文件,哪個對呢? 我個人覺得得依該公司、該專案以及交接人員的性質而有所區分。這一點,不想在這裡長篇闊論。但,在現實的世界裡,許多公司仍然採用傳統的Waterfall在開發專案,雖然實施敏捷開發法的公司越來越多,但是要求全公司都能理解敏捷的真諦或是擁有Scrum那種擁抱變化的精神,還真是有些難! 說起來,就好比公有雲、私有雲之爭的結論一般,混合雲才是真實世界出現最多的狀況。所謂的Scrum Under Waterfall 或 Agile Under Waterfall 或許才是真正的多數,所以只單純的憑藉任何一方的理論來談,似乎都有些遷強。而如何在其中做好該做的「交接」工作呢? 這一點書本上好像沒講,前輩們也很少談到這個,所以就來囉唆一下…。

交接重要嗎?

老實說,沒人愛搞交接,但它實在太重要了。對敏捷開發而言,交接是一種成本,這種花費,當然是越簡單越好。但對專案而言,沒了交接,如何讓客戶真正接手,如何讓軟體真正的上線呢!

對開發者而言,不論是交接給別人或是自己,在最後封存程式之前(我常常把有專案要交替時的程式備份的動作,稱之為”封存”),讓我們對自己也對未來可能看這支程式的人,說明白一切的流程,是否都如它所表現出來的一般,或是完全像,程式中的註解上所說的一樣的在運行。

在敏捷開發中,雖然每一個迭代,我們都努力的想交出一個紮實而可供執行的傢伙,但是對這些零零總總的交付,累積效應其實是一直存在的,也就是說;當功能越加越多、程式越長越大,測試的範圍及項目也會越來越多, 當完成客戶需求的具體實踐及測試案例的驗證,也就是說此時才是真正的開始。

讓程式自己描述,把程式交接給自己

對我曾經帶過的Scrum團隊而言,我們通常都會有一個共識(其實是要求),那就是要作好把程式交接給自己的工作。我常常稱它為「封存」,從一開始寫程式時就要注重命名,給變數、函式作最正確的命名。單元測試完成後的第一次重構尤其重要。此時,進行重構的第一件要事便是重新命名,讓程式依照單元測試完的結果重新再描述一便,目的是要讓程式能夠達到自我描述。讓程式碼盡量作到自我說明的動作,同時也讓撰寫程式的人在移到下一個函式撰寫前作最後一次檢查。

Unit test後依靠重構進行反思

依靠重構來完成自我反省並完成交接給自己的工作。這個重構的行為就像一輪迭代一樣,重構的過程feedback仍是重點,當你重構命名的時候,有關於這個函式的輸出入參數及功能也都會一併的擁有被重新命名的機會(這是眼前程式結構在給你feedback),這是交接中極為重要的事情,是給自己的即時交接(也就是對自己所寫出來的程式負責),此時的函式是會自己講話的。借助重構的力量來完成反思,讓函式變得更有意義。

在程式即將封存前,將測試案例(或可說是驗收報告)與測試的結果保存下來

敏捷開發的一個重要目標是要找到文件和溝通討論之間的一個合理平衡。測試計劃與可執行的測試案例以及一些記錄系列的東西,不論是內部或外部直接或間接對程式碼或文件有所影響的行為,這些都是極俱價值的東西。更足以成為程式交接時的好東西,不應該浪費的!

最後,送上Tom poppendick的箴言:

<精益軟件開發>一書的作者曾經說過:「當文件主要用於任務交接時,它們是罪惡的,而當它們是用來補抓交談記錄,使其不被忘記時,則是有價值的。」

雖然交接是一種浪費,但把它做成了有意義的記錄,卻是十分有價值的。

Written by ruddyllee

2012 年 08 月 04 日 於 14:41:43

發表迴響

在下方填入你的資料或按右方圖示以社群網站登入:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / 變更 )

Twitter picture

You are commenting using your Twitter account. Log Out / 變更 )

Facebook照片

You are commenting using your Facebook account. Log Out / 變更 )

Google+ photo

You are commenting using your Google+ account. Log Out / 變更 )

連結到 %s

%d 位部落客按了讚: