SlideShare a Scribd company logo
1 of 30
TDD & S.O.L.I.D.Two ingredients for high-quality software Dennis Doomen dennis.doomen@avivasolutions.nl
About Me Principal Consultant at Aviva Solutions 35 years 6-month daughter 12 years of experience C++ origins On .NET since 2001
Agenda About quality Test Driven Development & S.O.L.I.D Demos & examples Guidelines to get started
What is quality? Or, how do you measure it?“I don't care howgoodyouthinkyour design is. If I can't walk in and write a test foranarbitrarymethod of yours in fiveminutes, itsnot as good as youthinkit is, and whetheryouknowitornot, you'repaying a pricefor it.”Michael Feathers, ObjectMentor
How? Use coding guidelines Apply common design principles Test Driven Development Refactoring Use Design Patterns Pair Programming Socialize design & architecture
Test Driven Development Is a design process Tests are your first users Tests can be your documentation If TDD hurts then you're doing it wrong
S.O.L.I.D. Single ResponsiblityPrinciple Open ClosedPrinciple LiskovSubstitutionPrinciple Interface SeggregationPrinciple DependencyInversionPrinciple
Demo Attendee registration TDDSingle Reponsibility Principle Dependency Inversion Principle
What you have seen TDD Arrange-Act-Assert Red-Green-Refactor Mocking Intention revealing tests Single Responsibility Principle Dependency Inversion Principles
Phases of unit testing Refusing Getting too excited Testing everything! Integration testing Discover mocking Mocking everything Becoming effective
Example Types of attendees Open Closed Principle Dependency Inversion Principle
Naive Solution
Better Solution
Best Solution
What you have seen Open Closed Principle Single Responsibility Principle Dependency Inversion Principle Chain of Responsibility Pattern Factory Method Pattern
Example Billing Liskov Substitution Principle
Naive Solution
Better Solution new EmployeeBuilder().Build() ??
Best Solution
What you have seen Liskov Substition Principle Single Responsibility Principle
Example Event listening Interface seggregation
Naive Solution
Better Solution
Best Solution
What you have seen Interface Seggregation
Getting started guidelines Test should be Small and focused Intention revealing Repeatable Have no side-effects Independent Test what you know now (and assemble the rest from those pieces)
Getting started guidelines Mocking Don't mock chatty interfaces Don't have more than 2-3 mocks per test Only mock your nearest neigbors Keep your tail short Isolate the ugly stuff Conform to SOLID (and other principles)
Resources xUnit Patternshttp://xunitpatterns.com/ Applying Domain Driven Design and Design Patternshttp://www.amazon.com/Applying-Domain-Driven-Design-Patterns-Examples/dp/0321268202 Jeremy D. Millerhttp://codebetter.com/blogs/jeremy.miller/default.aspxhttp://msdn.microsoft.com/en-us/magazine/cc720886.aspx InfoQ Recommended TDD Tutorialshttp://www.infoq.com/news/2009/05/recommended-tdd-tutorials Los Techies S.O.L.I.D. Principles E-Bookhttp://www.lostechies.com/content/pablo_ebook.aspx C# 3.0 Coding Guidelineshttp://blog.avivasolutions.nl/archive/2009/03/06/new-coding-guidelines-for-c-3-0.aspx
Q&A Emaildennis.doomen@avivasolutions.nl Blogwww.dennisdoomen.net Twitterwww.twitter.com/dennisdoomen
TDD and S.O.L.I.D.; Two Ingredients For High Quality Software

More Related Content

What's hot

What's hot (19)

Website optimization through quality experimentation (2)
Website optimization through quality experimentation (2)Website optimization through quality experimentation (2)
Website optimization through quality experimentation (2)
 
Design Sprint - Dian Sigit Prastowo
Design Sprint - Dian Sigit PrastowoDesign Sprint - Dian Sigit Prastowo
Design Sprint - Dian Sigit Prastowo
 
The Design Process
The Design Process The Design Process
The Design Process
 
