When observing IT development teams we still see that many companies are still using Component teams as the main way of doing Software development.
Component team is a team of people working with only one component of the whole system. They become experts of this component and can do quick development and fixes to this component. Many still think this is the most optimal way of developing software. Unfortunately, we see that making this kind of sub optimization does not result in an optimal system. Often the time saved by using components experts is multiplied by 2 or more and wasted getting different components to work together in an optimal way. This means sub optimization results in waste instead of saving(see Larman&Vodde). In addition, the overall architecture of the system is effected since those experts do not understand the rest of the system they are developing for.
Some other organizations are not building teams, but look at employees as a pool of resources that can be shuffled and compound differently based on this minutes necessities. This approach result in people specializing in a narrow technology since different persons will find their favorites among all development tasks and in a natural way grap the tasks they like work with mostly. The result will be lack of knowledge exchange that results in long term loss for the company and degradation of the skills gained by the employees.
Summarized these approaches result in:
- Reduced communication cross all layers of the system
- Ending development cycles takes very long time since much efforts must be applied to integrate components and functionality.
The answer to these challenges is organizing people in Feature teams that are multifunctional. The most important attributes for such teams are:
- Different roles are included in the team, development, testing, business analysis etc.
- Coordination of the whole requirement happens locally in the team
- No handing off before a completed requirement is DONE
- Broader skills and system knowledge
To be able to scale your development capacity, it is essential to build feature teams. You can achieve that by:
- Reorganizing your existing component teams into cross components or requirement area-feature teams
- Then gradually expand the team responsibilities
If you are not sure how to achieve this or need help in making it happen at your organization, please let me know and I will be glad to help you to the next level!