On October 23rd, 2014, we updated our
By continuing to use LinkedIn’s SlideShare service, you agree to the revised terms, so please take a few minutes to review them.
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?
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)
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 Skillshttp://www.agilemodeling.com/essays/generalizingSpecialists.htmKent Beck: Extreme Programming Explained:Embrace ChangeMike Cohn: Succeeding with Agile: SoftwareDevelopment Using Scrum