2010-07-14 61 views
0

作爲一名6年的軟件開發人員,我從不同的團隊獲得了一系列的經驗,從負面到正面。按專業化或按任務組織一個軟件開發團隊?

我最好的經歷之一是在某個金融機構的某個項目團隊中。

有許多因素使項目成功,但我認爲團隊結構是其中的一個關鍵方面。

總結:

  • 我們有開發商誰專門從事不同的方面。 2名擅長UI和2-3名開發人員,擅長編寫業務邏輯和數據庫接口代碼。

  • 該代碼嚴格分爲演示文稿,業務和數據層。

  • 每個開發者都有一個基本的知識的整個系統。即使他們不是所有人的專家,但他們都知道如何將所有東西都放在一起,並在必要時在任何層編寫代碼。

  • 一些任務涉及整個垂直切片功能的開發人員(涉及所有圖層的工作)。

  • 其他任務只涉及開發人員專用的應用程序區域(例如只是一個UI任務,或者僅僅是一個數據庫任務)。

我覺得這個工作很好,因爲:

  • 開發者能夠了解整個系統,並在必要時跳進不同的層。

  • 開發人員保留專業化,如果開發人員需要他不熟悉的幫助,那麼總是有一個接近的人。

  • 架構是剛性的,但是靈活的,因爲他們應該的。

這種團隊結構是否有正式的術語?它聽起來像是敏捷/ SCRUM安排嗎?

(當時似乎沒有完全計劃)

有什麼想法?

回答

1

我不認爲這種團隊有一個正式名稱 - 除了明智的! :)爲此,我當然同意羅伯特哈維。

每個解決方案將(通常)覆蓋一般領域,如UI,BL,Data;你通常也會涉及交叉問題,如日誌記錄,部署包裝等;所有這些都將使用某些技術。所以,爲了讓團隊適合這個項目,它需要很好地涵蓋所有這些事情 - 作爲一個開始。

這就是所謂的「橫向」視圖,垂直視圖(實現功能片)是這些人需要進行交互的地方 - 這就是XP像同齡人編程一樣進行實踐的地方,而且交叉培訓可以真正實現開始發生。作爲對比,您可能會對Frederick Brooks在其着名書籍「The Mythical Man-Month」中概述的「手術團隊」方法感興趣。

還有一個頁面上的鏈接到「Organization and Team Patterns」,這可能是有趣的。

+0

感謝您的真棒鏈接。將這與我以前的公司做的事情進行比較非常有趣。 – Jonathan 2010-07-15 03:13:47

2

您的開發人員可以學習的技能越多,您的團隊就會越強大,更多元化和更快樂。

交叉訓練非常重要。如果你的用戶界面專家被公交車運行,會發生什麼?團隊中的其他人可以接管他的職責嗎?

工作分配應根據架構的工作方式進行劃分(例如,細分接口)。給予工作分配的開發人員應該能夠在他的特定部分上或多或少地自主工作。