Close-up of white cherry blossoms against a soft blue sky.

Test-Driven Development (TDD)

Workshops, training and coaching.

Creating sustainable software is hard!

At factor10, we love delivering high-quality software. But we also love helping others improve their ability to deliver software value. Many software organizations struggle with diminishing returns on their work in development. As the software grows – so does the complexity. Maintainability and scalability decrease over time as lead times and defect density increase.

There is never enough time to do it right, but there is always enough time to do it over.

John W. Bergman

TDD to the rescue!

Test-Driven Development (TDD) is a development approach where you write tests before the implementation. This way, the code must be designed to pass the tests before writing the implementation. By consistently letting the code test itself, you can move faster, collaborate better and focus more on maximizing value and less on the fear of breaking something.

Here are some of the benefits:

  • Improved code quality: developers identify errors early in the development process and get immediate feedback on the quality of their code.
  • Reduced costs: reduce the costs associated with fixing defects late in development.
  • Increased confidence: by knowing that their code is tested, developers can trust that it will work as intended and not cause unexpected problems.
  • Increased speed: TDD acts as a guardrail to prevent failure, allowing for a higher rate of development and more value faster for the business.
  • Shorter learning curve: The tests guide new developers to the codebase and helps avoid beginner mistakes. Onboarding is quicker!

A few objections to TDD and how we answer:

  • Tests are important, but TDD is too strict! – The consistency in TDD makes the difference. If tests are optional, there is a tendency not to write them where they are needed the most.
  • How am I supposed to know what to test if I don't know what to code? – You're not! You can experiment and play around to figure out how to solve your problem. But when you move from prototyping to writing the actual production code, you write the tests first.
  • Testing is difficult! - It is! Just as programming is difficult. No one is a guru right away. By consistently writing tests, you get better, and the quality of your architecture improves simultaneously.
  • I work in a legacy code base which is impossible to write automated tests for! - We believe that there is no such thing as untestable code. In fact, if you deem the code as important you should put in the effort to protect yourself from bugs in it.

How we can help!

factor10 has been applying TDD consistently since the start in 2007. We can help your development team to reach these benefits! We have three suggestions:

 

TDD inspiration

Not sure yet, that TDD is for you? Invite us for an hour. We will show the essential workings of TDD, provide examples and answer questions.

TDD workshop

Start your journey with a workshop. During one half or full day, we will take your team through TDD theory, tips, tricks and pitfalls to avoid and practical exercises individually and in an ensemble format (programming together in a group). This is both a great educational opportunity and a fun social activity!

TDD coaching

A workshop is a great starting point, but getting the hang of TDD requires continuous work. We love seeing teams and individual developers grow and improve and are happy to provide continuous TDD coaching and hands-on advisory.

When I visited JFokus, I first attended a TDD workshop run by Raniz. Besides being a brilliant workshop, one part caught me as it described something I've been trying to grasp for a long time: the essential part in writing a test!

Former workshop attendee

Let’s improve your code performance today!

Interested? Contact us now to set up a meeting about your future ability to deliver scalable, high-quality code that provides ever-increasing value to the business!

Daniel Raniz Raneland

Daniel Raniz Raneland

Consultant