A letter to my past self (a career perspective) :: Sinf FEUP 2020
A letter to my past self (a career perspective) :: Sinf FEUP 2020A letter to my past self (a career perspective) :: Sinf FEUP 2020
A letter to my past self (a career perspective) :: Sinf FEUP 2020
 
Understanding Engineering Challenges without a Tech Background
 Understanding Engineering Challenges without a Tech Background Understanding Engineering Challenges without a Tech Background
Understanding Engineering Challenges without a Tech Background
 
Pair programming 2 > 1 + 1
Pair programming  2 > 1 + 1Pair programming  2 > 1 + 1
Pair programming 2 > 1 + 1
 
Transforming lives-with-teaching
Transforming lives-with-teachingTransforming lives-with-teaching
Transforming lives-with-teaching
 
Developer Recruiting – Best Practices from WeAreDevelopers
Developer Recruiting – Best Practices from WeAreDevelopersDeveloper Recruiting – Best Practices from WeAreDevelopers
Developer Recruiting – Best Practices from WeAreDevelopers
 
Rapid Elearning - The Real Story
Rapid Elearning - The Real StoryRapid Elearning - The Real Story
Rapid Elearning - The Real Story
 
Design Sprint Workshop @UMN SKYSTAR VENTURE
Design Sprint Workshop @UMN SKYSTAR VENTUREDesign Sprint Workshop @UMN SKYSTAR VENTURE
Design Sprint Workshop @UMN SKYSTAR VENTURE
 
DWS15 - Game Summit - Three Gates - Don Geyer
DWS15 - Game Summit - Three Gates - Don GeyerDWS15 - Game Summit - Three Gates - Don Geyer
DWS15 - Game Summit - Three Gates - Don Geyer
 
How do you know your Solution will make an Impact? - Björn Brynjar Jonsson
How do you know your Solution will make an Impact? - Björn Brynjar JonssonHow do you know your Solution will make an Impact? - Björn Brynjar Jonsson
How do you know your Solution will make an Impact? - Björn Brynjar Jonsson
 
Product Managers: How To Get Your Developers To Love You
Product Managers: How To Get Your Developers To Love YouProduct Managers: How To Get Your Developers To Love You
Product Managers: How To Get Your Developers To Love You
 
Create foolproof research plans with risk vs. effort mapping
Create foolproof research plans with risk vs. effort mappingCreate foolproof research plans with risk vs. effort mapping
Create foolproof research plans with risk vs. effort mapping
 
What Are the Road Mapping Essentials by former Capital One PM
What Are the Road Mapping Essentials by former Capital One PMWhat Are the Road Mapping Essentials by former Capital One PM
What Are the Road Mapping Essentials by former Capital One PM
 
Agile is still dead :: Portugal - Brasil 2020 (Café com Rey)
Agile is still dead :: Portugal - Brasil 2020 (Café com Rey)Agile is still dead :: Portugal - Brasil 2020 (Café com Rey)
Agile is still dead :: Portugal - Brasil 2020 (Café com Rey)
 
How Agile Are You Really?
How Agile Are You Really?How Agile Are You Really?
How Agile Are You Really?
 
Staying research led with almost no resources (UXcamp 2019)
Staying research led with almost no resources (UXcamp 2019)Staying research led with almost no resources (UXcamp 2019)
Staying research led with almost no resources (UXcamp 2019)
 
Pragmatic guide to AB testing - Agile and Automation days 2019
Pragmatic guide to AB testing - Agile and Automation days 2019Pragmatic guide to AB testing - Agile and Automation days 2019
Pragmatic guide to AB testing - Agile and Automation days 2019
 

Similar to TDD and S.O.L.I.D.; Two Ingredients For High Quality Software

The ten commandments of TDD
The ten commandments of TDDThe ten commandments of TDD
The ten commandments of TDD
Hernan Wilkinson
 
pre-assess-report-2257253
pre-assess-report-2257253pre-assess-report-2257253
pre-assess-report-2257253
Ayushi Sinha
 

Similar to TDD and S.O.L.I.D.; Two Ingredients For High Quality Software (20)

The ten commandments of TDD
The ten commandments of TDDThe ten commandments of TDD
The ten commandments of TDD
 
