The document discusses the principles of software craftsmanship. It emphasizes that a craftsman takes responsibility by thoroughly testing code and refactoring to ensure quality. A professional craftsman maintains high work ethics through continuous learning and mentoring others, and says no when unrealistic commitments are made to avoid low-quality work. The document also describes techniques for estimating timelines such as PERT which converts estimates to probability distributions for managers.
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
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
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
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