These are weird times. When the Angi RIF went down at the start of the year, I kind of felt a sense of relief. I loved the job, felt good about doing it a few more years, but suddenly I didn't have to worry about any of the things. It's the kind of break you only get between jobs. So for the first month, I pursued just the leads I had through my network. One showed promise, one was clearly not for me, and four others ghosted me.
One month in, I started applying to all of the things, and trying to find humans behind the things, with limited success. Things have changed dramatically in four years, since I last looked. I'm pretty convinced that humans are less involved than ever, which seems like a pretty horrible way to go about hiring. I use the robots for a lot of different things, and it's stunning how much they get wrong. I wouldn't leave hiring to them. Regardless, it's discouraging.
At the same time, I get excited about the potential of everything. It could be a self-defense mechanism, masking anxiety in optimism. It's around everything, like what I could do, how I can spend all of this spare time, how I can set us up for empty nesting, etc. After the requisite morning job seeking, I've been pouring energy into TogetherLoop, and I'm the happiest I've been coding since building MLocker.
But I find myself tentative toward joy. Some of that is parenting, which is hard lately (always?). And I catch myself feeling like I don't have the time to be not experience joy, which is about as midlife as it gets. It's wild that even in this stage of life, I'm still looking for the same things I did as a teenager or college kid. Where do I fit? How do I define my value? Am I having positive impact on the world? Sometimes I don't like the answers I come up with.
I need a vacation from this. Fortunately I paid for one late last year.
Since my colleagues and I got RIF'd about two months ago, I've been on a real tear working on TogetherLoop. I needed a project, and frankly the AI makes it a lot easier for a single human to crank stuff out. Since then, I've made about 200 commits and deployed about 60 times. It was pretty easy once I got all of that automation in place.
But while I have I think the most serious of bugs handled (which the AI sucks at, but that's another post), I need to just let it sit for awhile, and actually use it. That's tricky, because what I really need is other people to use it so there's something to interact with. And that's weird because the whole point of the app is not to drive engagement, just record what you want, read what you want, and get out.
I've been out in the world making posts to it, and it seems to work pretty well. I need to get the video figured out still, in a way that won't cost me a ton of money. That'd be less of an issue if a certain phone maker defaulted to the same standards that everyone else uses.
So the plan is to fix anything serious, but otherwise just use the thing. And look at my activity graph!
Well, after a week or two of bug fixing and tweaking, I think TogetherLoop is good enough to put it in front of people.
This is a weird thing to build, because it's value isn't tied to the quality of the code or design, it's tied to the volume of people who use it. More specifically, it's tied to the number of people in your circle of friends that use it. To that end, I don't think reaching people to try it is the challenge, it's getting them to invite others.
I'm still messing around with video. The trick is finding an economical way to transcode video without having to provision a bunch of infrastructure. I won't get into all of the technical reasons that it's challenging, but I'm being careful because right now I don't have to spend anything extra over what I'm already using. Well, that's not true. I'm paying for a CDN to load the app itself. I'm not certain that I'll keep that, because I'm not convinced it's really any faster.
It's fun to actually ship something new on my own. I've had all of these projects sitting around unfinished, and I self-loathe for all of the undoneness.
In between countless posts about AI that could be summarized as, "You're doing it wrong" (boring!), there are folks making genuine efforts to find the best way to work with the tools. And the truth is that you've seen this before.
On one end, there are people coming up with frameworks and tooling to give the AI what it needs to get their coding output right. These come in variations on specs, detailed requirements, and most importantly, outcomes. They try their best to account for edge cases, too. At the other end, you've got the vibe-coding, surrender to the robots and go for it crowd. They get something that kind of works pretty quickly, but requires a lot of iterating to get something production-ready.
You're probably already seeing where this is going. These are parallels to waterfall and agile methodologies. It's not a perfect comparison, but there are similarities. Also not surprising, the former lends itself to product leader thinking, while the latter is engineer biased. This arrangement should raise an eyebrow about what AI is, and what it's truly capable of. Let me get back to that.
In the pre-AI world, we navigated this world already. Waterfall never really delivered on the intended quality outcomes, and took too long. It was built on assumptions that didn't account for the way that users actually interacted with the software. Agile is a good idea that has been hopelessly corrupted by associating it with tools and artifacts, ignoring what the Agile Manifesto said, "Individuals and actions over processes and tools." For those of us who have enjoyed working with productive teams, we know that being iterative with the right amount of context is the sweet spot. Build as little as you can, challenge your assumptions, repeat, and you're at the right spot when the stakeholders are happy with the outcomes.
We're going through the same journey we did without AI, and applying it to the AI. We're so convinced of its human-like interaction that we just have to apply what we already know. Is this an accurate assessment? Again, remember that AI does not have judgment, creativity, and it annoyingly doesn't ask questions very often. But these two approaches do have similar outcomes, with the same pros and cons. The anthropomorphizing of the AI in this case seems to be appropriate.
It also shines a light on what I've been saying all along: AI-assisted coding is faster in the hands of an experienced software engineer, but the coding was never the hard or time consuming part of making software (just the most expensive part). It doesn't eliminate the need to decide what to build, and why, which is what you have undoubtedly spent many meetings discussing.
So save your anecdotes about the one guy who built a social network in a few weeks (that's me!), or the one that built a compiler surrounded by an enormous existing test suite. Those aren't typical. AI makes coding more fun and productive, sure, but that's the smallest part of the process.