On Building Abstractions Too Soon

About a year ago, I was working on a new feature for one of our projects at Bandwidth. It wasn’t just a new feature, it was the first of few a new features we were building for some of our internal users. We were all excited to be working on it, and ready to see what we would build.

The Trap.

I feel into the trap that I could solve tomorrow’s problems today. I think its something that happens to mid-level software engineers like myself (or at least I hope it does..). When you are a mid-level engineer, you’ve come a long way from writing the hacky code you did in school, but still haven’t mastered all the patterns like you would like — you just think you have. You’re a little too quick to pull the proverbial trigger and try climbing a mountain when we still need a guide.

Keep it Simple, Stupid. Especially When You Start.

We all know the KISS principle and we try to stick to it. Where things go wrong is we say “This will make things simpler down the road if build out the right components now”. And while that makes perfect sense in fantasyland where you can predict tomorrows problems, its practically dead wrong.

Your Code Will Change Anyway.

Even if you get those components dead right to start, you will still likely wind up changing it overtime. A name might become better; you might recognize a better pattern; you might even add or remove different components depending on other pieces of your codebase.

Give Up the “Won’t Get Time Later” Fear

This fear is what leads engineers into the trap in the first place. The worry that you will never have time to “fix it” after its first implemented because of competing business needs or other bugs.

Jesus follower | husband | IJM advocate | software engineer. I share tips and tools for building great software as a team.

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store