Your SlideShare is downloading. ×
0
Software Craftsmanship
Software Craftsmanship
Software Craftsmanship
Software Craftsmanship
Software Craftsmanship
Software Craftsmanship
Software Craftsmanship
Software Craftsmanship
Software Craftsmanship
Software Craftsmanship
Software Craftsmanship
Software Craftsmanship
Software Craftsmanship
Software Craftsmanship
Software Craftsmanship
Software Craftsmanship
Software Craftsmanship
Software Craftsmanship
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Software Craftsmanship

1,315

Published on

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

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

Published in: Technology, Business
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
1,315
On Slideshare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
23
Comments
0
Likes
1
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. Professional Software Craftsmanship<br />2011-10-13<br />Andreas Enbohm<br />Twitter: enbohm<br />
  • 2. The Clean Coder by @unclebobmartin<br />13 oktober 2011<br />Sida 2<br />
  • 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. 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. 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. Professionalism<br />13 oktober 2011<br />Sida 6<br />Boy Scout Rule<br />or <br />MercilessRefactoring<br />
  • 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. 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. Saying No<br />”Do; or do not. There is no try”<br />13 oktober 2011<br />Sida 9<br />
  • 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. Handling Pressure<br />13 oktober 2011<br />Sida 11<br />
  • 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. 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. 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. 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. 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. PERT<br />13 oktober 2011<br />Sida 17<br />
  • 18. Clean Coder<br />Questions?<br />http://slideshare.net/enbohm<br />http://codekata.pragprog.com/<br />13 oktober 2011<br />Sida 18<br />

×