The Holistic Programmer
Upcoming SlideShare
Loading in...5

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 The Holistic Programmer Presentation Transcript

    • Holistic Programmer Agile India 2012 17-2-2012 Bangalore India
    • Holistic - A Definition The parts of a solution are interconnected and can only be understood in reference to the whole
    • 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
    • About MeJonas Auken● Dane living in New Delhi● Computer Science and Science of Religion● Developer● Architect● Product Owner by Proxy● Coach● Agile Evangelist
    • AgendaThe Challenge● Seeing the Whole Picture● Minding the detailsThe Solution● Generalizing Specialists● Communication
    • 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
    • Whole Picture 1
    • Whole Picture 2
    • 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?
    • Waterfall Model
    • Whole Team
    • 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
    • Skills evolving over time
    • Why Generalizing Specialists?1. Improved communication and collaboration2. Less documentation3. Improved flexibility4. Less handover, less risk5. Fewer bottlenecks
    • Discussion● Are you a specialist or a generalist?● Or are you a generalizing specialist?● What do you do to learn new skills?
    • Problem 3: Communication Technical people must understand business people (and vice versa)
    • Solution 3: Processes Ready - Ready Done - Done
    • 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
    • Whole Team Revisited
    • 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
    • Questions & Comments Whats on your mind?
    • ReferencesScott Ambler: Generalizing Specialists:Improving Your IT Career Skills Beck: Extreme Programming Explained:Embrace ChangeMike Cohn: Succeeding with Agile: SoftwareDevelopment Using Scrum