TDD is not software design
Nicholas Ocket
I turn developers into software design experts. Join the About Coding Dojo!
Hey everybody! The About Coding newsletter is back with a first edition of 2025.?
Last year, I was really busy creating and doing live training sessions. They were great, it was fun doing them. They also took a lot of effort and time to create. So I won’t be doing them anymore, at least not in that format. So I have more time to write now!?
In this first edition of 2025, I am going to talk about TDD and the many claims on LinkedIn that TDD is a design tool. But TDD has very little to do with general software design. People claiming that TDD will lead to a modular, flexible design or anything related to that are plain wrong.?
I have thought a lot about this edition and I have tried penning down my thoughts as clearly as possible. Let me know what you think. As usual, I am open to counter arguments. Just keep it polite and respectful.?
Enjoy!?
Transforming custom software development agencies into rockstars
1 个月Nicholas Ocket that's an interesting way of looking at TDD. I will go a step further though. I believe that TDD is a programming methodology and not a design one. In my understanding design is done on paper, before any line of code comes out of our keyboards. TDD is program-oriented in that it needs to know the inputs and outputs of each call, API, functional, etc, in order for tests to be designed. Therefore is moves into the middle space after design and before implementation. Thoughts?
Senior Software Devloper at Pixel Fusion
1 个月Interesting take! TDD is often seen as a design philosophy, but in reality, it's more about ensuring functionality rather than shaping the architecture. While it improves code reliability, it doesn’t necessarily drive software design decisions. Curious—how do you see teams balancing TDD with broader architectural concerns?
Not believing TDD helped software design was one of the main reasons I didn't embrace TDD quickly enough. It take me a long time of doubting myself before I was confident enough to trust good design would not just fall out of TDD, although both are very important. I wish I could have articulated it then as well as this article does.
Principal Engineer en ThoughtWorks
1 个月I have a different point of view here, and probably is because when I think about design I'm thinking not in something that happens from time to time but a continuous thing. In this case, design is based on small decisions that you can take and change only if things remain working as they were before. Following this idea, TDD is a design tool apart from a lot of others things. https://www.youtube.com/live/7aEIIonw_dQ?si=825nKw91V_g-9NvK
Junior DBA and Veteran Full-Stack Developer
1 个月Tell me that you don't have a clue about software design by telling me that TDD improves your design.