Photo by Glenn Carstens-Peters on Unsplash

Programming Minimalism

I'm fundamentally a minimalist at heart. This carries through in my programming, aka coding. What's the simplest way to develop this code? I aim for the minimum dependencies in every project. I investigate which modules, packages, and outside code bits I really need. Can I work with the native language core and standard libraries? For some languages, the set of "default" packages is robust.

As CTO, I constantly review what we're doing, how we're doing it, and why. It's very easy to slap together a bunch of microservices, SaaS products, and just include 50 modules into every program/app. This mentality stems from laziness, in my opinion. It results in a complex mess no one understands,  fails, and mis-performs in unexpected ways.  For every included package, what packages does it include? What problem does it solve for you? What complexity does it add to the flow?

Much in the same way Mark Twain once wrote to a friend,

“I apologize for such a long letter - I didn't have time to write a short one.”

Mark Twain

It's faster in the moment to just include a bunch of stuff, commit hundreds or thousands of lines of code, meet your metrics, and call it a day. Unfortunately, the cost bears to the system overall. The burn down chart sure looks great!  

Luckily, systems thinking can guide us. The atomic project may do well, but the overall system may suffer. A developer being 10-15% less efficient in the moment, may turn out to greatly improve the overall efficiency of the end to end system. In some cases by 50-60%. This kind of project thinking takes a special kind of company to execute. 

It's interesting working with systems which value reliability and longevity over all others. It's not about what's the latest trend in coding languages, styles, and in general computing. It's about planning for this system to run beyond a human lifetime. Say the system has to run until 02100, yet written and designed today. What choices would you make? This is the level of thought all code should take. Knowing you'll have to maintain the code for 30, 40, or 50 years, what choices do you make now? Even if you're just beginning, having this mindset will carry you far.

Long term thinking is where minimalist programming shines.