SlideShare uma empresa Scribd logo
1 de 18
Professional Software Craftsmanship 2011-10-13 Andreas Enbohm Twitter: enbohm
The Clean Coder by @unclebobmartin 13 oktober 2011 Sida 2
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.”
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 or  MercilessRefactoring
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 Mentoring! 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 AffinityEstimation 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 Questions? http://slideshare.net/enbohm http://codekata.pragprog.com/ 13 oktober 2011 Sida 18

Mais conteúdo relacionado

Mais procurados

Programming Assignments in Tester Interviews
Programming Assignments in Tester InterviewsProgramming Assignments in Tester Interviews
Programming Assignments in Tester InterviewsMaaret Pyhäjärvi
 
ATAGTR Keynote: I have a rock in my shoe - Navigating Improvement
ATAGTR Keynote: I have a rock in my shoe - Navigating ImprovementATAGTR Keynote: I have a rock in my shoe - Navigating Improvement
ATAGTR Keynote: I have a rock in my shoe - Navigating ImprovementMaaret Pyhäjärvi
 
Learn Unit Testing and Improve Sexual Performance
Learn Unit Testing and Improve Sexual PerformanceLearn Unit Testing and Improve Sexual Performance
Learn Unit Testing and Improve Sexual PerformanceBill Shelton
 
7 ways you are doing your A/B testing wrong by Côme Courteault
7 ways you are doing your A/B testing wrong by Côme Courteault7 ways you are doing your A/B testing wrong by Côme Courteault
7 ways you are doing your A/B testing wrong by Côme CourteaultTheFamily
 
MoT Sarajevo: How to get better at Exploratory testing
MoT Sarajevo: How to get better at Exploratory testingMoT Sarajevo: How to get better at Exploratory testing
MoT Sarajevo: How to get better at Exploratory testingMaaret Pyhäjärvi
 
10 Things To Drive Your Scrum Master Crazy
10 Things To Drive Your Scrum Master Crazy10 Things To Drive Your Scrum Master Crazy
10 Things To Drive Your Scrum Master CrazyMarc Löffler
 
Марта Комарницька
Марта КомарницькаМарта Комарницька
Марта КомарницькаLviv Startup Club
 
Exceptions: Why, When, How and Where!
Exceptions: Why, When, How and Where!Exceptions: Why, When, How and Where!
Exceptions: Why, When, How and Where!Hernan Wilkinson
 
AADays Poland: Perfecting the Craft of Test Automation
AADays Poland: Perfecting the Craft of Test AutomationAADays Poland: Perfecting the Craft of Test Automation
AADays Poland: Perfecting the Craft of Test AutomationMaaret Pyhäjärvi
 
Talentum: Testiautomaation tekemisen taito
Talentum: Testiautomaation tekemisen taitoTalentum: Testiautomaation tekemisen taito
Talentum: Testiautomaation tekemisen taitoMaaret Pyhäjärvi
 

Mais procurados (13)

Programming Assignments in Tester Interviews
Programming Assignments in Tester InterviewsProgramming Assignments in Tester Interviews
Programming Assignments in Tester Interviews
 
ATAGTR Keynote: I have a rock in my shoe - Navigating Improvement
ATAGTR Keynote: I have a rock in my shoe - Navigating ImprovementATAGTR Keynote: I have a rock in my shoe - Navigating Improvement
ATAGTR Keynote: I have a rock in my shoe - Navigating Improvement
 
Learn Unit Testing and Improve Sexual Performance
Learn Unit Testing and Improve Sexual PerformanceLearn Unit Testing and Improve Sexual Performance
Learn Unit Testing and Improve Sexual Performance
 
7 ways you are doing your A/B testing wrong by Côme Courteault
7 ways you are doing your A/B testing wrong by Côme Courteault7 ways you are doing your A/B testing wrong by Côme Courteault
7 ways you are doing your A/B testing wrong by Côme Courteault
 
