SlideShare une entreprise Scribd logo
1  sur  41
Sam Serpoosh

@masihjesus
http://masihjesus .wordpress.com
https://github.com/Sam-Serpoosh
http://linkedin.com /in/samserpoosh
“programmers have more in
common with chefs than
with desk jockeys like
accountants or attorneys.”
~Greg Baugues
 Nobody

wants
to wash the
dishes!


Test-First programming.



Kent Beck used it in Chrysler C3 project
in 1996.



TDD in XP(eXtreme Programming)
practices.



the most important and useful approach
Enumerable

Select method in

Ruby!
• Invokes the block passing in

successive elements from
self, returning an array containing
those elements for which the block
returns a true value (equivalent to
Enumerable#select).
it “fetches green squares” do
green_square =
squares.select {|square| square.color ==
green}
green_square.color.should == green
end


Tests tell the code
how to look like from
its user’s perspective



It is more a design
technique and tests
are great side-effects!



You feel the pain
first when it’s hard
to use!


You are not allowed to write any
production code unless you have a failing
unit test and that production code is about
to make it pass.



You are not allowed to write any more of a
unit test than is sufficient to fail; and
compilation failures are failures.



You are not allowed to write any more
production code than is sufficient to pass
the one failing unit test.
Kent Beck defines:


Never write a single line of code unless
you have a failing automated test.



Eliminate Duplication(DRY, Don’t
Repeat Yourself)







Red (Automated test fails)
Green (Automated test pass)
Refactor (eliminate
duplication, eliminate the mess, clean
the code)
Sushi Chef Metaphor
Red
Dirty Dishes of dinner
Green

Refactor
Start

Write a
test
See it fails
because there’s
no dev code

Run the Test

Write (just enough)
Dev Code to compile
See it fails
because no logic
is implemented

Run the Test
Write (just enough)
Dev Code to compile

See the
Test pass

Run the Test

Refactoring
•

Knowing about execution of system all the
times.

•

Short cycles (even 10 minutes is too long).

•

A minute ago all their code worked. (Pick a
Random Person)
•

Thousands of unit tests will be
produced.

•

Can run them anytime we want.

•

Whenever we make any kind of change.

•

Executable and live documentation of
system instead of pile of papers.
•

There’s a test as an example to show
you what you want!

•

They CANNOT be out of date

•

Make the FEAR disappear (Refactoring)
 Oh

My God this
code is a mess

I

need to clean this up!
 But I’m not gonna touch it!
TDD 
Testable
Decoupled

Decoupling
most important
factor
TDD 
managing dependency better 
DIP
•

so much flexible and easy to change.
Software is Soft again! Go ahead and
change!

•

NOT  Fragile, Rigid, Immobile

•
TESTS MORE SPECIFIC

CODE MORE GENERAL
•

2005 study  TDD  more productive &
increase their confidence.

•

software  much more
flexible, reliable, testable & with great live
documentation.

•

NOT PROFESSIONAL if you don’t do TDD
(~ Uncle Bob, Ron Jeffries, Kent
Beck, etc.)
had been a programmer for 3 decades
before I was introduced to TDD. I did not
think anyone could teach me a low level
programming practice that would make a
difference. But when I started TDD, I was
dumbfounded at the effectiveness of the
technique.
~ Robert C. Martin

I
Blog posts and articles:


Grand Design by Stephen Hawking &
Leonard Mlodinow

•

http://objectmentor.com/articles

•

http://cleancoder.com/articles

•

http://codebetter.com/articles

•

Code like a chef series!
•

Robert C. Martin craftsmanship article
series

•

Uncle Bob on Rules and Benefits of TDD

•

Michael Feathers Synergy between Design
and Testability

•

Jeremy D. Miller Writing Maintainable
Programs series

•

Sarah Gray on Visualizing Enumerable
Books:
• TDD by Example (Kent Beck)
• Clean Code (Robert C. Martin)
• Agile Software Development
Principles, Patterns, Practices (Robert C.
Martin)
• Working Effectively With Legacy Code
(Michael Feathers)
• Growing Object-Oriented Software Guided
by Tests (Steve Freeman & Nat Pryce)
• Refactoring (Martin Fowler)
Lectures And Conferences:
•
•
•
•
•
•
•

Clean Code I, II (Robert C. Martin)
Are you a Professional? (Robert C. Martin)
Synergy between Design and Testability
(Michael Feathers)
Effective Software Development (Alistair
Cockburn)
Clean, Testable Code (Misko Hevery)
Clean Coders Videos (Clean Code Matters)
Destroy All Software (Gary Bernhardt)
TDD & Effective Software Development

Contenu connexe

Tendances

The problem with tdd
The problem with tddThe problem with tdd
The problem with tddDror Helper
 
Four Stages of Automated Testing by Bradley Temple
Four Stages of Automated Testing by Bradley TempleFour Stages of Automated Testing by Bradley Temple
Four Stages of Automated Testing by Bradley TempleQA or the Highway
 
Improve your TDD skills
Improve your TDD skillsImprove your TDD skills
Improve your TDD skillsXPeppers
 
Daniel Cerecedo | From legacy to cloud... and beyond | Codemotion Madrid 2018
Daniel Cerecedo | From legacy to cloud... and beyond | Codemotion Madrid 2018  Daniel Cerecedo | From legacy to cloud... and beyond | Codemotion Madrid 2018
Daniel Cerecedo | From legacy to cloud... and beyond | Codemotion Madrid 2018 Codemotion
 
My journey as a developer
My journey as a developerMy journey as a developer
My journey as a developerMehdi Khalili
 
Test Driven Development: More Development Than Ever
Test Driven Development: More Development Than EverTest Driven Development: More Development Than Ever
Test Driven Development: More Development Than EverKiryl Baranoshnik
 
Pair Programming (2014)
Pair Programming (2014)Pair Programming (2014)
Pair Programming (2014)Peter Kofler
 
TestBash: Quality Does Not Belong With the Tester!
TestBash: Quality Does Not Belong With the Tester!TestBash: Quality Does Not Belong With the Tester!
TestBash: Quality Does Not Belong With the Tester!Maaret Pyhäjärvi
 
Coderetreat @ CodersTUG
Coderetreat @ CodersTUGCoderetreat @ CodersTUG
Coderetreat @ CodersTUGMatteo Baglini
 
Bringing Open-Source Practices to Your Day Job
Bringing Open-Source Practices to Your Day JobBringing Open-Source Practices to Your Day Job
Bringing Open-Source Practices to Your Day JobBen Coe
 
The Software Craftsman (2nd edition)
The Software Craftsman (2nd edition)The Software Craftsman (2nd edition)
The Software Craftsman (2nd edition)goeran
 
03 - chomu prohramisty ne testuiut - yurii chulovskyi - it event 2013 (5)
03 -  chomu prohramisty ne testuiut - yurii chulovskyi - it event 2013 (5)03 -  chomu prohramisty ne testuiut - yurii chulovskyi - it event 2013 (5)
03 - chomu prohramisty ne testuiut - yurii chulovskyi - it event 2013 (5)Igor Bronovskyy
 
Pair programming demystified
Pair programming demystifiedPair programming demystified
Pair programming demystifiedMarek Kirejczyk
 
Visual Studio tricks every dot net developer should know
Visual Studio tricks every dot net developer should knowVisual Studio tricks every dot net developer should know
Visual Studio tricks every dot net developer should knowDror Helper
 
Outside-in Testing in Vue with Cypress
Outside-in Testing in Vue with CypressOutside-in Testing in Vue with Cypress
Outside-in Testing in Vue with CypressJosh Justice
 

Tendances (20)

The problem with tdd
The problem with tddThe problem with tdd
The problem with tdd
 
Intro to TDD
Intro to TDDIntro to TDD
Intro to TDD
 
Four Stages of Automated Testing by Bradley Temple
Four Stages of Automated Testing by Bradley TempleFour Stages of Automated Testing by Bradley Temple
Four Stages of Automated Testing by Bradley Temple
 
Improve your TDD skills
Improve your TDD skillsImprove your TDD skills
Improve your TDD skills
 
Daniel Cerecedo | From legacy to cloud... and beyond | Codemotion Madrid 2018
Daniel Cerecedo | From legacy to cloud... and beyond | Codemotion Madrid 2018  Daniel Cerecedo | From legacy to cloud... and beyond | Codemotion Madrid 2018
Daniel Cerecedo | From legacy to cloud... and beyond | Codemotion Madrid 2018
 
My journey as a developer
My journey as a developerMy journey as a developer
My journey as a developer
 
Test Driven Development
Test Driven DevelopmentTest Driven Development
Test Driven Development
 
Test Driven Development: More Development Than Ever
Test Driven Development: More Development Than EverTest Driven Development: More Development Than Ever
Test Driven Development: More Development Than Ever
 
Pair Programming (2014)
Pair Programming (2014)Pair Programming (2014)
Pair Programming (2014)
 
TestBash: Quality Does Not Belong With the Tester!
TestBash: Quality Does Not Belong With the Tester!TestBash: Quality Does Not Belong With the Tester!
TestBash: Quality Does Not Belong With the Tester!
 
Coderetreat @ CodersTUG
Coderetreat @ CodersTUGCoderetreat @ CodersTUG
Coderetreat @ CodersTUG
 
Bringing Open-Source Practices to Your Day Job
Bringing Open-Source Practices to Your Day JobBringing Open-Source Practices to Your Day Job
Bringing Open-Source Practices to Your Day Job
 
Unit testing for project managers
Unit testing for project managersUnit testing for project managers
Unit testing for project managers
 
The Software Craftsman (2nd edition)
The Software Craftsman (2nd edition)The Software Craftsman (2nd edition)
The Software Craftsman (2nd edition)
 
03 - chomu prohramisty ne testuiut - yurii chulovskyi - it event 2013 (5)
03 -  chomu prohramisty ne testuiut - yurii chulovskyi - it event 2013 (5)03 -  chomu prohramisty ne testuiut - yurii chulovskyi - it event 2013 (5)
03 - chomu prohramisty ne testuiut - yurii chulovskyi - it event 2013 (5)
 
Best pratice
Best praticeBest pratice
Best pratice
 
Pair programming demystified
Pair programming demystifiedPair programming demystified
Pair programming demystified
 
Test Driven Development
Test Driven DevelopmentTest Driven Development
Test Driven Development
 
Visual Studio tricks every dot net developer should know
Visual Studio tricks every dot net developer should knowVisual Studio tricks every dot net developer should know
Visual Studio tricks every dot net developer should know
 
Outside-in Testing in Vue with Cypress
Outside-in Testing in Vue with CypressOutside-in Testing in Vue with Cypress
Outside-in Testing in Vue with Cypress
 

Similaire à TDD & Effective Software Development

Test Driven Development on Android (Kotlin Kenya)
Test Driven Development on Android (Kotlin Kenya)Test Driven Development on Android (Kotlin Kenya)
Test Driven Development on Android (Kotlin Kenya)Danny Preussler
 
Driving application development through behavior driven development
Driving application development through behavior driven developmentDriving application development through behavior driven development
Driving application development through behavior driven developmentEinar Ingebrigtsen
 
How to test a Mainframe Application
How to test a Mainframe ApplicationHow to test a Mainframe Application
How to test a Mainframe ApplicationMichael Erichsen
 
TDD - Seriously, try it! - Trójmiasto Java User Group (17th May '23)
TDD - Seriously, try it! - Trójmiasto Java User Group (17th May '23)TDD - Seriously, try it! - Trójmiasto Java User Group (17th May '23)
TDD - Seriously, try it! - Trójmiasto Java User Group (17th May '23)ssusercaf6c1
 
TDD - Seriously, try it! - Trjjmiasto JUG (17th May '23)
TDD - Seriously, try it! - Trjjmiasto JUG (17th May '23)TDD - Seriously, try it! - Trjjmiasto JUG (17th May '23)
TDD - Seriously, try it! - Trjjmiasto JUG (17th May '23)Nacho Cougil
 
TDD - Seriously, try it! (updated '22)
TDD - Seriously, try it! (updated '22)TDD - Seriously, try it! (updated '22)
TDD - Seriously, try it! (updated '22)Nacho Cougil
 
TDD Anti-patterns (2022 edition)
TDD Anti-patterns (2022 edition)TDD Anti-patterns (2022 edition)
TDD Anti-patterns (2022 edition)Ahmed Misbah
 
TDD and Simple Design Workshop - Session 1 - March 2019
TDD and Simple Design Workshop - Session 1 - March 2019TDD and Simple Design Workshop - Session 1 - March 2019
TDD and Simple Design Workshop - Session 1 - March 2019Paulo Clavijo
 
Understanding Why Testing is Importaint
Understanding Why Testing is ImportaintUnderstanding Why Testing is Importaint
Understanding Why Testing is ImportaintSana Nasar
 
Joe Cisar - Everything I Know About TDD - Agile Midwest 2019
Joe Cisar - Everything I Know About TDD - Agile Midwest 2019Joe Cisar - Everything I Know About TDD - Agile Midwest 2019
Joe Cisar - Everything I Know About TDD - Agile Midwest 2019Jason Tice
 
assertYourself - Breaking the Theories and Assumptions of Unit Testing in Flex
assertYourself - Breaking the Theories and Assumptions of Unit Testing in FlexassertYourself - Breaking the Theories and Assumptions of Unit Testing in Flex
assertYourself - Breaking the Theories and Assumptions of Unit Testing in Flexmichael.labriola
 
TDD - Christchurch APN May 2012
TDD - Christchurch APN May 2012TDD - Christchurch APN May 2012
TDD - Christchurch APN May 2012Alan Christensen
 
Test-Driven Development In Action
Test-Driven Development In ActionTest-Driven Development In Action
Test-Driven Development In ActionJon Kruger
 
A la découverte des google/test (aka gtest)
A la découverte des google/test (aka gtest)A la découverte des google/test (aka gtest)
A la découverte des google/test (aka gtest)Thierry Gayet
 
TDD - Seriously, try it! - Bucarest Tech Week
TDD - Seriously, try it! - Bucarest Tech WeekTDD - Seriously, try it! - Bucarest Tech Week
TDD - Seriously, try it! - Bucarest Tech WeekNacho Cougil
 
iOS Test-Driven Development
iOS Test-Driven DevelopmentiOS Test-Driven Development
iOS Test-Driven DevelopmentPablo Villar
 

Similaire à TDD & Effective Software Development (20)

Test Driven Development on Android (Kotlin Kenya)
Test Driven Development on Android (Kotlin Kenya)Test Driven Development on Android (Kotlin Kenya)
Test Driven Development on Android (Kotlin Kenya)
 
Driving application development through behavior driven development
Driving application development through behavior driven developmentDriving application development through behavior driven development
Driving application development through behavior driven development
 
How to test a Mainframe Application
How to test a Mainframe ApplicationHow to test a Mainframe Application
How to test a Mainframe Application
 
TDD - Seriously, try it! - Trójmiasto Java User Group (17th May '23)
TDD - Seriously, try it! - Trójmiasto Java User Group (17th May '23)TDD - Seriously, try it! - Trójmiasto Java User Group (17th May '23)
TDD - Seriously, try it! - Trójmiasto Java User Group (17th May '23)
 
TDD - Seriously, try it! - Trjjmiasto JUG (17th May '23)
TDD - Seriously, try it! - Trjjmiasto JUG (17th May '23)TDD - Seriously, try it! - Trjjmiasto JUG (17th May '23)
TDD - Seriously, try it! - Trjjmiasto JUG (17th May '23)
 
TDD - Seriously, try it! (updated '22)
TDD - Seriously, try it! (updated '22)TDD - Seriously, try it! (updated '22)
TDD - Seriously, try it! (updated '22)
 
TDD Anti-patterns (2022 edition)
TDD Anti-patterns (2022 edition)TDD Anti-patterns (2022 edition)
TDD Anti-patterns (2022 edition)
 
TDD and Simple Design Workshop - Session 1 - March 2019
TDD and Simple Design Workshop - Session 1 - March 2019TDD and Simple Design Workshop - Session 1 - March 2019
TDD and Simple Design Workshop - Session 1 - March 2019
 
Understanding Why Testing is Importaint
Understanding Why Testing is ImportaintUnderstanding Why Testing is Importaint
Understanding Why Testing is Importaint
 
Ian Cooper webinar for DDD Iran: Kent beck style tdd seven years after
Ian Cooper webinar for DDD Iran: Kent beck style tdd   seven years afterIan Cooper webinar for DDD Iran: Kent beck style tdd   seven years after
Ian Cooper webinar for DDD Iran: Kent beck style tdd seven years after
 
Joe Cisar - Everything I Know About TDD - Agile Midwest 2019
Joe Cisar - Everything I Know About TDD - Agile Midwest 2019Joe Cisar - Everything I Know About TDD - Agile Midwest 2019
Joe Cisar - Everything I Know About TDD - Agile Midwest 2019
 
TDD in Agile
TDD in AgileTDD in Agile
TDD in Agile
 
assertYourself - Breaking the Theories and Assumptions of Unit Testing in Flex
assertYourself - Breaking the Theories and Assumptions of Unit Testing in FlexassertYourself - Breaking the Theories and Assumptions of Unit Testing in Flex
assertYourself - Breaking the Theories and Assumptions of Unit Testing in Flex
 
TDD - Christchurch APN May 2012
TDD - Christchurch APN May 2012TDD - Christchurch APN May 2012
TDD - Christchurch APN May 2012
 
Test-Driven Development In Action
Test-Driven Development In ActionTest-Driven Development In Action
Test-Driven Development In Action
 
A la découverte des google/test (aka gtest)
A la découverte des google/test (aka gtest)A la découverte des google/test (aka gtest)
A la découverte des google/test (aka gtest)
 
TDD In Practice
TDD In PracticeTDD In Practice
TDD In Practice
 
Unit Testing talk
Unit Testing talkUnit Testing talk
Unit Testing talk
 
TDD - Seriously, try it! - Bucarest Tech Week
TDD - Seriously, try it! - Bucarest Tech WeekTDD - Seriously, try it! - Bucarest Tech Week
TDD - Seriously, try it! - Bucarest Tech Week
 
iOS Test-Driven Development
iOS Test-Driven DevelopmentiOS Test-Driven Development
iOS Test-Driven Development
 

Dernier

How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity PlanDatabarracks
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsMark Billinghurst
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxhariprasad279825
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brandgvaughan
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionDilum Bandara
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Mattias Andersson
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsRizwan Syed
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupFlorian Wilhelm
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsPixlogix Infotech
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Manik S Magar
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationSlibray Presentation
 
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdfHyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdfPrecisely
 
Search Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfSearch Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfRankYa
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLScyllaDB
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyAlfredo García Lavilla
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024Stephanie Beckett
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebUiPathCommunity
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024Lorenzo Miniero
 

Dernier (20)

How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity Plan
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR Systems
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptx
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brand
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An Introduction
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL Certs
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project Setup
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and Cons
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck Presentation
 
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdfHyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
 
Search Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfSearch Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdf
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQL
 
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptxE-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easy
 
DMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special EditionDMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special Edition
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio Web
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024
 

TDD & Effective Software Development

  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 10.
  • 11.
  • 12.
  • 13. “programmers have more in common with chefs than with desk jockeys like accountants or attorneys.” ~Greg Baugues
  • 15.
  • 16.
  • 17.  Test-First programming.  Kent Beck used it in Chrysler C3 project in 1996.  TDD in XP(eXtreme Programming) practices.  the most important and useful approach
  • 18.
  • 19.
  • 20. Enumerable Select method in Ruby! • Invokes the block passing in successive elements from self, returning an array containing those elements for which the block returns a true value (equivalent to Enumerable#select).
  • 21. it “fetches green squares” do green_square = squares.select {|square| square.color == green} green_square.color.should == green end
  • 22.  Tests tell the code how to look like from its user’s perspective  It is more a design technique and tests are great side-effects!  You feel the pain first when it’s hard to use!
  • 23.  You are not allowed to write any production code unless you have a failing unit test and that production code is about to make it pass.  You are not allowed to write any more of a unit test than is sufficient to fail; and compilation failures are failures.  You are not allowed to write any more production code than is sufficient to pass the one failing unit test.
  • 24. Kent Beck defines:  Never write a single line of code unless you have a failing automated test.  Eliminate Duplication(DRY, Don’t Repeat Yourself)
  • 25.      Red (Automated test fails) Green (Automated test pass) Refactor (eliminate duplication, eliminate the mess, clean the code) Sushi Chef Metaphor Red Dirty Dishes of dinner Green Refactor
  • 26. Start Write a test See it fails because there’s no dev code Run the Test Write (just enough) Dev Code to compile See it fails because no logic is implemented Run the Test Write (just enough) Dev Code to compile See the Test pass Run the Test Refactoring
  • 27. • Knowing about execution of system all the times. • Short cycles (even 10 minutes is too long). • A minute ago all their code worked. (Pick a Random Person)
  • 28.
  • 29. • Thousands of unit tests will be produced. • Can run them anytime we want. • Whenever we make any kind of change. • Executable and live documentation of system instead of pile of papers.
  • 30. • There’s a test as an example to show you what you want! • They CANNOT be out of date • Make the FEAR disappear (Refactoring)
  • 31.  Oh My God this code is a mess I need to clean this up!  But I’m not gonna touch it!
  • 33. • so much flexible and easy to change. Software is Soft again! Go ahead and change! • NOT  Fragile, Rigid, Immobile •
  • 35. • 2005 study  TDD  more productive & increase their confidence. • software  much more flexible, reliable, testable & with great live documentation. • NOT PROFESSIONAL if you don’t do TDD (~ Uncle Bob, Ron Jeffries, Kent Beck, etc.)
  • 36. had been a programmer for 3 decades before I was introduced to TDD. I did not think anyone could teach me a low level programming practice that would make a difference. But when I started TDD, I was dumbfounded at the effectiveness of the technique. ~ Robert C. Martin I
  • 37. Blog posts and articles:  Grand Design by Stephen Hawking & Leonard Mlodinow • http://objectmentor.com/articles • http://cleancoder.com/articles • http://codebetter.com/articles • Code like a chef series!
  • 38. • Robert C. Martin craftsmanship article series • Uncle Bob on Rules and Benefits of TDD • Michael Feathers Synergy between Design and Testability • Jeremy D. Miller Writing Maintainable Programs series • Sarah Gray on Visualizing Enumerable
  • 39. Books: • TDD by Example (Kent Beck) • Clean Code (Robert C. Martin) • Agile Software Development Principles, Patterns, Practices (Robert C. Martin) • Working Effectively With Legacy Code (Michael Feathers) • Growing Object-Oriented Software Guided by Tests (Steve Freeman & Nat Pryce) • Refactoring (Martin Fowler)
  • 40. Lectures And Conferences: • • • • • • • Clean Code I, II (Robert C. Martin) Are you a Professional? (Robert C. Martin) Synergy between Design and Testability (Michael Feathers) Effective Software Development (Alistair Cockburn) Clean, Testable Code (Misko Hevery) Clean Coders Videos (Clean Code Matters) Destroy All Software (Gary Bernhardt)