20/05/2012

Feature Team or/and Component Team for Agile Development

Introduction

Question arised when senior manager want to put out a component based team structure for engineering/development team. I can see some benefits from team structure. But in the same time, I feel there is something wrong with my gut feeling. What is wrong and what would be better format? 

After a careful thought, I believe that mixed team structure will be best for current business that I work at. 

My Thought

My thought the mixed team structure will be best fit for the business. There will be three product/feature teams and 2 component teams. 

My reason is as following: 

  • There is a component requires high availability, scalability and stability which requires different skill set than just software engineering and needs to understand infrastructure. 
  • There is another component similar to a component above which requires specific attention and skill sets. They will create a platform to make entry skills much lower for product teams
  • But for fast delivery, to minimize handover waste, product teams will be formed to delivery end to end development except first one above. 
  • Also using product/feature team to deliver features will minimize complexity of dependency management
  • Product team will make handling defects easier 
  • Product team will make integration testing easier and earlier in stages as features developed in one team instead of across different teams
But there are difficulties:
  • For some business, building cross functional team is very hard
  • Discipline and architecture guide to access codes concurrently
  • A shift to share responsibility of design (I don't remember where I read an article. But consult community with member from different product teams and component teams may be an answer. Have no experience with that)
  • Developing and co-ordinating common functions
  • For other business but not mine
    • Infrastructure reuse (I do think there is innovation solution for this most of time)
    • How to build a platform to make learning of some skills easier for product/feature team as some of frequent used skills are hard to learn
I believe there are someone out there that have more experience than I do and do have different opinion on this. Please comment on this and I do believe there will be a very good debate and discussion.