MoT Sarajevo: How to get better at Exploratory testing
MoT Sarajevo: How to get better at Exploratory testingMoT Sarajevo: How to get better at Exploratory testing
MoT Sarajevo: How to get better at Exploratory testing
 
10 Things To Drive Your Scrum Master Crazy
10 Things To Drive Your Scrum Master Crazy10 Things To Drive Your Scrum Master Crazy
10 Things To Drive Your Scrum Master Crazy
 
Марта Комарницька
Марта КомарницькаМарта Комарницька
Марта Комарницька
 
Exceptions: Why, When, How and Where!
Exceptions: Why, When, How and Where!Exceptions: Why, When, How and Where!
Exceptions: Why, When, How and Where!
 
5. pre production(3)
5. pre production(3)5. pre production(3)
5. pre production(3)
 
AADays Poland: Perfecting the Craft of Test Automation
AADays Poland: Perfecting the Craft of Test AutomationAADays Poland: Perfecting the Craft of Test Automation
AADays Poland: Perfecting the Craft of Test Automation
 
Talentum: Testiautomaation tekemisen taito
Talentum: Testiautomaation tekemisen taitoTalentum: Testiautomaation tekemisen taito
Talentum: Testiautomaation tekemisen taito
 
Interviews
InterviewsInterviews
Interviews
 
Design [Autosaved]
Design [Autosaved]Design [Autosaved]
Design [Autosaved]
 

Destaque

Java Extension Methods
Java Extension MethodsJava Extension Methods
Java Extension MethodsAndreas Enbohm
 
Project Lambda - Closures after all?
Project Lambda - Closures after all?Project Lambda - Closures after all?
Project Lambda - Closures after all?Andreas Enbohm
 
BDD Short Introduction
BDD Short IntroductionBDD Short Introduction
BDD Short IntroductionAndreas Enbohm
 
Behavior-driven Development and Lambdaj
Behavior-driven Development and LambdajBehavior-driven Development and Lambdaj
Behavior-driven Development and LambdajAndreas Enbohm
 
Java7 - Top 10 Features
Java7 - Top 10 FeaturesJava7 - Top 10 Features
Java7 - Top 10 FeaturesAndreas Enbohm
 
SOLID Design Principles
SOLID Design PrinciplesSOLID Design Principles
SOLID Design PrinciplesAndreas Enbohm
 

Destaque (8)

Scala
ScalaScala
Scala
 
Java Extension Methods
Java Extension MethodsJava Extension Methods
Java Extension Methods
 
Project Lambda - Closures after all?
Project Lambda - Closures after all?Project Lambda - Closures after all?
Project Lambda - Closures after all?
 
BDD Short Introduction
BDD Short IntroductionBDD Short Introduction
BDD Short Introduction
 
Behavior-driven Development and Lambdaj
Behavior-driven Development and LambdajBehavior-driven Development and Lambdaj
Behavior-driven Development and Lambdaj
 
Java7 - Top 10 Features
Java7 - Top 10 FeaturesJava7 - Top 10 Features
Java7 - Top 10 Features
 
Hybrid Applications
Hybrid ApplicationsHybrid Applications
Hybrid Applications
 
SOLID Design Principles
SOLID Design PrinciplesSOLID Design Principles
SOLID Design Principles
 

Semelhante a Software Craftsmanship

10+ Testing Pitfalls and How to Avoid them
10+ Testing Pitfalls and How to Avoid them 10+ Testing Pitfalls and How to Avoid them
10+ Testing Pitfalls and How to Avoid them PractiTest
 
Selenium Users Anonymous
Selenium Users AnonymousSelenium Users Anonymous
Selenium Users AnonymousDave Haeffner
 
Retro Testing (DevConTLV Jan 2014)
Retro Testing (DevConTLV Jan 2014)Retro Testing (DevConTLV Jan 2014)
Retro Testing (DevConTLV Jan 2014)Allon Mureinik
 
