際際滷

際際滷Share a Scribd company logo
Professional Software Craftsmanship2011-10-13Andreas EnbohmTwitter: enbohm
The Clean Coder by @unclebobmartin13 oktober 2011Sida 2
13 oktober 2011Sida 3CraftsmanshipA 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.
ProfessionalismProfessional vs. NonprofessionalIts all abouttakingresponsibility!First, do no harm!- you must NOT createbugs! - butthatsvirtuallyimpossibleAll means to createbugfreecode- QA shouldfindnothing- iftheydo, learn from it to prevent it from happendagain13 oktober 2011Sida 4
ProfessionalismHowdo 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 2011Sida 5
Professionalism13 oktober 2011Sida 6Boy Scout Ruleor MercilessRefactoring
ProfessionalismWork ethics- 40/20 h week- read blogs, tweets, conferences, try languagesKnow your field!- Nassi-Schneidermancharts- Mealy and Moore statemachines- Quicksort withoutlooking it up- Parnastables- Tramp data- Jackson StructuredProgramming13 oktober 2011Sida 7
ProfessionalismPractice!- Code KatasMentoring!Know your domain!- no need to be expert- unprofessional to just code13 oktober 2011Sida 8
Saying NoDo; or do not. There is no try13 oktober 2011Sida 9
Saying NoNeversay Ill try - otherswill interpret as Yes- avoid (unprofessional) pleasantconversation- butwhatwould the world be ifwedidnt try things?Try == to apply extra effort- ifthere is extra effort, whyhasnt 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 2011Sida 10
Handling Pressure13 oktober 2011Sida 11
Handling PressureOvertimeif, and onlyif, 1) you canpersonallyafford it 2) it is short term 3) you boss has a fallbackplan3) is a deal breaker- if your boss donthave a backup plan, you should not agree on overtime13 oktober 2011Sida 12
Handling PressureStayinclean- dirtycode ALWAYS means slow!- a professional NEVER toleratemessesTrust your disciplines!- followthem at ALL times. Best way to avoidcrisis- practivethemevenharder (more tests, smallermethods..) You wont go faster without testYou wontgo faster withoutrefactoringYou wontgo faster withoutrunning full regressions testButits tempting for a novice13 oktober 2011Sida 13
Handling PressureCommitments- do not accept unrealisticcommitments (never try)- commit ONLY when you are certainDontpanic- eat, sleepwell- pair programming / ask for help13 oktober 2011Sida 14
Time EstimatesAffinityEstimationWideband DelphiFlying FingersPlanning PokerPERT- a way to convertestimates to probability distributions suitable for managers13 oktober 2011Sida 15
Time EstimatesProgram Evaluation and Review Technique- US Navys 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 2011Sida 16
PERT13 oktober 2011Sida 17
Clean CoderQuestions?http://slideshare.net/enbohmhttp://codekata.pragprog.com/13 oktober 2011Sida 18

More Related Content

Software Craftsmanship

  • 2. The Clean Coder by @unclebobmartin13 oktober 2011Sida 2
  • 3. 13 oktober 2011Sida 3CraftsmanshipA 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. ProfessionalismProfessional vs. NonprofessionalIts all abouttakingresponsibility!First, do no harm!- you must NOT createbugs! - butthatsvirtuallyimpossibleAll means to createbugfreecode- QA shouldfindnothing- iftheydo, learn from it to prevent it from happendagain13 oktober 2011Sida 4
  • 5. ProfessionalismHowdo 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 2011Sida 5
  • 6. Professionalism13 oktober 2011Sida 6Boy Scout Ruleor MercilessRefactoring
  • 7. ProfessionalismWork ethics- 40/20 h week- read blogs, tweets, conferences, try languagesKnow your field!- Nassi-Schneidermancharts- Mealy and Moore statemachines- Quicksort withoutlooking it up- Parnastables- Tramp data- Jackson StructuredProgramming13 oktober 2011Sida 7
  • 8. ProfessionalismPractice!- Code KatasMentoring!Know your domain!- no need to be expert- unprofessional to just code13 oktober 2011Sida 8
  • 9. Saying NoDo; or do not. There is no try13 oktober 2011Sida 9
  • 10. Saying NoNeversay Ill try - otherswill interpret as Yes- avoid (unprofessional) pleasantconversation- butwhatwould the world be ifwedidnt try things?Try == to apply extra effort- ifthere is extra effort, whyhasnt 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 2011Sida 10
  • 12. Handling PressureOvertimeif, and onlyif, 1) you canpersonallyafford it 2) it is short term 3) you boss has a fallbackplan3) is a deal breaker- if your boss donthave a backup plan, you should not agree on overtime13 oktober 2011Sida 12
  • 13. Handling PressureStayinclean- dirtycode ALWAYS means slow!- a professional NEVER toleratemessesTrust your disciplines!- followthem at ALL times. Best way to avoidcrisis- practivethemevenharder (more tests, smallermethods..) You wont go faster without testYou wontgo faster withoutrefactoringYou wontgo faster withoutrunning full regressions testButits tempting for a novice13 oktober 2011Sida 13
  • 14. Handling PressureCommitments- do not accept unrealisticcommitments (never try)- commit ONLY when you are certainDontpanic- eat, sleepwell- pair programming / ask for help13 oktober 2011Sida 14
  • 15. Time EstimatesAffinityEstimationWideband DelphiFlying FingersPlanning PokerPERT- a way to convertestimates to probability distributions suitable for managers13 oktober 2011Sida 15
  • 16. Time EstimatesProgram Evaluation and Review Technique- US Navys 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 2011Sida 16