30
Holistic Programmer Agile India 2012 17-2-2012 Bangalore India

The Holistic Programmer

Embed Size (px)

DESCRIPTION

A talk presented at Agile India 2012 in Bangalore, India.

Citation preview

  • 1. Holistic Programmer Agile India 201217-2-2012 Bangalore India

2. Holistic - A Definition The parts of a solution are interconnected and can only be understood in reference to the whole 3. The Holistic Programmer Attempts to see the whole picture even whenworking on the parts of a solution Communicates with and supportsthe whole team 4. About MeJonas Auken Dane living in New Delhi Computer Science and Science of Religion Developer Architect Product Owner by Proxy Coach Agile Evangelist 5. AgendaThe Challenge Seeing the Whole Picture Minding the detailsThe Solution Generalizing Specialists Communication 6. Quality is holistic is not the number of defects is not a liquid that can be poured on whenthe product is done - like icing on the cake is implementing solutions, not softwarecomponents 7. Whole Picture 1 8. Whole Picture 2 9. Problem 1: Whole PictureThe teammust have responsibility for the whole solution 10. 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? 11. Waterfall Model 12. Whole Team 13. 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 14. 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? 15. Problem 2: DetailsEach team member must have responsibilityfor every detail 16. Solution 2: Generalizing Specialists Take responsibility for other tasks than yourown Learn new skills that enable you to take onmore different tasks Communicate! 17. Agile Process - ScrumAnalysis => Business ExpertDatabase => SQL ProgrammerUser Interface => Front End DeveloperUnit Tests => TesterUser Acceptance Test => Usability ExpertEven in Scrum, we have silos... 18. 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 19. Skills evolving over time 20. Why Generalizing Specialists?1. Improved communication and collaboration2. Less documentation3. Improved flexibility4. Less handover, less risk5. Fewer bottlenecks 21. Discussion Are you a specialist or a generalist? Or are you a generalizing specialist? What do you do to learn new skills? 22. Problem 3: CommunicationTechnical peoplemust understandbusiness people(and vice versa) 23. Solution 3: Processes Ready - Ready Done - Done 24. 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 25. 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 26. Whole Team Revisited 27. 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 28. The Holistic Programmer Be part of the team Share responsibility with others Inspect and adapt Get better! Communicate 29. Questions & Comments Whats on your mind? 30. 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