If you're going to be a humble programmer, you need to start with the assumption that every reported bug is your fault. This is a good principle, but what if it turns out the user did something stupid? What if it really is a third-party library that is buggy, not your code?
Over the past couple years, I've become increasingly interested in two specific approaches to improving the reliability and maintainability of the programs I work on: domain-driven design and typed functional programming. I've also been convinced that the two of them work really well together.
So, you’ve decided to start unit testing your code but don’t know where to start or what are the best practices around that. In this series I’m planning in walking you through in unit testing land, starting with the basic principles and finishing up with advanced techniques that you might did not know up until now. Buckle up and let’s get going!