Software Craftsmanship


Published on

A presentation about Software Craftsmanship. Inspired by 'Uncle Bob' and his books.

Published in: Technology, Business
1 Like
  • Be the first to comment

No Downloads
Total views
On SlideShare
From Embeds
Number of Embeds
Embeds 0
No embeds

No notes for slide

Software Craftsmanship

  1. 1. Professional Software Craftsmanship<br />2011-10-13<br />Andreas Enbohm<br />Twitter: enbohm<br />
  2. 2. The Clean Coder by @unclebobmartin<br />13 oktober 2011<br />Sida 2<br />
  3. 3. 13 oktober 2011<br />Sida 3<br />Craftsmanship<br />”A software craftman is a experiencedprofessionalwho quickly, butwithoutrushing, provides resonable estimates and meetscommitments. A person whichbrings to mind skill, competence and quality. A craftmanknowswhen to say no, buttrieshard to sayyes. [Software] Craftmanship is the mindsetheld by craftsmen.”<br />
  4. 4. Professionalism<br />Professional vs. Nonprofessional<br />It’s all abouttakingresponsibility!<br />First, do no harm!- you must NOT createbugs! - butthatsvirtuallyimpossible<br />All means to createbugfreecode- QA shouldfindnothing- iftheydo, learn from it to prevent it from happendagain<br />13 oktober 2011<br />Sida 4<br />
  5. 5. Professionalism<br />Howdo you know your codeworks?<br />Easy;- test- test again- test it up- test it down- test ALL of it- automated test suites- test upsidedown- test insideout- test left to right- TEST DRIVE IT!<br />13 oktober 2011<br />Sida 5<br />
  6. 6. Professionalism<br />13 oktober 2011<br />Sida 6<br />Boy Scout Rule<br />or <br />MercilessRefactoring<br />
  7. 7. Professionalism<br />Work ethics- 40/20 h week- read blogs, tweets, conferences, try languages…<br />Know your field!- Nassi-Schneidermancharts- Mealy and Moore statemachines- Quicksort withoutlooking it up- Parnastables- Tramp data- Jackson StructuredProgramming<br />13 oktober 2011<br />Sida 7<br />
  8. 8. Professionalism<br />Practice!- Code Katas<br />Mentoring!<br />Know your domain!- no need to be expert- unprofessional to ’just code’<br />13 oktober 2011<br />Sida 8<br />
  9. 9. Saying No<br />”Do; or do not. There is no try”<br />13 oktober 2011<br />Sida 9<br />
  10. 10. Saying No<br />Neversay ”I’ll try” - otherswill interpret as ”Yes”- avoid (unprofessional) pleasantconversation- butwhatwould the world be ifwedidn’t try things?<br />Try == to apply extra effort- ifthere is extra effort, whyhasn’t the team applied it before?- have you/team beenholdingeffort in reserve?- by trying, the previous plans you made are insufficient- whatbehaviorwill you change by ’trying’?<br />Cut the scope! Negotiate – butnever try!<br />13 oktober 2011<br />Sida 10<br />
  11. 11. Handling Pressure<br />13 oktober 2011<br />Sida 11<br />
  12. 12. Handling Pressure<br />Overtimeif, and onlyif, 1) you canpersonallyafford it 2) it is short term 3) you boss has a fallbackplan<br />3) is a deal breaker- if your boss don’thave a backup plan, you should not agree on overtime<br />13 oktober 2011<br />Sida 12<br />
  13. 13. Handling Pressure<br />Stayinclean- dirtycode ALWAYS means slow!- a professional NEVER toleratemesses<br />Trust your disciplines!- followthem at ALL times. Best way to avoidcrisis- practivethemevenharder (more tests, smallermethods..) <br />You won’t go faster without test<br />You won’tgo faster withoutrefactoring<br />You won’tgo faster withoutrunning full regressions test<br />Butit’s tempting for a novice…<br />13 oktober 2011<br />Sida 13<br />
  14. 14. Handling Pressure<br />Commitments- do not accept unrealisticcommitments (never ’try’)- commit ONLY when you are certain<br />Don’tpanic- eat, sleepwell- pair programming / ask for help<br />13 oktober 2011<br />Sida 14<br />
  15. 15. Time Estimates<br />AffinityEstimation<br />Wideband Delphi<br />Flying Fingers<br />Planning Poker<br />PERT- a way to convertestimates to probability distributions suitable for managers<br />13 oktober 2011<br />Sida 15<br />
  16. 16. Time Estimates<br />Program Evaluation and Review Technique- US Navy’s Polaris Submarine project (1957)<br />Three number for each task- Optimistic (wildly)- Normal- Pessimistic (wildly)<br /> µ = (O + 4N + P) / 6, where µ is expected duration (’väntevärde’)<br />σ = (P – O) / 6, whereσ is the standard deviation <br />13 oktober 2011<br />Sida 16<br />
  17. 17. PERT<br />13 oktober 2011<br />Sida 17<br />
  18. 18. Clean Coder<br />Questions?<br /><br /><br />13 oktober 2011<br />Sida 18<br />