Successfully reported this slideshow.
Your SlideShare is downloading. ×

Sandro Mancuso and David Green: London Software Craftsmanship Community: What is Software Craftsmanship - 06/10/2010

Loading in …3

Check these out next

1 of 38 Ad

More Related Content

Slideshows for you (20)


Similar to Sandro Mancuso and David Green: London Software Craftsmanship Community: What is Software Craftsmanship - 06/10/2010 (20)

More from Skills Matter (20)


Sandro Mancuso and David Green: London Software Craftsmanship Community: What is Software Craftsmanship - 06/10/2010

  1. 1. Software Craftsmanship @londonswcraft
  2. 2. Who the hell are we? Sandro Mancuso @sandromancuso David Green @activelylazy
  3. 3. Why are we doing this?  
  4. 4. Who the hell are you?  
  5. 5. How long have you been writing software?  
  6. 6. How did you learn your first language?  
  7. 7. Software Engineering     Software engineering is the application of a systematic, disciplined, quantifiable approach to the development, operation, and maintenance of software, and the study of these approaches; that is, the application of engineering to software.     IEEE Computer Society's Software Engineering Body of Knowledge    
  8. 8. Software Engineering <ul><li>  A bit of history: </li></ul><ul><ul><li>The term software engineering first appeared in the 1968, First NATO Software Engineering Conference </li></ul></ul><ul><ul><li>Solve problems of extremelly large NATO and U.S. Department of Defence projects like space shuttle and the Safeguard Ballistic Missile Defence System </li></ul></ul>
  9. 9. Software Engineering: The good <ul><ul><li>Had one error on each of the last 3 versions. Each version was 420,000 lines long </li></ul></ul><ul><ul><li>Last 11 versions had 17 errors. </li></ul></ul><ul><ul><li>Commercial programs of equivalent complexity would have 5,000 </li></ul></ul>Space shuttle project - NASA (1968) &quot;They Write The Right Stuff&quot; - Fast Company article (1996)
  10. 10. Software Engineering: The bad <ul><ul><li>Had one error on each of the last 3 versions. Each version was 420,000 lines long </li></ul></ul><ul><ul><li>Last 11 versions had 17 errors. </li></ul></ul><ul><ul><li>Commercial programs of equivalent complexity would have 5,000 </li></ul></ul><ul><ul><li>Over a decade to finish </li></ul></ul><ul><ul><li>$35million per year budget. </li></ul></ul><ul><ul><li>Almost 60% of the time spend in documentation and analysis.  </li></ul></ul>Space shuttle project - NASA (1968) &quot;They Write The Right Stuff&quot; - Fast Company article (1996)
  11. 11. Software Engineering: The process   &quot;People ask, doesn't this process stifle creativity? You have to do exactly what the manual says, and you've got someone looking over your shoulder,&quot; says Ted Keller (senior technical manager). &quot; The answer is, yes, the process does stifle creativity .&quot; Space shuttle project - NASA (1968) &quot;They Write The Right Stuff&quot; - Fast Company article (1996)
  12. 12. Software Engineering   Is Software Engineering right for your project?
  13. 13. Software Engineering for the masses The Good Enough Era...   ... and the simplest thing that could possibly work. &quot;I'm going to deliver a system to you in six months that will have 5,000 bugs in it - and you're going to be very happy!&quot;   Edward Yourdon Rise and Resurrection of the American Programmer (1996)
  14. 14. Agile Software Development We are uncovering better ways of developing software by doing it and  helping others do it. Through this work we have come to value: Individuals and interactions over processes and tools Working software over comprehensive documentation Customer collaboration over contract negotiation Responding to change over following a plan That is, while there is value in the items on the right, we value the items on the left more.
  15. 15. Agile Success <ul><li>Perceived project success: </li></ul><ul><li>“ 61% of agile projects vs </li></ul><ul><li>52% of traditional projects” </li></ul><ul><li> </li></ul><ul><li> </li></ul><ul><li>Went from quarterly releases to one in 2006 </li></ul><ul><li>Adopted scrum in 2007; in first year: </li></ul><ul><ul><li>94% more features </li></ul></ul><ul><ul><li>500% more value </li></ul></ul><ul><ul><li> </li></ul></ul>
  16. 16. Cargo Cult Agile “ We do standups – so we're agile” “ We have retrospectives – so we're agile” “ We write user stories – so we're agile” “ I'm a Certified Scrum Master – of course we're agile”
  17. 17. Good enough is not always good enough     Many Agile projects are now, steadily and iteratively, producing mediocre software.
  18. 18.   &quot;The original torch of the Agile message has changed hands, and is now being carried by the Software Craftsmanship movement.&quot;   Robert C. Martin (Uncle Bob)
  19. 19. What is Software Craftsmanship? “ Is an approach to software development that emphasizes the coding skills of the software developers themselves. It is a response by software developers to the perceived ills of the mainstream software industry, including the prioritization of financial concerns over developer accountability” Wikipedia
  20. 20. What is Software Craftsmanship? A different definition “ It is a long journey to mastery. It is a lifestyle where developers see software as a craft and not as engineering. It's a commitment to perpetual learning and improvement of their craft. Software Craftsmanship is all about putting responsibility, professionalism, pragmatism and pride back into software development”
  21. 21. The Software Craftsmanship Movement <ul><ul><li>Andrew Hunt & David Thomas (1999) </li></ul></ul><ul><ul><li>Pete McBreen (2001) </li></ul></ul><ul><ul><li>Uncle Bob proposed &quot;Craftsmanship over Execution&quot; (originally Craftsmanship over Crap) as the fifth value for the Agile Manifesto (2008) </li></ul></ul><ul><ul><li>Software Craftsmanship Manifesto (2009) </li></ul></ul>
  22. 22. Manifesto for Software Craftsmanship raising the bar As aspiring Software Craftsmen we are raising the bar of professional software development by practising it and helping others learn the craft. Through this work we have come to value:                Not only working software,                               but also well-crafted software              Not only responding to change ,                                but also steadily adding value              Not only individuals and interactions ,                               but also a community of professionals              Not only customer collaboration ,                               but also productive partnerships  
  23. 23. Beyond the Manifesto <ul><li>The Software Craftsmanship Attitude </li></ul><ul><ul><li>We control our careers, no one else </li></ul></ul><ul><ul><li>Software craftsmanship is not a 9 to 5 profession </li></ul></ul><ul><ul><li>We don't expect to be paid to learn </li></ul></ul><ul><ul><li>Intolerance of bad code </li></ul></ul><ul><ul><li>We have productive partnerships not employer / employee relationships </li></ul></ul><ul><ul><li>We are professionals and pragmatic </li></ul></ul><ul><ul><li>We care and are proud of our work </li></ul></ul>
  24. 24. What does it take to craft software? <ul><ul><li>Creativity </li></ul></ul><ul><ul><li>Judgement </li></ul></ul><ul><ul><li>Theory </li></ul></ul><ul><ul><li>Practical skill </li></ul></ul>
  25. 25. How do we learn to craft software? <ul><ul><li>Degree courses </li></ul></ul><ul><ul><li>Training courses </li></ul></ul><ul><ul><li>Mentoring </li></ul></ul><ul><ul><li>Feedback </li></ul></ul><ul><ul><li>Books </li></ul></ul><ul><ul><li>Conferences </li></ul></ul>
  26. 26. University <ul><ul><li>First order logic </li></ul></ul><ul><ul><li>Functional programming </li></ul></ul><ul><ul><li>Compilers & hardware architecture  </li></ul></ul><ul><ul><li>Concurrency & distributed computing </li></ul></ul><ul><ul><li>Statistics & maths for computing </li></ul></ul>
  27. 27. First job <ul><ul><li>Source control </li></ul></ul><ul><ul><li>Issue tracking </li></ul></ul><ul><ul><li>Estimation & deadlines </li></ul></ul><ul><ul><li>Dedicated testers & QA process </li></ul></ul><ul><ul><li>Build processes & Continuous Integration </li></ul></ul><ul><ul><li>Release / deployment processes </li></ul></ul>
  28. 28. On the job training  
  29. 29. Mentoring  
  30. 30. Software craftsmanship is 1. Continuous learning
  31. 31. How do we improve?  
  32. 32. Deliberate practice <ul><ul><li>Katas </li></ul></ul><ul><ul><li>Dojos </li></ul></ul><ul><ul><li>Code retreats </li></ul></ul>
  33. 33. Software craftsmanship is 1. Continuous learning 2. Deliberate practice
  34. 34. Software craftsmanship is 1. Continuous learning 2. Deliberate practice 3. Pragmatism
  35. 35. Software craftsmanship  isn't <ul><ul><li>A certificate </li></ul></ul><ul><ul><li>A training course </li></ul></ul><ul><ul><li>A book </li></ul></ul><ul><ul><li>A practice </li></ul></ul>
  36. 36. The Craftsmanship Journey <ul><li>A tale of apprentices, journeymen and masters. </li></ul><ul><ul><ul><ul><li>Apprentice </li></ul></ul></ul></ul><ul><ul><ul><ul><li>Journeyman </li></ul></ul></ul></ul><ul><ul><ul><ul><li>Master </li></ul></ul></ul></ul>
  37. 37. The Craftsmanship Discussion 1. How the team structure should be? 2. How can we define the “journey”? 3. Would promotion by public recognition work?
  38. 38. Questions? @activelylazy @sandromancuso

