Problem 1: Whole Picture The team must have responsibility for the whole solution
Solution 1: Whole Team● Traditionally, optimization of work splits solutions into smaller tasks given to individual people● Whole work goes the other way - individual people are solving complete solutions● But thats not really viable - or is it?
Whole Team Responsibility● Quality● Clean code● Well formed product backlog● Look and feel● Performance● Success AND failure"The whole team should feel responsible for allaspects of the product."Mike Cohn - Succeding with Agile
DiscussionAre you a slice programmer - or a part of a whole team?Think about the last feature you developed - did you work on it end to end?Think about your team - what do you do to be a whole team?
Problem 2: Details Each team member must have responsibility for every detail
Solution 2: Generalizing Specialists● Take responsibility for other tasks than your own● Learn new skills that enable you to take on more different tasks● Communicate!
Agile Process - ScrumAnalysis => Business ExpertDatabase => SQL ProgrammerUser Interface => Front End DeveloperUnit Tests => TesterUser Acceptance Test => Usability ExpertEven in Scrum, we have silos...
Generalizing Specialist - A Definition1. Has one or more technical specialties2. General knowledge of software development3. General knowledge of the business domain4. Actively seeks to gain new skillsScott W. Ambler - Generalizing Specialists: Improving Your IT Career Skills
Ready - Ready● Estimated < 1 iteration● User Story complete ○ Business rules clarified ○ Error handling described ○ Test cases written● Text and mockup ready● User Story reviewed● Automated test described● Technical dependencies clarified ○ Backends ○ Services ○ Data
Done - Done● Functionality done● Design reviewed● Deployed to test environment● Unit and integration tests successful● Automatic tests successful● User Acceptance Test successful● Code coverage > 90 %● Documented● Code reviewed
Teamwork● Nurture whole team commitment● Rely on specialist but sparingly● Do a little bit of everything all the time● Foster team learning ○ Design teams for learning ○ Find concrete ways to share knowledge ○ Exhibit behaviour that reinforces learning ○ Teams must have a motivating challenge ○ Create a supportive learning environmentMike Cohn: Succeding with Agile
The Holistic Programmer● Be part of the team● Share responsibility with others● Inspect and adapt● Get better!● Communicate
ReferencesScott Ambler: Generalizing Specialists:Improving Your IT Career Skillshttp://www.agilemodeling.com/essays/generalizingSpecialists.htmKent Beck: Extreme Programming Explained:Embrace ChangeMike Cohn: Succeeding with Agile: SoftwareDevelopment Using Scrum