l

2013年5月29日 星期三

可是約耳說要關在自己專屬的房間啊

May 27 09:21~23:38

image

 

有一個問題Teddy在演講與上Scrum課程的場合被問過好幾次,今天就來談一下這個問題。很多鄉民都讀過《約耳趣談軟體》與《約耳續談軟體》這兩本書,在書中作者「約耳」建議每一個程式設計師都要有一個可以關上門而且有窗戶的房間,如此可以避免程式設計師的思慮不被吵雜的環境給打斷,可以提升工作的效率。

問題來了,Scrum團隊把開發人員全部搞到一個大房間裡面,每個人排排坐,吃果果 寫程式。這樣子的好處是有助於團隊溝通,但是開發人員也很容易被其他人的討論聲音給影響,因此會降低生產力。那到底是要聽約耳的,還是要聽Scrum的建議?

***

這是一個很常見的問題,會有這個疑問的鄉民們,一定是沒上過Teddy的「Design Patterns這樣學就會了:入門實作班熱戀,上過這個課的鄉民們就知道,要分析一個問題,至少必須要考慮Solution、Problem、Context這三個因素。發問的鄉民只注意到約耳提出的Solution,以及隱約知道這個Solution要解決的問題是什麼,但是卻忽略了約耳的Problem與Solution所發生的Context。讓Teddy幫鄉民們分析一下:

  • Context:你開了一家小型軟體公司,你擁有自己的產品並且想要行銷到全世界。為了成功,你採取菁英策略,想盡各種方法招募頂尖的開發人員。你知道軟體開發是一件腦力密集的工作,若開發人員的思慮一直被外界干擾給中斷,則會降低生產力與品質。
  • Problem:如何配置工作環境?
  • Solution:給每一位開發人員一間可關上門且有窗戶的房間,作為上班的工作空間。獨立的空間可隔絕外界的干擾,讓開發人員專心於工作上。

***

然後哩?看完之後還是不知道「要聽約耳的,還是要聽Scrum的建議」啊。仔細思考這個問題,可以發現有兩個重要的Force需要被平衡:

  • 不受干擾的環境可以讓開發人員專心於工作,有助於提升生產力與品質。
  • 軟體開發是一個團隊活動,開發人員需要彼此溝通協調。好的溝通可以讓團隊成員少走很多冤枉路,並且鼓勵知識在團隊中互相流動,有助於提升生產力與品質。

在約耳的Context底下,他認為處理「單獨作業與不受干擾」這個Force比較重要,因此他對於工作環境安排Solution主要是為了解決第一個Force。至於溝通的問題,可以採用其他方式來處理。在Scrum的框架下,認為「團隊合作與溝通」比重要,因此Scrum建議的工作環境Solution主要在解決第二個Force。

***

看到這裡關於「要聽約耳的,還是要聽Scrum的建議」這個問題只討論了一半,另外一半就是提問這個問題的鄉民對於Scrum(廣義的說應該是敏捷方法)所提出工作環境建議的Solution並沒有全盤了解。在《Visual Studio Team System: Better Software Development for Agile Teams》這本書中有談論到敏捷開發團隊的工作環境配置建議,如下圖所示:

image

除了公開的開發環境以外,敏捷開發團隊還應該有自己的會議室、廚房、以及較為隱密的個人工作區。很可惜在台灣因為 老闆省錢 地狹人稠的原因,團隊的工作環境最後被cost down成只有開放的工作區域挑眉質疑

***

寫到這邊Teddy想到open-closed principle這個物件導向設計原則,以及2007年的時候所寫的一篇e-learning論文:《Towards a Pattern Language Approach to Establishing Personal Authoring Environments in E-Learning》,文中也有提到專心與干擾的問題(論文可在搞笑談軟工Facebook下載)。

螢幕快照 2013-05-27 上午11.24.16

***

友藏內心獨白:Alexander的pattern方法真的是一種分析問題的好工具。

2 則留言:

  1. 我是上禮拜問這個問題的 Alec
    幫自己平反一下
    在 Peopleware 的第十二章真的有討論到
    Bring Back the Door
    http://javatroopers.com/Peopleware.html#Chapter_12

    約耳的書裡面寫的應該是引用的喔
    http://goo.gl/0E10V

    回覆刪除
    回覆
    1. 不好意思,我只記得約耳的版本啊....誤會您了....。耶,那我這一篇的標題豈不是要改一下....

      刪除