Editor's Notes

  • Welcome to the first London Software Craftsmanship Community meeting.
  • David Green - Java developer; gambling - Writing software 20 yrs; commercially for 10
  • Passionate about software Believe software can be better; we can be better Keep seeing same mistakes: - complexity, technical debt - typists, not craftsmen - software factory Didn&apos;t write the book – I&apos;m no Bob Martin just passionate professionals Bring community together so we can all learn - share experiences/ideas Its about you – ask questions Phones silent
  • How many ppl are programmers? Everyone stand - Java - C# - Python - Ruby - PHP - Anything else? Anyone not a developer? - PM - Agile Coach - Anyone else? Summarize – good mix, mostly...
  • Programmers stand again - Over the age of 30 sit down (need rest) - Anyone still in university? - Rest sit
  • Programmers stand Sit down if: - taught yourself first language - learnt first language at university - learnt first language at work
  • Let’s talk about software engineering
  • Software crisis – extremely large projects Hardware still being developed Hardware worth millions National security and people’s lives at risk Bugs could be catastrophic
  • -Software Engineering can be very effective for critical systems
  • Money is not a problem Thin slice of NASA’s pie Most expensive dollar-per-line project One of the most expensive software organisations
  • -Development process seen as production line -Coders not developers -Creativity was forbbiden
  • - Cheaper hardware - business at all sizes needed software; Could not afford to pay $35m per year Not expensive hardware nor life-threatening situations. - Process had to be adapted impatient and lower budget businesses - New process aimed faster and cheaper development - Most adopted were the iterative and incremental (RUP) - Evolution to the Agile software development methodologies Yourdon also wrote Decline and Fall of the American Programmer (1992).
  • - Biggest success of various methodologies - Defined the last decade - Moving away from engineering – to empirical approach. Inspect &amp; adapt. Unknowns - Process people; process police Individual responsibility; encouraging right interactions - Working software – not doc; Project success: amount of doc - Seen both sides of contract negotiation Not productive – who&apos;s paying - Change is the only constant; “ how are we tracking against the baseline plan?”
  • This year&apos;s IT Project Success Rates Survey 200 individuals; US, Europe &amp; Asia 12% of agile projects failed; 18% of traditional projects failed Mike Cohn tells story of Big scrum adoption – 200 engineers virtually overnight Compelling story of how scrum, agile can improve delivery
  • Richard Feynman: 1940s remote islands in South Pacific Natives never seen modern civilisation. Allied troops build temporary base of operations. Setup airstrip, control tower, don headphones Call down great metal birds from the sky Valuable cargo shared with the natives When troops leave, cargo stops coming Natives view cargo with religious significance They build airstrip out of bamboo, coconuts for headphones- but metal birds never come back Agile adoption in danger of doing same Visible behaviours without understanding the ideas
  • Agile became synonymous of Scrum (Process oriented) XP practices were not largely adopted Quality is overlooked by managers and dev team -Projects failing. - No specifications or diagrams anymore. - Management process improved but development still production line with unskilled and cheaper workers.
  • Agile is a success Agile became synonymous of Scrum and a project management tool Improvement not at the desired level proposed by creators -Agile not used as proposed -Not being used to improve the quality of code delivered -Not being used to create long-lasting software
  • I don&apos;t think that this definition really catches the essence. It&apos;s a bit cold and dull.
  • - A bit more passion here. - better metaphor - software as a craft, creative process and art. Pride of our work professional and pragmatic during implementation.
  • 2009 – Conferences in US, UK and other European Countries 2010 – Code retreats more popular around the globe.
  • Well-crafted software: Greenfield / brown field 5 year-old legacy we are scared to touch. Software Hostage, bad code. must be maintainable and predictable. steadily adding value: Not just add features / fix bugs. Software as asset. Keeping tidy stretches life-span and ROI. Boy Scout Rule community of professionals: what we are doing here tonight Our responsibility for training the next generation Our responsibility for moving the industry forward. productive partnerships: Question requirements, propose improvements. Our best interest to make a software succeed. build reputation Partnership with customers. Shift of perspective bringing advantages to the customer.
  • PC story 9-5 People in the audience Musician play guitar, Accountant new regulation, chef restaurant Bad code slows us down Professional developer Time constraint and req not excuse Long lasting, high quality, robust, maintainable, testable Cares about ROI Care about reputation
  • Looked at various methodologies; but what about individual developer? What does it take to craft great software? Creativity &amp; problem solving Design as art; inspired; inspiring; hard to understand “ Problem solving easiest part, which problem to solve is hardest” Judgement; pragmatism. Need experience Observe others; bitter personal experience Computer science, understand the machine Know a language, source control, TDD, pair programming Excel in all four areas to craft great software
  • If we&apos;re to excel in all four areas – a lot to learn How many did a sw eng / comp sci degree? How many been on training course? How many read programming books? How many go to conferences?
  • All very interesting; good theoretical foundation. How much is actually used in industry?
  • Graduate has lot to learn Right that uni doesn&apos;t teach this Who had to learn this? Who has taught it?
  • Then start learning alphabet soup: SOAP, JMS, RMI, Spring, Hibernate etc.. etc... Learn thru books; colleagues or training courses here at skillsmatter How many have been on training courses? - SCJP - CSM - other courses? SCJP – good programmers who haven&apos;t; poor programmers who have CSM – everyone &amp; their aunt. Great course. Danger of being devalued
  • How many mentored someone new to company? How many kept that going beyond first 3 months? Personally found mentoring hugely valuable - continuous feedback - pass on his knowledge - improve judgement – impossible to learn thru books, courses
  • We need continuous learning: - degree courses - training courses - feedback (pair programming / peer review) - books - conferences - mentoring
  • Practice, practice, practice! Crafting software: learn by doing Deliberate practice
  • Kata is an exercise – designed to allow student to learn through practice and repetition - removes commercial constraints - focus on learning Dojo – take problem and work thru as a group - normally one pair; others observe - pair rotates every 5 minutes Code retreat – longer format; work thru a problem numerous times - delete code after each iteration - add constraints to an iteration (no arrays, no ifs)
  • Only way to improve practical skill is to do it Deliberate practice allows us to focus on learning
  • Recall &amp;quot;Judgement&amp;quot; from earlier slide Understanding how others make decisions Competence over certification Pragmatism over specific processes Mentoring over training
  • Software craftsmanship is about a community of professionals raising the bar of software development, by continually learning through deliberate practice and the sharing of knowledge, experience and ideas.
  • -better metaphor -Apprenticeship more learning than teaching; Apprentice -&gt; journeymen: public recognition; work without assistance, verifiable work Journeymen: acceptance of the responsibility for creating robust, high-quality applications and acceptance of the craftsmanship approach. Work for different masters A master needs to take journeymen and apprentices under his wings and provide an environment which they can practice their craft. Becoming a master: Not a certificate or exam. Mastery is achieved by sequence of successful projects; Recognised by other software developers and customers Constantly recommended. Ages to build this reputation.
  • - Promotion - from apprentice to journeyman - from journeyman to master - Team structure - Mater craftsman: 1 master, 3 journeymen, 9 apprentices - Chief Programmer Team - Ivory tower? Dependency on a single person? Hierarchy? What about self-organised teams? - The journey - Work for different masters - Change jobs frequently?
  • - Promotion - from apprentice to journeyman - from journeyman to master - Team structure - Mater craftsman: 1 master, 3 journeymen, 9 apprentices - Chief Programmer Team - Ivory tower? Dependency on a single person? Hierarchy? What about self-organised teams? - The journey - Work for different masters - Change jobs frequently?