Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

The Holistic Programmer


Published on

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

Published in: Business, Technology
  • Be the first to comment

The Holistic Programmer

  1. 1. Holistic Programmer Agile India 2012 17-2-2012 Bangalore India
  2. 2. Holistic - A Definition The parts of a solution are interconnected and can only be understood in reference to the whole
  3. 3. The Holistic Programmer● Attempts to see the whole picture even when working on the parts of a solution● Communicates with and supports the whole team
  4. 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. 5. AgendaThe Challenge● Seeing the Whole Picture● Minding the detailsThe Solution● Generalizing Specialists● Communication
  6. 6. Quality is holistic● is not the number of defects● is not a liquid that can be poured on when the product is done - like icing on the cake● is implementing solutions, not software components
  7. 7. Whole Picture 1
  8. 8. Whole Picture 2
  9. 9. Problem 1: Whole Picture The team must have responsibility for the whole solution
  10. 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. 11. Waterfall Model
  12. 12. Whole Team
  13. 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. 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. 15. Problem 2: Details Each team member must have responsibility for every detail
  16. 16. 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!
  17. 17. Agile Process - ScrumAnalysis => Business ExpertDatabase => SQL ProgrammerUser Interface => Front End DeveloperUnit Tests => TesterUser Acceptance Test => Usability ExpertEven in Scrum, we have silos...
  18. 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. 19. Skills evolving over time
  20. 20. Why Generalizing Specialists?1. Improved communication and collaboration2. Less documentation3. Improved flexibility4. Less handover, less risk5. Fewer bottlenecks
  21. 21. Discussion● Are you a specialist or a generalist?● Or are you a generalizing specialist?● What do you do to learn new skills?
  22. 22. Problem 3: Communication Technical people must understand business people (and vice versa)
  23. 23. Solution 3: Processes Ready - Ready Done - Done
  24. 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. 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. 26. Whole Team Revisited
  27. 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. 28. The Holistic Programmer● Be part of the team● Share responsibility with others● Inspect and adapt● Get better!● Communicate
  29. 29. Questions & Comments Whats on your mind?
  30. 30. ReferencesScott Ambler: Generalizing Specialists:Improving Your IT Career Skills Beck: Extreme Programming Explained:Embrace ChangeMike Cohn: Succeeding with Agile: SoftwareDevelopment Using Scrum