Lately I’ve really been drawn to the idea of enforced constraints. This isn’t a new concept (to me or anyone else who writes software for a living) but I’ve found it to be especially relevant both in my work and personal life. You see constant posts about something-fatigue: framework fatigue, marvel fatique, etc. There’s too many choices, too many things to keep up with, too many things to store in our already overly packed brains.
It used to be easier
I recall having a much easier time doing things like picking which movie to watch as a child. I think a big reason why is because the closet that had the movies in it only had so many choices. If going to a Blockbuster was off the table and I didn’t have someone to borrow a movie from, I had what I had. That’s it. These days I have a veritable mountain of content I can stream and yet I constantly am plagued with indecision. All these choices and yet I’m no closer to actually taking action and making an actual decision.
With endless possibilities comes a propensity for maximalism where every decision should be the “best possible decision”. When you’re a busy person who only gets small pockets of free time, it can be tempting to focus on the “best” way to spend that time. Perfect really can be the enemy of good and I’ve found that out after debating what to watch for 30 minutes or more and then losing the window to watch anything at all.
Be free to choose constraints
When I’m trying to think of a side project to hack on, this maximalist tendency immediately shows up to sandbag any real progress. Think about all of those memes that show a person bike-shedding over which authentication provider to use for their app that has 0 active users.
Which framework should I try this time? I could use Remix, I could try Laravel, but wait what if I just used WordPress, etc.
This type of question is just a distraction if you’re trying to actually build something. If you’re wondering what to use to bulk something quickly and efficiently, the answer is almost always something you already know how to use. If you think about this up from this becomes a chosen constraint: it has to be something I already know. This automatically limits your choices and makes the decision simpler.
Lengthy decision making kills momentum
The more time you spend on making decisions about actions, the less time you spend taking any actual action at all. It’s misleading though, because you spend time thinking about something that should move the project forward. So you “spent time on it” but in reality, you didn’t actually do anything until you made the decision.
Sometimes you have to make a decision to realize it’s the right (or wrong one). So if you’re constantly stressing over making the right choice up front, you may find yourself spending time but going nowhere.
Don’t let perfect be the enemy of good. Gather enough information to make an informed bet and then spend a bit of time to see if it plays out like you think.
Be willing to change course
After you’ve taken action, think about the results you’re getting. If those results are not in line with your goals, you need to change what you’re doing accordingly. This is especially important if you’re the kind of person who loves to go heads down on complex problems (like me) and is determined to solve a tough problem. Sometimes you have to take a step back, take stock of the situation, and confirm the results you’re actually getting.
Once you’re able to make a reasonably good decision quickly, it’s much easier to pivot on your original plan or strategy. You can stay flexible while still making meaningful progress towards your goal: building the damn thing.