Products and Customer Need

Disclaimer: This is a timeboxed stream of consciousness rather than a polished piece of writing. How I express some of the ideas could likely use some work. Also, as always I will inspect and adapt my position on these ideas (maybe even over the course of the article), so please give me any relevant feedback.

This idea triggered from a podcast featuring Seth Godin*. One concept he put forward was a marketing “revolution”. The example goes, no one wants a quarter inch drill bit, they want a quarter inch hole. The idea is you shift from marketing your product to marketing how you fulfill a customers need. He added to this by tracing further up. They don’t want a hole, they want a way to insert a toggle to mount a shelf. They don’t want that they want… and keep going up until you hit something like the feeling of happiness from x. Fundamental feelings of safety, joy, love… these are what people are really seeking in their lives.

Continue reading “Products and Customer Need”

8 Patterns for TDD

I’ve been doing Test Driven Development for nearly 10 years and I’ve spent most of that time doing TDD with C++. There’s a bunch of things I learned early on that I still use heavily today. And some patterns I’ve come to value over time. I’m using C++ examples but I’ve applied the same thinking in Python, PHP, Javascript and Lua.

I will also include some warning smells along the way. Things that will give hint your design is not testable.

1. Dependency Injection

This is one of the first things you’ll learn in doing TDD. It doesn’t matter if you’re doing London Style or Chicago Style you will eventually hit cases where you need to swap out the real item. It may be because that real object would touch the file system, a database or a network. Or it may be because it forms a convenient seam between your code and something more complex.

Smell: Singletons and classes that new their dependencies.

Continue reading “8 Patterns for TDD”