Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Software Craftsmanship


Published on

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

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

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 />