3. 13 oktober 2011 Sida 3 Craftsmanship ”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.”
4. 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
5. 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
7. 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
8. Professionalism Practice!- Code Katas Mentoring! Know your domain!- no need to be expert- unprofessional to ’just code’ 13 oktober 2011 Sida 8
9. Saying No ”Do; or do not. There is no try” 13 oktober 2011 Sida 9
10. 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
12. 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
13. 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
14. 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
15. Time Estimates AffinityEstimation Wideband Delphi Flying Fingers Planning Poker PERT- a way to convertestimates to probability distributions suitable for managers 13 oktober 2011 Sida 15
16. 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