Embracing change part 2: Avoid over-engineering

Dave Farley just put out a great video titled “Your Overengineering May Be A Problem.”

It may not play out the way you think it will from the title.

He talks about the all-too-familiar triangle that management likes to use. Fast, cheap, or quality: pick two.

The best research in our industry is revealing that you absolutely can have all three. In fact, if you start dropping any one of them, you start losing the other two as well.

Example, if your quality goes down, you’re probably going to spend a lot of time fighting fires and doing rework. Which means that it’ll also cost more to get your feature work done. You lose all three.

Build enough to solve your current problem, yes, but don’t salt the earth in the process. Don’t mistake following basic design principles like managing your coupling for over-engineering. Those things are just smart cricket.

I love the way Farley puts it: you’ve over-engineered when you’ve built hypothetical features and platforms that no one has asked for.

Building your system in a way that it can be changed in no way violates the You Ain’t Gonna Need It principle because you know you’re going to need to change things.

Unless you time-travelled from the future, of course.


Like this message? I send out a short email each day to help software development leaders build organizations the deliver value. Join us!


Get the book!

Ready to learn how to build an autonomous, event-sourced microservices-based system? Practical Microservices is the hands-on guidance you've been looking for.

Roll up your sleeves and get ready to build Video Tutorials, the next-gen web-based learning platform. You'll build it as a collection of loosely-coupled autonomous services, developing a message store interface along the way.

When you're done, you'll be ready to contribute to microservices-based projects.

In ebook or in print.