Deliver the Bare Minimum
2024-12-22
Iâm a minimalist at heart, so keeping things as simple as possible tends to be my thing. I love tinkering with an idea or product feature while trying to reduce my reliance on dependencies or purposely constraining personally set limits (maybe this is bandwidth, resource usage, etc.). I almost prefer ugly âhacksâ in favour of something slightly less performant, just to win the tiniest of savings. Itâs silly, but my brain wonât let me escape it. This doesnât mean itâs always the âcorrectâ way to approach both design and development, but itâs what works best for me.
An issue I tend to see in my travels through the world of software engineering is over-engineering. Shocking, I know. Iâm not the first developer to point this out, nor will I be the last. Even still, I believe it deserves being repeated as often as possible. An unoriginal mantra of mine is:
Keep things as simple as you reasonably can.
Notice the word: âreasonablyâ. This is important because simplifying any software task shouldnât be taken as a blanket statement. Sometimes your hands are tied. Thatâs fine.
But in most situations you should only deliver the bare minimum.
Hypothetical Examples
Everyone loves hypothetical thought experiments, right? So hereâs one:
Jim is an engineer and works for âTHE COMPANYâ. A client has requested a JSON file that contains all recent, Canadian buyers of their âPRODUCT ABCâ. Jim can handle this task no problem, but thinks it is a little short-sighted. Jim thinks to himself, âWhat if they want to check buyers from the US? What if they want a shorter or longer time frame?â. So, Jim starts to build a richer experience for the user. He creates a private front-end UI, that gives the client the ability to select country, time-frame, along with buying / selling options, which can then be exported as JSON directly from the browser. It looks great and works flawlessly. Well done, Jim!
In the above example, Jim didnât do anything horrible per se, but he certainly wasted both his own time and the clientâs. Even if the client is âwowedâ by this front-end, Jim has actually created more problems for himself. He now has to maintain that front-end. The client might even expect or request additional functionality to that new UI. Jim also could have been handling other prioritized tasks, reviewing code or helping teammates with that reduced bandwidth. Jim should have simply exported the requested JSON data and handed it over.
This whole concept might sound incredibly trivial, but you have no idea how often something like this occurs in software development. Maybe devs are just trying to impress their superiors and coworkers or maybe theyâre just trying to stimulate themselves. Whatever the reason, 99% of the time I would say it is a bad decision.
Itâs back to that mantra: Keep things as simple as you reasonably can.
Happy Accidents
I think the legendary Bob Ross said it best:
Just remember that you can always add more, but you canât take it away.
He was talking about layering colors while painting, which in certainly more permanent than most software, but it still works wonderfully to guide us as developers. Tackle each task as you go, donât increase your own overhead unless it is agreed upon by all parties involved. Impress those around you by keeping things at their bare minimum.

âThe least little bit can do so much.â