Attract new customers and increase revenue with our Pack Leader Special.
 Attract new customers and increase revenue with our Pack Leader Special. Attract new customers and increase revenue with our Pack Leader Special.
Attract new customers and increase revenue with our Pack Leader Special.Nidheeshponkumar
 
Tips n' Tricks - Sprint Review
Tips n' Tricks - Sprint ReviewTips n' Tricks - Sprint Review
Tips n' Tricks - Sprint ReviewSteve Greene
 
Joy Scharmen - The Virtuous Cycle: Getting Good Things Out of Bad Failures
Joy Scharmen - The Virtuous Cycle: Getting Good Things Out of Bad FailuresJoy Scharmen - The Virtuous Cycle: Getting Good Things Out of Bad Failures
Joy Scharmen - The Virtuous Cycle: Getting Good Things Out of Bad FailuresJoy Scharmen
 
Agile Career Development from the trenches - XP 2013 Vienna
Agile Career Development from the trenches  -  XP 2013 ViennaAgile Career Development from the trenches  -  XP 2013 Vienna
Agile Career Development from the trenches - XP 2013 ViennaIonel Condor
 
DNX GLOBAL Workshop ★ Rodolphe Dutel - Finding remote work: How to start into...
DNX GLOBAL Workshop ★ Rodolphe Dutel - Finding remote work: How to start into...DNX GLOBAL Workshop ★ Rodolphe Dutel - Finding remote work: How to start into...
DNX GLOBAL Workshop ★ Rodolphe Dutel - Finding remote work: How to start into...DNX
 
How To Succeed
How To SucceedHow To Succeed
How To SucceedNBE
 
Agile Coach Retreat @ Seedbox in Montreal - Sept. 7, 2013
Agile Coach Retreat @ Seedbox in Montreal - Sept. 7, 2013Agile Coach Retreat @ Seedbox in Montreal - Sept. 7, 2013
Agile Coach Retreat @ Seedbox in Montreal - Sept. 7, 2013Seedbox
 
Reversed Test Pyramid - Testing and dealing with Legacy Code
Reversed Test Pyramid - Testing and dealing with Legacy CodeReversed Test Pyramid - Testing and dealing with Legacy Code
Reversed Test Pyramid - Testing and dealing with Legacy CodeSQALab
 
Why projects fail
Why projects failWhy projects fail
Why projects failPonto GP
 
How to be a 10x Engineer
How to be a 10x EngineerHow to be a 10x Engineer
How to be a 10x EngineerNick Sullivan
 
13 Tips for Getting the Most Out of Your Next Hackathon
13 Tips for Getting the Most Out of Your Next Hackathon13 Tips for Getting the Most Out of Your Next Hackathon
13 Tips for Getting the Most Out of Your Next HackathonJoe Chernov
 
Tips For New SDRs - Sam Nelson
Tips For New SDRs - Sam NelsonTips For New SDRs - Sam Nelson
Tips For New SDRs - Sam NelsonSam Nelson
 
LO4.pptx preventing and eliminating muda
LO4.pptx preventing and eliminating mudaLO4.pptx preventing and eliminating muda
LO4.pptx preventing and eliminating mudatakur16takur
 

Semelhante a Software Craftsmanship (20)

10+ Testing Pitfalls and How to Avoid them
10+ Testing Pitfalls and How to Avoid them 10+ Testing Pitfalls and How to Avoid them
10+ Testing Pitfalls and How to Avoid them
 
Selenium Users Anonymous
Selenium Users AnonymousSelenium Users Anonymous
Selenium Users Anonymous
 
Retro Testing (DevConTLV Jan 2014)
Retro Testing (DevConTLV Jan 2014)Retro Testing (DevConTLV Jan 2014)
Retro Testing (DevConTLV Jan 2014)
 
Attract new customers and increase revenue with our Pack Leader Special.
 Attract new customers and increase revenue with our Pack Leader Special. Attract new customers and increase revenue with our Pack Leader Special.