ЯНА КАНІБОЛОЦЬКА «You are Software Tester. What’s next?» Online QADay 2023
ЯНА КАНІБОЛОЦЬКА «You are Software Tester. What’s next?»  Online QADay 2023ЯНА КАНІБОЛОЦЬКА «You are Software Tester. What’s next?»  Online QADay 2023
ЯНА КАНІБОЛОЦЬКА «You are Software Tester. What’s next?» Online QADay 2023
 
Pairing w developers_stpconpics
Pairing w developers_stpconpicsPairing w developers_stpconpics
Pairing w developers_stpconpics
 
My Laws of Test Driven Development (2023)
My Laws of Test Driven Development (2023)My Laws of Test Driven Development (2023)
My Laws of Test Driven Development (2023)
 
Introduction to Test Driven Development
Introduction to Test Driven DevelopmentIntroduction to Test Driven Development
Introduction to Test Driven Development
 
Situational leadership Workshop at Agile2010 Conference
Situational leadership Workshop at Agile2010 ConferenceSituational leadership Workshop at Agile2010 Conference
Situational leadership Workshop at Agile2010 Conference
 
How to Build your Career.pptx
How to Build your Career.pptxHow to Build your Career.pptx
How to Build your Career.pptx
 
Qa mock up interview for manual testing
Qa mock up interview for manual testingQa mock up interview for manual testing
Qa mock up interview for manual testing
 
TDD in Agile
TDD in AgileTDD in Agile
TDD in Agile
 
Agile Team Performance Appraisal
Agile Team Performance AppraisalAgile Team Performance Appraisal
Agile Team Performance Appraisal
 
Software as a Service
Software as a ServiceSoftware as a Service
Software as a Service
 
Case studies of Test Driven Development
Case studies of Test Driven DevelopmentCase studies of Test Driven Development
Case studies of Test Driven Development
 
How I Hire Developers
How I Hire DevelopersHow I Hire Developers
How I Hire Developers
 
Team health check new
Team health check newTeam health check new
Team health check new
 
Pavel Kamyshov —​ "Team Health Check: refined edition".
Pavel Kamyshov —​ "Team Health Check: refined edition".Pavel Kamyshov —​ "Team Health Check: refined edition".
Pavel Kamyshov —​ "Team Health Check: refined edition".
 
Agile Testing Agile Ottawa April 2015
Agile Testing   Agile Ottawa April 2015Agile Testing   Agile Ottawa April 2015
Agile Testing Agile Ottawa April 2015
 
A Test Manifesto 2014.03.26
A Test Manifesto 2014.03.26A Test Manifesto 2014.03.26
A Test Manifesto 2014.03.26
 
pre-assess-report-2257253
pre-assess-report-2257253pre-assess-report-2257253
pre-assess-report-2257253
 
Павло Камишов “Health check model: refined edition” Lviv Project Management Day
Павло Камишов “Health check model: refined edition” Lviv Project Management DayПавло Камишов “Health check model: refined edition” Lviv Project Management Day
Павло Камишов “Health check model: refined edition” Lviv Project Management Day
 
Software Test Engineering - A guide to becoming successful tester
Software Test Engineering - A guide to becoming successful testerSoftware Test Engineering - A guide to becoming successful tester
Software Test Engineering - A guide to becoming successful tester
 

More from Dennis Doomen

Getting a grip on your code dependencies (2023-10)
Getting a grip on your code dependencies (2023-10)Getting a grip on your code dependencies (2023-10)
Getting a grip on your code dependencies (2023-10)
Dennis Doomen
 
Tools and practices to help you deal with legacy code
Tools and practices to help you deal with legacy codeTools and practices to help you deal with legacy code
Tools and practices to help you deal with legacy code
Dennis Doomen
 

More from Dennis Doomen (20)

Getting a grip on your code dependencies (2023-10)
Getting a grip on your code dependencies (2023-10)Getting a grip on your code dependencies (2023-10)
Getting a grip on your code dependencies (2023-10)
 
Tools and practices to help you deal with legacy code
Tools and practices to help you deal with legacy codeTools and practices to help you deal with legacy code
Tools and practices to help you deal with legacy code
 
