Blog
Collective Code Ownership is an important practice of Extreme Programming and team design is an essential part of it. Whether the design is done individually or collectively can significantly affect the performance of the team and the quality of the code. Team design helps build software that all of the developers understand and can effectively build upon. Every developer can participate in design throughout the development cycle. During release planning, as the level of effort for each story is being estimated, developers may already have some rough idea of how the story might be implemented. These ideas can be communicated and captured before the iteration even begins. When the iteration kicks off, the tasking of each story is a great opportunity for the whole team to participate in designing. As each story is implemented, pair programming helps distribute the design as it evolves. Occasionally, pairs of developers may initiate ad-hoc design sessions to solve specific design problems. Other team members may join in and then resulting design can be shared with the entire team. If developers are designing individually, they may be inadvertently withholding important knowledge that the team needs to do their job effectively. It is generally impossible for any one person to have comprehensive knowledge of an entire system. Since any given developer will be more familiar with some parts of the system than others, every team member may have important knowledge to share for the design. For example, a developer may be implementing new functionality similar to something already implemented; however, if the design is not done as a team, the developer may not even know it exists. Team design encourages such code reuse because the left hand knows what the right hand is doing. In addition to the benefits of sharing ideas, team design encourages team pride. If every team member is contributing design ideas – ideas that are appreciated and used by the team – then everyone can have an equal sense of pride. While individual pride can be counterproductive, leading some to discourage others from touching “their” code, team pride builds a stronger community and encourages collaboration. Community and collaboration inspire developers to produce innovative code as they share ideas. Team design is essential for building high quality software and increasing team productivity. Applying it to your team will ensure that all team members are able to share their ideas and share in the pride that comes with building good software.
Categories
News
Careers
Passionate, talented, ambitious, creative … sound familiar?
Three Pillar Global is hiring the best and brightest, and we might just be looking for you.
Check out our open positions.


Leave a comment