Attract new customers and increase revenue with our Pack Leader Special.
 
Tips n' Tricks - Sprint Review
Tips n' Tricks - Sprint ReviewTips n' Tricks - Sprint Review
Tips n' Tricks - Sprint Review
 
Joy Scharmen - The Virtuous Cycle: Getting Good Things Out of Bad Failures
Joy Scharmen - The Virtuous Cycle: Getting Good Things Out of Bad FailuresJoy Scharmen - The Virtuous Cycle: Getting Good Things Out of Bad Failures
Joy Scharmen - The Virtuous Cycle: Getting Good Things Out of Bad Failures
 
When Tdd Goes Awry
When Tdd Goes AwryWhen Tdd Goes Awry
When Tdd Goes Awry
 
Agile Career Development from the trenches - XP 2013 Vienna
Agile Career Development from the trenches  -  XP 2013 ViennaAgile Career Development from the trenches  -  XP 2013 Vienna
Agile Career Development from the trenches - XP 2013 Vienna
 
DNX GLOBAL Workshop ★ Rodolphe Dutel - Finding remote work: How to start into...
DNX GLOBAL Workshop ★ Rodolphe Dutel - Finding remote work: How to start into...DNX GLOBAL Workshop ★ Rodolphe Dutel - Finding remote work: How to start into...
DNX GLOBAL Workshop ★ Rodolphe Dutel - Finding remote work: How to start into...
 
How To Succeed
How To SucceedHow To Succeed
How To Succeed
 
Agile Coach Retreat @ Seedbox in Montreal - Sept. 7, 2013
Agile Coach Retreat @ Seedbox in Montreal - Sept. 7, 2013Agile Coach Retreat @ Seedbox in Montreal - Sept. 7, 2013
Agile Coach Retreat @ Seedbox in Montreal - Sept. 7, 2013
 
Reversed Test Pyramid - Testing and dealing with Legacy Code
Reversed Test Pyramid - Testing and dealing with Legacy CodeReversed Test Pyramid - Testing and dealing with Legacy Code
Reversed Test Pyramid - Testing and dealing with Legacy Code
 
Sqa days2013
Sqa days2013Sqa days2013
Sqa days2013
 
Why projects fail
Why projects failWhy projects fail
Why projects fail
 
How to kill software quality in five steps
How to kill software quality in five stepsHow to kill software quality in five steps
How to kill software quality in five steps
 
How to be a 10x Engineer
How to be a 10x EngineerHow to be a 10x Engineer
How to be a 10x Engineer
 
13 Tips for Getting the Most Out of Your Next Hackathon
13 Tips for Getting the Most Out of Your Next Hackathon13 Tips for Getting the Most Out of Your Next Hackathon
13 Tips for Getting the Most Out of Your Next Hackathon
 
Getting real
Getting realGetting real
Getting real
 
Tips For New SDRs - Sam Nelson
Tips For New SDRs - Sam NelsonTips For New SDRs - Sam Nelson
Tips For New SDRs - Sam Nelson
 
LO4.pptx preventing and eliminating muda
LO4.pptx preventing and eliminating mudaLO4.pptx preventing and eliminating muda
LO4.pptx preventing and eliminating muda
 

Último

The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024Rafal Los
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Enterprise Knowledge
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdfhans926745
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsJoaquim Jorge
 
Advantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessAdvantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessPixlogix Infotech
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...Martijn de Jong
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?Antenna Manufacturer Coco
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking MenDelhi Call girls
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...Neo4j
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘RTylerCroy
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountPuma Security, LLC
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonAnna Loughnan Colquhoun
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreternaman860154
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024The Digital Insurer
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)Gabriella Davis
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024The Digital Insurer
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsEnterprise Knowledge
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxKatpro Technologies
 

Último (20)

The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
 
Advantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessAdvantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your Business
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path Mount
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
 

Software Craftsmanship

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