What you can learn from an open-source project with 250 million downloads
What you can learn from an open-source project with 250 million downloadsWhat you can learn from an open-source project with 250 million downloads
What you can learn from an open-source project with 250 million downloads
 
Getting a grip on your code dependencies
Getting a grip on your code dependenciesGetting a grip on your code dependencies
Getting a grip on your code dependencies
 
Design patterns for Event Sourcing in .NET
Design patterns for Event Sourcing in .NETDesign patterns for Event Sourcing in .NET
Design patterns for Event Sourcing in .NET
 
Automate Infrastructure with Pulumi and C#
Automate Infrastructure with Pulumi and C#Automate Infrastructure with Pulumi and C#
Automate Infrastructure with Pulumi and C#
 
What is the right unit in unit testing (UpdateConf 2022)
What is the right unit in unit testing (UpdateConf 2022)What is the right unit in unit testing (UpdateConf 2022)
What is the right unit in unit testing (UpdateConf 2022)
 
Slow Event Sourcing (re)projections - Just make them faster!
Slow Event Sourcing (re)projections - Just make them faster!Slow Event Sourcing (re)projections - Just make them faster!
Slow Event Sourcing (re)projections - Just make them faster!
 
50 things software teams should not do.pptx
50 things software teams should not do.pptx50 things software teams should not do.pptx
50 things software teams should not do.pptx
 
What is the right "unit" in unit testing and why it is not a class?
What is the right "unit" in unit testing and why it is not a class?What is the right "unit" in unit testing and why it is not a class?
What is the right "unit" in unit testing and why it is not a class?
 
A lab around the principles and practices for writing maintainable code
A lab around the principles and practices for writing maintainable codeA lab around the principles and practices for writing maintainable code
A lab around the principles and practices for writing maintainable code
 
How to Practice TDD Without Shooting Yourself in the Foot
How to Practice TDD Without Shooting Yourself in the FootHow to Practice TDD Without Shooting Yourself in the Foot
How to Practice TDD Without Shooting Yourself in the Foot
 
Decomposing the Monolith using modern-day .NET and a touch of microservices
Decomposing the Monolith using modern-day .NET and a touch of microservicesDecomposing the Monolith using modern-day .NET and a touch of microservices
Decomposing the Monolith using modern-day .NET and a touch of microservices
 
Event Sourcing from the Trenches (DDD Europe 2020)
Event Sourcing from the Trenches (DDD Europe 2020)Event Sourcing from the Trenches (DDD Europe 2020)
Event Sourcing from the Trenches (DDD Europe 2020)
 
Practical introduction to DDD, CQRS and Event Sourcing
Practical introduction to DDD, CQRS and Event SourcingPractical introduction to DDD, CQRS and Event Sourcing
Practical introduction to DDD, CQRS and Event Sourcing
 
How to practice TDD without shooting yourself in the foot
How to practice TDD without shooting yourself in the footHow to practice TDD without shooting yourself in the foot
How to practice TDD without shooting yourself in the foot
 
Decomposing the Monolith (Riga Dev Days 2019)
Decomposing the Monolith (Riga Dev Days 2019)Decomposing the Monolith (Riga Dev Days 2019)
Decomposing the Monolith (Riga Dev Days 2019)
 
A lab around the principles and practices for writing maintainable code (2019)
A lab around the principles and practices for writing maintainable code (2019)A lab around the principles and practices for writing maintainable code (2019)
A lab around the principles and practices for writing maintainable code (2019)
 
Lessons learned from two decades of professional software development
Lessons learned from two decades of professional software developmentLessons learned from two decades of professional software development
Lessons learned from two decades of professional software development
 
The Good, The Bad and The Ugly of Event Sourcing
The Good, The Bad and The Ugly of Event Sourcing The Good, The Bad and The Ugly of Event Sourcing
The Good, The Bad and The Ugly of Event Sourcing
 

Recently uploaded

Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Safe Software
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
panagenda
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
WSO2
 

Recently uploaded (20)

AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
Navi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Navi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot ModelNavi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Navi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot Model
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : Uncertainty
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdf
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
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...
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
 
Ransomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdfRansomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdf
 
FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024
 
AXA XL - Insurer Innovation Award Americas 2024
AXA XL - Insurer Innovation Award Americas 2024AXA XL - Insurer Innovation Award Americas 2024
AXA XL - Insurer Innovation Award Americas 2024
 
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWEREMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
 
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
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
 

TDD and S.O.L.I.D.; Two Ingredients For High Quality Software

  • 1. TDD & S.O.L.I.D.Two ingredients for high-quality software Dennis Doomen dennis.doomen@avivasolutions.nl
  • 2. About Me Principal Consultant at Aviva Solutions 35 years 6-month daughter 12 years of experience C++ origins On .NET since 2001
  • 3. Agenda About quality Test Driven Development & S.O.L.I.D Demos & examples Guidelines to get started
  • 4. What is quality? Or, how do you measure it?“I don't care howgoodyouthinkyour design is. If I can't walk in and write a test foranarbitrarymethod of yours in fiveminutes, itsnot as good as youthinkit is, and whetheryouknowitornot, you'repaying a pricefor it.”Michael Feathers, ObjectMentor
  • 5. How? Use coding guidelines Apply common design principles Test Driven Development Refactoring Use Design Patterns Pair Programming Socialize design & architecture
  • 6. Test Driven Development Is a design process Tests are your first users Tests can be your documentation If TDD hurts then you're doing it wrong
  • 7. S.O.L.I.D. Single ResponsiblityPrinciple Open ClosedPrinciple LiskovSubstitutionPrinciple Interface SeggregationPrinciple DependencyInversionPrinciple
  • 8. Demo Attendee registration TDDSingle Reponsibility Principle Dependency Inversion Principle
  • 9. What you have seen TDD Arrange-Act-Assert Red-Green-Refactor Mocking Intention revealing tests Single Responsibility Principle Dependency Inversion Principles
  • 10. Phases of unit testing Refusing Getting too excited Testing everything! Integration testing Discover mocking Mocking everything Becoming effective
  • 11. Example Types of attendees Open Closed Principle Dependency Inversion Principle
  • 15. What you have seen Open Closed Principle Single Responsibility Principle Dependency Inversion Principle Chain of Responsibility Pattern Factory Method Pattern
  • 16. Example Billing Liskov Substitution Principle
  • 18. Better Solution new EmployeeBuilder().Build() ??
  • 20. What you have seen Liskov Substition Principle Single Responsibility Principle
  • 21. Example Event listening Interface seggregation
  • 25. What you have seen Interface Seggregation
  • 26. Getting started guidelines Test should be Small and focused Intention revealing Repeatable Have no side-effects Independent Test what you know now (and assemble the rest from those pieces)
  • 27. Getting started guidelines Mocking Don't mock chatty interfaces Don't have more than 2-3 mocks per test Only mock your nearest neigbors Keep your tail short Isolate the ugly stuff Conform to SOLID (and other principles)
  • 28. Resources xUnit Patternshttp://xunitpatterns.com/ Applying Domain Driven Design and Design Patternshttp://www.amazon.com/Applying-Domain-Driven-Design-Patterns-Examples/dp/0321268202 Jeremy D. Millerhttp://codebetter.com/blogs/jeremy.miller/default.aspxhttp://msdn.microsoft.com/en-us/magazine/cc720886.aspx InfoQ Recommended TDD Tutorialshttp://www.infoq.com/news/2009/05/recommended-tdd-tutorials Los Techies S.O.L.I.D. Principles E-Bookhttp://www.lostechies.com/content/pablo_ebook.aspx C# 3.0 Coding Guidelineshttp://blog.avivasolutions.nl/archive/2009/03/06/new-coding-guidelines-for-c-3-0.aspx

Editor's Notes

  1. PROVIDE YOU SESSION CODE AND NAME AS IT WAS DEFINED BY AGENDA OWNERS.WELCOME ATTENDEES. INTRODUCE YOURSELF AND YOUR SESSION.
  2. PROVIDE 5 MIN BEFORE SESSION ENDS FOR Q&A.