<<

Holistic Programmer

Jyske Bank 18-11-2011 Gurgaon India Agenda

● Whole Picture ● Holistic and Quality ● Whole Work ● Specialists and Generalists ● Tools for solutions About Me

Jonas Auken ● Dane living in New Delhi ● and Science of Religion ● Developer ● Architect ● Product Owner by Proxy ● Coach ● Agile Evangelist Whole Picture 1 Picture Whole Whole Picture 2 Picture Whole 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 managable code ● is happy customers ● is implementing solutions, not components ● is creating solutions the way they were thought, not the way they were written Adam Smiths Pin Factory

One man draws out the wire, another straights it, a third cuts it, a fourth points it, a fifth grinds it at the top for receiving the head: to make the head requires two or three distinct operations: to put it on is a particular business, to whiten the pins is another ... and the important business of making a pin is, in this manner, divided into about eighteen distinct operations, which in some manufactories are all performed by distinct hands, though in others the same man will sometime perform two or three of them. 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 all aspects of the product." Mike Cohn: Succeding with Agile Discussion

Are 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? ○ If not - would you have liked to? ○ If so - was it satisfying or would you rather have done it otherwise? Agile Process - Scrum

Analysis => Business Expert Database => SQL Programmer User Interface => Front End Developer Unit Tests => Tester User Acceptance Test => Usability Expert Generalizing Specialist - A Definition

1. Has one or more technical specialties 2. General knowledge of software development 3. General knowledge of the business domain 4. Actively seeks to gain new skills

Scott W. Ambler Generalizing Specialists: Improving Your IT Career Skills http://www.agilemodeling.com/essays/generalizingSpecialists.htm

Skills evolving over time Why Generalizing Specialists?

1. Improved communication and collaboration 2. Less documentation 3. Improved flexibility 4. Less risk 5. Fewer bottlenecks Discussion

● Are you a specialist or a generalist? ● Or are you a generalizing specialist? Tools for solutions

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 ● 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 environment Mike Cohn: Succeding with Agile Final Thoughts

● Think ● Plan ● Evaluate ● Communicate ● Get better! Questions & Comments

What's on your mind? References

● Scott Ambler: Generalizing Specialists: Improving Your IT Career Skills http://www.agilemodeling.com/essays/generalizingSpecialists.htm ● Kent Beck: Explained: Embrace Change ● Mike Cohn: Succeding with Agile: Software Development Using Scrum