Welcome to Brian Webster's Blog

Indie development in the age of AI coding

 | #ai#indie-development#mac-development#powerphotos

I’ve been an independent Mac developer for going on twenty years now (yikes!). It’s got its downsides, such as having to do everything from programming to support to marketing to taxes, and not ever really being able to take extended time off. But you get to work on what you want to work on, you can sit around creating stuff all day, and the flexibility can’t be beat (also: pants optional). It’s a pretty sweet gig overall, and I’m lucky to have had the combination of coming onto the scene right at the beginning of the OS X era, when Apple was starting its big Steve Jobs led turnaround, and stumbling into a product category that apparently a lot of people need (photo management using PowerPhotos, and iPhoto Library Manager before that).

As you probably also have, I’ve been reading a lot about the various AI technologies that are being released at a breakneck pace the past few years. My initial reaction was pretty skeptical, since it’s clearly full into its hype cycle at the moment, and the previous hype cycle of crypto/blockchain/Web3/NFTs has pretty much proven to mostly be a way to run more elaborate scams. As time has gone along though, it’s undeniable that this LLM stuff has actual utility, even if it’s being thrown at everything under the sun by CEOs in hopes of being able to pay less money to their employees.

AI coding is one of the major applications of these LLMs, and unlike some of the sketchier applications, as these tools have matured, they do seem pretty capable of producing some useful stuff. On one end of the scale, we have people saying AI code is useless slop that you shouldn’t touch with a ten foot pole, and on the other hand we have people declaring that programmers are obsolete and there will be no more programming jobs in 5 years. These are both obvious hyperbole, but it did get me thinking a bit more about what it is I really do, and what it means to be an indie developer.

The basic question that came to me is: what exactly is the value I provide being an independent developer? What is it that differentiates what I do from working for a larger company as a programmer? There’s a lot to unpack there, but here are some of the major things that came to mind.

Opinionated development.

As an independent developer, I am the sole decision maker when it comes to what I want to make, and how it should function. If I want to add something to my product, or really don’t want to add something, I don’t have a design committee pressuring me to work on things I don’t think will be a good fit or wise idea to implement. This can be a double edged sword, since I don’t have anyone but my trusty rubber duck to bounce off of which to bounce ideas and can make some missteps as a result, but for the most part I find it leads to a more cohesive product when it’s all coming from a single person. I can also spend time to put extra spit and polish on my stuff if I want to.

Direct conversation with my customers.

Unlike in most companies, I directly handle most of the support for my product, emailing back and forth with customers who are having various problems. This can mean dealing with a specific bug or shortcoming in my software, but I find more often it comes in the form of having a more general problem they’re trying to solve. Seeing this first hand gives some very good ideas of what would make good additions to my software. This connection is very often lost in a large company, where getting customer feedback all the way to engineering involves a game of telephone through multiple departments and layers of management, resulting in the problems that are really bothering customers often never being well addressed.

Deep understanding of a specific problem space.

I’ve been writing photo management software on the Mac for a couple decades now, and unsurprisingly over that time, I’ve accumulated a lot of knowledge of the foibles of keeping your photos organized, especially using Apple iPhoto or Photos. As such, I’ve become uniquely positioned to come up with solutions for photo related problems that other developers might not be able to, at least not as robustly.

Solving problems, not just selling products.

Since this is how I make my living, I obviously do need to sell enough copies of my software to keep food on the table, but that’s not really what drives me. The more satisfying part is being able to help people solve real problems. I wouldn’t enjoy what I do nearly as much if I were just churning out apps trying to game my way into having people hit the “buy” button even if the app doesn’t really provide them with anything of value.

Encoding expertise

When I first graduated college, I worked for several years for Alsoft, a long time small Mac software development shop (founded in 1984) who are best known for their DiskWarrior disk repair utility. I remember one day having a conversation with the owner, who wrote a lot of the code for many of their products, especilaly in the early years. He told me something along the lines of this:

“I’ve been working with Apple file systems for years, and I’ve become an expert in how they work. My ultimate goal is to be able to repair anybody’s hard drive that I possibly can, but I can’t work on every single person’s drive myself. So, I try to code my expertise into DiskWarrior bit by bit, having it solve as many of the problems I see without me needing to do so personally. As I find new problems over the years, I try to add that functionality to DiskWarrior as well, so it can solve more problems using my expertise. If DiskWarrior can’t fix a particular drive, I still want to try to fix it myself, or at least learn from it so that hopefully one day I can make DiskWarrior fix that type of problem as well.”

This is something that’s stuck with me over the years, and is one of the ways I decide what to add to PowerPhotos. If I see particular problems crop up time and time again, I first learn how to solve them manually, then if I can I try to add a code based solution to PowerPhotos. As I learn more over the years about photo management, I can pass that expertise onto PowerPhotos in the form of code.

So what does all this have to do with AI coding?

Well, I did first get into this whole field because I liked writing code. I’ve been doing it a long time now, and I think I’m pretty good at writing code. I’m not like the most amazing leet coding haxx0r ever, but with some experience under my belt, I churn out mostly well structured, fairly well performing, not too hard to maintain code.

But the code itself isn’t actually the satisfying part: it’s the process of creating something new, and it’s all the things I outlined above about diving deep into a particular area, and solving problems for people.

Probably the biggest limitation of being indie is the fact that you just only have so many hours in the day, and there will always be more stuff you want to do than you possibly have time for. What has started to get me excited about using AI tools to assist with coding is that it can take a lot of the grunt work out of the process of doing what I ultimately want to do, which is to try to apply my expertise to solve problems. While my coding expertise is obviously a decent part of why I’m able to do what I do, the truth is that the individual lines of code that I type out are not really what lets me add something to the world, it’s being able to help people via the mechanism of encoding my expertise into software.

So, when I first started reading about AI replacing programmers, my initial reaction was to think that if this is true (a big if, to be clear), does it mean the end of my sweet indie gig? After mulling it over, I’ve come to the conclusion that it might actually be the opposite. If I can learn how to use these tools to help me spit my brain contents out in the form of code without having to spend hours typing it all out line by line, this could actually end up helping me supercharge my development and get all these ideas out of my head and into my software faster. This in turn could help lead to me to be able to help more people solve there problems, either by having solutions built in to PowerPhotos, or freeing my other time up to help personally work with someone to clean up their photo collection when that’s what’s needed.

The future of indie development

I’m only just getting started with this stuff, having been working full time with Claude Code for all of a week now, but I’ve already implemented features in hours that would have normally taken me days, with basically the same quality of code output in terms of readability, maintainability, etc. This isn’t magic: it’s just another tool (albeit quite a powerful one), and you need to spend time to learn how to use these tools effectively. You still need to have understanding of how the code works, how it’s structured, and be able to guide the AI agent to make the code the way you want it. But once you get the hang of it and learn its limitations, it’s kind of like having a full collection of power tools suddenly available when you’ve been using hammers and hacksaws your whole career.

So, I am definitely still being cautious in my approach to all this new stuff, and being particularly careful to try to separate the hype from the reality. But I think in the past couple weeks I’ve transitioned from skeptical, to fearful, to hopeful about the future of all this stuff. Kind of like AppKit was a supercharger for indie developers churning out apps back in the early Mac OS X days, I’m hoping these new tools can help a new generation of indies churn out some good products that allow them to add their own personal touches and expertise to solving a problem, and provide a better experience than products from larger companies.