2023-09-12The best laid plans
Brandon Weaver posted a thread on Mastodon a couple of days ago stressing the importance of planning ahead in software projects, and I caught myself feeling kind of offended. I'm a super-duper senior developer who's been in charge of projects, teams, apps, a company, released open-source, and won awards, and I'm not great at planning ahead. That means I'm not one of those "most senior and skilled leaders" from Brandon's thread. Well, dang.
Let's start off where it matters: I don't think I'm entirely neurotypical. I'm actually writing this at my office, where I sit with a growling stomach because I left my lunch box at home, something I do with alarming regularity. I will set things down and, literally seconds later, have no idea where they are. I fidget and doodle during meetings, I get hit with late fees every month, I have a hundred half-finished projects laying around at home. You get the idea.
So if I want to, say, make completely sure my bag for tomorrow contains not only my lunch but also my charger and my workout gear, I have to spend a lot more time than the average person getting it together. To an outside observer I probably look ridiculous, scurrying up and down the stairs upon remembering that ah! the AirPods are nice to have while in meetings and oh! last time I forgot fresh socks, should probably pack those, and so on. You might think I could just slow down and think ahead for a bit but I assure you, my way is better. I could easily sit for fifteen minutes with pen and paper and furrowed brow trying to remember what to pack, visualizing my day and my backpack, only to realize while standing in the gym the next day that I don't have the goddamn idiot key for the goddamn idiot locker because that — for whatever brain reason — didn't occur to me yesterday, despite my best efforts.
What happens is that the marginal value of more planning decreases very, very quickly for me. Better to just throw everything I can remember off the top of my head into the backpack and then deal with the consequences the next day, because that's what's gonna happen anyway. That way I'll have saved myself fifteen minutes of brainstorming and running back and forth, and sometimes I'll even nail it on the first try.
How do you even have a job
Look, I'm known for executing really well. I'm your guy when you need someone with honed instincts, who can strike a good balance between speed, completeness, robustness, and performance. I'm also very creative, which helps with debugging and data modeling. I like to think I'm good at what I do, but I'm definitely in camp yee-haw when it comes to looking ahead and deciding what to do, and how to do it. In my experience it's better to have a nebulous outline of where you want to end up, agree which part to bite off first, and then start fucking chewing. The next step will be obvious, and then the next step will be obvious from there, and so on.
Note that I'm not saying you should do zero planning. It's important to lay your tools down every now and then, take stock, and consider what to do next. But I've never known anyone who's been successfully able to map a project further out than... probably a few weeks? People will try their damnedest to hit milestones and close tickets that they perceive as important to management, but I've been in too many situations where it feels like you're blindly following a map even when you know you took a bad left turn last month and the map's been all wrong since then.
I remember reading something that resonated with me a long while ago, from Ed Catmull, of Pixar fame. I had to dig for a while but I found it again:
If you seek to plot out all your moves before you make them — if you put your faith in slow, deliberative planning in the hopes it will spare you failure down the line — well, you’re deluding yourself. For one thing, it’s easier to plan derivative work — things that copy or repeat something already out there. So if your primary goal is to have a fully worked out, set-in-stone plan, you are only upping your chances of being unoriginal. Moreover, you cannot plan your way out of problems. While planning is very important, and we do a lot of it, there is only so much you can control in a creative environment. In general, I have found that people who pour their energy into thinking about an approach and insisting that it is too early to act are wrong just as often as people who dive in and work quickly. The overplanners just take longer to be wrong (and, when things inevitably go awry, are more crushed by the feeling that they have failed). There’s a corollary to this, as well: The more time you spend mapping out an approach, the more likely you are to get attached to it. The nonworking idea gets worn into your brain, like a rut in the mud. It can be difficult to get free of it and head in a different direction. Which, more often than not, is exactly what you must do.
Companies tend to value planning, reporting, and meticulous attention to detail in leaders. Those sorts of leaders produce numbers, and numbers are like catnip to companies. They can be plugged into Excel, unlike people. I don't think it's entirely wrong: considering many scenarios and getting thoughts in front of others in a cohesive and thoughtful way are both useful skills. But way too often, a day spent writing JIRA tickets and assigning points is a day wasted. Or maybe that's just my vanity talking and I'd be better off driving trucks for a living instead.