Software Craftsmanship
Upcoming SlideShare
Loading in...5

Software Craftsmanship



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

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



Total Views
Slideshare-icon Views on SlideShare
Embed Views



2 Embeds 2 1 1



Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
Post Comment
Edit your comment

    Software Craftsmanship Software Craftsmanship Presentation Transcript

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