Looking back, most of my professional work, both in programming and leadership, seems simple, even trivial. It’s important to remember, however, that a lot of it seemed dauntingly hard before I started the task at hand. I imagine most people can relate; in hindsight most problems seem trivial1.
In this post, I want to talk a bit about what I consider to be the hardest part: getting started. This is not a how-to guide, it is a collection of thoughts I had when taking a walk, so do not expect coming away from this any more enlightened than when you started out. At best, you will be inspired to get started on a project you’ve been looking at for a while, or reminded of a thing you learned a while ago but sometimes forget, just like I did.
Very recently while on a walk, I listened to a podcast of my favorite Philosophy podcast Hermitix, specifically a conversation on dreams and Jung with Jakob Lusensky. In it, the host James de Llis reminded me of an important part of overcoming fear when he said “there is a thing in esotericism of 'banishment through laughter'”. Now, I’m not deeply versed in the esoteric tradition, but I immediately knew what he meant2.
I think a lot of my personal trouble getting started on a hard problem is in “finding the laughter”, so to speak. The demon needs to be banished by losing the respect you had for it, which is also why it’s so much easier to do anything the second time around.
You need to find the confidence to face the problem head-on, to find an in, and then to approach it. There is no one-size-fits-all solution, of course, but sometimes just going and sketching out ideas is enough to get you started.
Really, most programming problems—or, really, any hard problems in most spaces that I’ve personally encountered—just need you to sink your teeth into them for them to become somewhat tame. Sometimes it takes a while to find a starting point, but I always prefer action over thinking in the beginning. I cannot finish my meal by staring at it and wondering what it will taste like, after all.
Your first solution will probably be wrong. No matter how much you’ve thought about it beforehand, you will not design the perfect solution from the get-go. You will go back and clean up parts of it, or rip the whole thing out and do it again from scratch. The more married you are to your ideas before you start, the harder that part will be.
I’ve talked a bit about how it might be a hindrance to respect a problem too much now, but the opposite is also true. Most hard problems deserve respect, and the expectation should be that we will learn something new in the process.
Ironically, one of the things that makes both these learnings as well as just solving the problem easier is keeping an open mind. The idea of “Beginner’s Mind” is now a bit of a trope, but it is truly important to not assume that we should know already, or that we do know. If we did, whatever we’re doing wouldn’t be a problem, and it certainly wouldn’t be hard.
Realistically, keeping your mind open is a good default stance in any situation. Our ego might get in our way sometimes, but when we try something new, it really can mess things up by not allowing us to confront the reality that we are not good at it yet. Keeping that mindset while not being intimidated is the big balancing act.
I’ve had my fair share of hard problems to think about in the last few years, not least in my work on Glamorous Toolkit, but also in other projects that I’ve been spending time on in my work as a hired gun (that is why people hire me, after all), as well as in my personal life (two kids, and all the beautiful new experiences that they brought to my life) and even my hobbies (I’ve been picking up chess and keeping up with my physical practice, where I got certified as a Yoga teacher and placed squarely in the middle of the pack in a few streetlifting and powerlifting competitions).
I wouldn’t have it any other way. Doing hard things is fun, no matter if you do well or badly. It’s the most rewarding thing out there. All you have to do is to start.
1. Relatedly, an issue in one of my GitHub repositories recently reminded me of some old work I did. Having completely forgotten about that work I did 8 years ago I was in awe that I once understood the problem space and wrote code to solve it. It’s a reasonably simple mathematical thing, but it took me a bit to get back into, and I cannot recall it having taken any real effort the first time around. It was an afternoon project I embarked on one day, nothing more. Such are the lies of memory, as I am quite sure it wasn’t easier last time. Or maybe I was just worse at leaving breadcrumbs behind for my older self back then.
2. He also goes into the example that immediately comes to mind to those familiar with Stephen King’s work, when the kids in “It” banish it by confronting it and laughing at it.