• Skip to primary navigation
  • Skip to main content

Test-first

Master the art of Test-driven Development (TDD)

  • Home
  • Newsletter
  • Blog

Blog

Catch up on topics around Test-driven Development (TDD), Refactoring, and Clean Code and become a faster and better developer.


Two poop emojis

Asking for permission to write tests is like asking for permission to go to the toilet 💩

This article explores another software engineering anti-pattern: Asking managers for permission to write tests.

Continue Reading Asking for permission to write tests is like asking for permission to go to the toilet 💩

Test Anti-pattern: Adding more than 3 expectations to a test case

Fixing tests with more than 3 expectations

Let’s have a look at a poor example of tests with more than 3 expectations per test case, and let’s refactor them into good ones.

Continue Reading Fixing tests with more than 3 expectations

Test Anti-pattern: Not using the best available matcher

Test Anti-pattern: Not using the best available matcher

Here’s another common test anti-pattern that makes working with tests harder than it needs to be: Not using the best available matcher

Continue Reading Test Anti-pattern: Not using the best available matcher

Get David’s best advice on TDD straight to your inbox

Tap into a senior software developer’s brain with 25 years of industry-relevant experience that successfully uses Test-driven Development daily.

I’ll send you a few emails per month to keep you posted. Of course, you can opt out at any time.
By subscribing, you accept my privacy policy. I promise I won’t spam you or sell your data.


Breaking Chocolate with TDD

Breaking Chocolate with TDD

In the first episode of my new Youtube channel, I want to show you how to solve a Codewars problem using a Test-driven development (TDD).

Continue Reading Breaking Chocolate with TDD

Test Anti-pattern: Copy-pasting real data as test data

Test Anti-pattern: Copy-pasting real data as test data

Over the year, I’ve observed developers applying dozens of anti-patterns to testing. For instance: Copy-pasting real data as test data

Continue Reading Test Anti-pattern: Copy-pasting real data as test data

Test Anti-pattern: Adding more than 3 expectations to a test case

Test Anti-pattern: Adding more than 3 expectations to a test case

Here is one of the dozens of testing anti-patterns I identified over the years: Adding more than 3 expectations to a test case.

Continue Reading Test Anti-pattern: Adding more than 3 expectations to a test case

Conway's Game of Life

Global Day of Coderetreat

The code retreat is a great opportunity to practice Pair Programming and Test-first Programming (a.k.a. Test-driven Development or TDD).

Continue Reading Global Day of Coderetreat

A horizontal list of students with lowered badges displaying the grade of each student.

Too DRY – When Don’t Repeat Yourself goes wrong

Applying the Don’t Repeat Yourself (DRY) principle can go wrong. Let’s explore the issue on a real-life example – positioning UI components.

Continue Reading Too DRY – When Don’t Repeat Yourself goes wrong

Students App showing no students

useEffect – How to test React Effect Hooks

Learn how to test a useEffect hook, how to handle infinite rendering loops, how to deal with a not wrapped in act(..) warning, and much more.

Continue Reading useEffect – How to test React Effect Hooks

Hob Hunt Funnel Example 1

How to find a developer job – like a computer scientist

A data-driven approach on how to find a developer job. Use the Job Hunt Funnel and Job Hunt Algorithm to identify what to focus on next.

Continue Reading How to find a developer job – like a computer scientist

Screenshot of Light component in Storybook after removing the light status text

How to build UI components like a Pro [Part 2]

In the 2nd part of this article series we will use a Storybook to style a component and make it look good.

Continue Reading How to build UI components like a Pro [Part 2]

Screenshot of Light Switch component

How to build UI components like a Pro [Part 1]

Learn how to use Automated Tests, the Accessibility API, and a Storybook to build and style a component without having to start the app.

Continue Reading How to build UI components like a Pro [Part 1]

Acceptance Test

Unit vs. Integration vs. Acceptance Test

What is actually the difference between Unit Tests, Integration Tests, and Acceptance Tests? Let’s bring some clarification to the table.

Continue Reading Unit vs. Integration vs. Acceptance Test

Developer Shapes

The Story of the Invisible Junior Developer

What framework or technology to learn next? Today, I want to share 5 rules to guide you during your first years as junior developer.

Continue Reading The Story of the Invisible Junior Developer

Behind the scenes of filter, map & reduce

Today, I want to show you, how you can solve coding challenges faster, with more confidence, and with less code.

Continue Reading Behind the scenes of filter, map & reduce

Photo of a mechanical linter pulled over some cloth with a lot of lint

How linting can set you apart from the competition

Learn how to use linting to reduce the complexity of your code. Use this, for instance, to impress hiring managers.

Continue Reading How linting can set you apart from the competition

Get David’s best advice on TDD straight to your inbox

Tap into a senior software developer’s brain with 25 years of industry-relevant experience that successfully uses Test-driven Development daily.

I’ll send you a few emails per month to keep you posted. Of course, you can opt out at any time.
By subscribing, you accept my privacy policy. I promise I won’t spam you or sell your data.

Connect

  • Email
  • LinkedIn
  • Phone
  • YouTube

Discover

www.cultivate.software

Legal

Imprint  ·  Privacy Policy  ·  Cookie Policy

Copyright © 2025 · cultivate GmbH