Interview With Phil Nash (Accelerated TDD: For More Productive C++) - CppCon 2024

Channel

Register Now for CppCon 2024: https://cppcon.org/registration/
Join Phil Nash and Kevin Carpenter from September 15th - 20th at CppCon 2024 Aurora, Colorado, to enjoy the many and varied inspirational talks!
---

Interview With Phil Nash (Accelerated TDD: For More Productive C++) - CppCon 2024

Kevin Carpenter from @cppevents interviews Phil Nash ahead of his two-day onsite training course "Accelerated TDD: For More Productive C++"

Course Description
We all know that writing tests for our code is “what we should do”, and maybe we’re even doing that already. But it feels like extra busy-work that slows us down – and they hardly ever catch any bugs anyway…

Maybe we’ve even tried TDD, and felt that it was just adding even more ceremony to the problem with no real advantages.

But the advantages are definitely there! We just need a good grounding in what TDD _actually_ is (and isn’t) and how to do it properly – especially in the context of C++, which brings its own idiosyncrasies and bottlenecks to the matter.

That’s what this workshop aims to be. Whether you’ve never written a test before, or you’ve had some mileage with TDD already, be prepared to ratchet up your productivity by thinking about things in new ways and gaining more approaches to breaking down problems in sustainable ways.

Prerequisites
- Be comfortable with the basics of C++. Being an expert is not required
- A laptop with a reasonably modern OS.
- A compiler capable of running C++11 (ideally gcc, clang or VC++) – don’t worry if it’s not what you use in your day job.
- A development environment you’re comfortable with.
- An open mind and motivation to find better ways of doing things.

Course Topics
We’ll cover the following topics, but not necessarily exactly in this order:

FIRST DAY

Why “Accelerated”?
Why test?

What is a test?
Type of test (unit, integration, system, regression, acceptance…)
Roles of a test
How testing makes us go faster

Why test first?
Coverage = Courage
Design pressures
Mental modes
Focus and flow
Never more than 5 mins from green

How to TDD
The TDD Cycle
The Art and Craft of TDD
Are we done yet?

Relevant Design Principles
Separation of Concerns
Single Responsibility
Cohesion
Low/ Loose Coupling
SOLID?

Growing Software, Guided By Tests
Putting it all together
Treat test code like production code
Negative paths
Avoiding brittle tests
Pruning tests
Dependent Tests
Tests as documentation

SECOND DAY

Decelerated TDD
Slowing down to speed up
Deliberate Practice

Pain points and Limitations
Slow running tests
Flakey Tests
Brittle tests revisited
Testing the implementation
Orthogonal concerns (e.g. logging, error handling)
Premature Generalisation
Beware a false sense of security
Getting legacy code under test
Getting team buy-in
The Transformation Priority Premise

Beyond TDD
BDD
ATDD
Property based Testing
Mutation Testing
Fuzz Testing
Treat test code like production code, except when you shouldn’t
Mocking
Risk Planes

Next Steps
Keeping the momentum going
Pairing
Forming habits

We’ll work through several demos and exercises together and will often work in pairs.

For further details visit https://cppcon.org/class-2024-accelerated-tdd/
---

Course Instructor - Phil Nash

Phil Nash is the original author of the C++ test framework, Catch2, and composable command line parser, Clara. As Developer Advocate at SonarSource he’s involved with SonarQube, SonarLint and SonarCloud, particularly in the context of C++. He’s also a member of the ISO C++ standards committee, organiser of C++ London and C++ on Sea, as well as co-host and producer of the Cpp.chat and No Diagnostic Required podcasts.

More generally Phil’s an advocate for good testing practices, TDD and using the type system and functional techniques to reduce complexity and increase correctness. He’s previously worked in Finance and Mobile and offers training and coaching in TDD for C++.
---

Videos Filmed & Edited by Bash Films: http://www.BashFilms.com
YouTube Channel Managed by Digital Medium Ltd: https://events.digital-medium.co.uk
---

Registration for CppCon: https://cppcon.org/registration/
100+ Sessions Over 5 Days! Pre and Post Con Workshops/Classes/Course and Much More!
Join Us Onsite!

#cppcon #cppprogramming #cpp #programmingcourse #cpp #computer #coding #cpplearning #code #software #softwaredevelopment #technicalcourses #cplusplusprogramming #cplusplus