The Simplest Possible Thing Principle

I mentor lots of young developers. It became a passion for me in the 1990s when I started teaching computer programming at a local college. I was not a good teacher for the first couple of years, admittedly. But I studied pedagogy and learned how to balance lecture and lab time to maximize the understanding of my students. More importantly, I learned how to prepare myself to help my students learn. Preparing yourself to teach often means boiling ideas down into simple, memorable principles. One of them is called the Simplest Possible Thing principle.

When you’re trying to master something new, doing the Simplest Possible Thing (SPT) to demonstrate it working is often the best way to learn. It’s so easy when you’re applying new concepts to get wrapped up in the mechanics and muck of the tools and frameworks you’re using. For example, trying to add a new database interface to an existing web site can be frustrating if the machinery of the web engine makes it hard to tell what’s going wrong with your initial tests. SPT reminds us that integrating the new framework into a big application might not the best way to really understand it.

SPT directs us to first create a small test application where we can integrate the database libraries without the cruft and ceremony of the larger web application. We can typically bake some clean, clear, consistent debug outputs into the test application in a matter of minutes. Very quickly, the Simplest Possible Thing shows how to do the integration into the larger application.

And SPT isn’t just for students. I create test applications so often that several times per year, I’ll go through my projects folder and delete hundreds of tiny test projects that begin with the phrase Kill_{some specific test name}_{date of creation}. I started using that naming pattern for my SPT tests many years ago because I had created hundreds of them that ended up cluttering up my projects folder. With this consistent naming pattern in place, I can quickly go back to find specific pre-integration test that I did recently. Embedding the date in the project name also helps me to know which ones I can clean up. If they’re more than a few months old, they’re probably safe to discard.

The next time you are coaching someone who seems to be struggling with integrating a new idea into a larger application, I hope you’ll instruct them to do the Simplest Possible Thing to prove or disprove that they’ve got it right. Oftentimes, I’m surprised by what SPT teaches me. And I’m a salty, old dog who loves to learn new tricks.


  1. Having over 30 years experience teaching programming and other courses, I fully endorse SPT approach. I see so many on-line tutorials using way too complex an example when teaching a new concept.

    Just focus on the new idea/concept!

Leave a comment

Your email address will not be published.