The Holistic Programmer
Upcoming SlideShare
Loading in...5

Like this? Share it with your network


The Holistic Programmer



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

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



Total Views
Views on SlideShare
Embed Views



0 Embeds 0

No embeds



Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
Post Comment
Edit your comment

The Holistic Programmer Presentation Transcript

  • 1. Holistic Programmer Agile India 2012 17-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 when working on the parts of a solution● Communicates with and supports the 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 when the product is done - like icing on the cake● is implementing solutions, not software components
  • 7. Whole Picture 1
  • 8. Whole Picture 2
  • 9. Problem 1: Whole Picture The team must 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: Details Each team member must have responsibility for every detail
  • 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. 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: Communication Technical people must understand business 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 Skills Beck: Extreme Programming Explained:Embrace ChangeMike Cohn: Succeeding with Agile: SoftwareDevelopment Using Scrum