Chasing Fulfillment
/ 8 min read
I’ve always needed something that puts me a little out of my depth. At one point it was my homelab: I started on a Raspberry Pi, then ended up running Proxmox on a mini PC, and went way deeper than I ever needed to. Then it was building a PC and learning Linux, then redoing my room, and for a while it was making a game a week. Every one of them went the same way. A few months of being completely obsessed, then one day it’s done, and I start looking around for the next thing.
Over the past couple of months, it happened with work. Work stopped being hard. I understood the codebase, the business, and what our users needed well enough that I usually knew how a change was going to go before I started it. That’s kind of the point of getting good at your job, and I don’t want this to come off like complaining, because this job took me from logistics coordinator to software engineer and I’m really grateful for that. But my routine had turned into clocking in, clocking out, going on a run, and watching shows until bed, and I recognized the feeling. I missed my first year on the job: being handed a massive codebase and slowly chipping away at it until it made sense, opening a file and knowing it was the start of a months-long rabbit hole. That’s always been when I feel the most fulfilled, and at some point I’d stopped feeling it.
It’s not like work never gave me that feeling after my first year, either. One of the best stretches I’ve had was building our new Shopify app. The hard part there was figuring out what merchants actually wanted: asking them questions and spending months getting beta feedback and tinkering with the app until it was polished. Projects like that don’t come around very often, though. Right now we’re mostly in maintenance mode, and maintenance is a lot more by the numbers. I’ve worked dispatch, support, and pretty much every other role at our company, so I usually already know what needs to get built and how it should work.
AI coding has made it worse too. Agents write most of the code I ship these days, and they’re good at it, so the struggle of actually writing the code is mostly gone. In university I’d spend 10 hours straight in my small dorm room grappling with a single lab. Now an agent could solve that same lab in a couple of minutes. I don’t want to stop using the tools, since they’re way too useful and they come up with stuff I never would’ve thought of. And I can’t just make another project like the Shopify app appear.
Work gave me that feeling in stretches, but I couldn’t expect it to keep doing that on a schedule. If I wanted to be out of my depth again, I’d have to go find it myself. The first place I looked was the code.
I’d noticed AI isn’t the greatest at software architecture. It’s good at getting things working, but the code it writes isn’t always easy to maintain, whether that’s by another agent later or by a person. I’d mostly been judging AI code by whether it did what it was supposed to and whether its answers to the questions I prodded it with made sense. I wanted to start caring about whether the code itself was excellent too. I knew what great code looked like, but I didn’t know how to articulate that to the agents. So I started reading books on software design and refreshing myself on what I had learned in uni. So far I’ve read The Pragmatic Programmer and A Philosophy of Software Design. A Philosophy of Software Design has a list of red flags that gave me names for things I’d only had a gut feeling about, like shallow modules and overexposure. The Pragmatic Programmer has the principle of ETC (Easier to Change), which gave me a simple test for whether code is good: how easy is it going to be to change later? Reading them was the first time in a while I felt like a beginner at my own job, and I loved it.
Once I had the words for what I wanted, I turned the books into skills, which are instruction files you can give an AI agent. A main agent comes up with a plan based on the principles from the books and sends it off to subagents to implement. Then it reviews what they did against those same principles and sends back feedback on anything they need to fix. I tried it out on a weekend project I built from scratch to play around with Electron and Capacitor. I didn’t review much of the code myself. The hard part had moved up a level: instead of writing good code, I was figuring out how to teach an agent what good code is. By the end of the weekend I wasn’t just excited about the app, I was excited about the repo too. It was clean, and I could actually go in and modify it myself. It felt like I’d learned something from the books and passed it down into the implementation. What I find funny is that AI was a big part of why I got bored, and part of the fix ended up being more AI.
The other thing I’ve been doing is a LeetCode problem a day, by hand with no AI. I can’t say I’ve noticed it making me better at my actual job yet, but that’s not really why I’m doing it. It reminds me of being back in that dorm room working on a lab, and it’s brought back the joy of learning I’d been missing.
The one that surprised me had nothing to do with code. I had to admit that I can be a bit of a hermit. I’m fine making plans to hang out, but I’m really bad at reaching out to people I haven’t seen in a while just to catch up. I can go a whole week working on side projects, running, and FaceTiming my girlfriend without really talking to anyone else. So I set myself a goal to reach out to one old LinkedIn contact a week and have a genuine conversation with them over the next couple of days. So far it’s mostly been old friends from work and school.
This habit has pushed me out of my comfort zone more than anything else on this list, and it brought back the same kind of excitement I’d been missing. That’s when it clicked for me. I’d been treating this whole thing like a work problem, but the homelab, the PC, and my room never had anything to do with work either. The feeling was never about code. It’s about being a little out of my depth, and work just happened to be where I’d been getting it for a while.
That made me look at the rest of my life differently too. My dream as a kid was always to be a writer, but I never had the confidence to put the reps in, and I don’t think I read enough to really know what good writing looked like. So I let go of that goal a loooong time ago. That one’s different from everything else here. I didn’t let it go because I got bored of it. I let it go because I didn’t think I was good enough to try, which makes it the most out-of-my-depth thing on this list. It’s not too late to bring it back though. I’ve started reading more, even if it’s mostly design books for now, and I want to put out a post here once a month about whatever’s been on my mind. Posts like this one are the reps. Even writing this and the movie/show reviews has given me a sense of fulfillment my old routine wasn’t giving me.
When I started this, I thought I needed more problems like my first year or the Shopify app. But that’s putting too much responsibility on the priorities at work, which are mostly out of my control. Work gave me that feeling for a long time, and it’ll probably give it to me again, just not on a schedule I get to pick. What’s made this month different isn’t whether the stuff I’m doing is at work or outside of it. It’s that I went and picked it instead of waiting for it to be handed to me.
If the homelab and the PC taught me anything, it’s that some of these habits will probably go stale too, and I’m okay with that. I don’t think I found the key to always being fulfilled. I think I just got better at noticing the itch and knowing where to look. I’ll check back in next month to see which of these are still working.