Pros and Cons of Solo Development
I created and maintain Luxury Yacht, a desktop app for managing Kubernetes clusters. Think Lens, k9s, etc. It's that kind of app.
Why do this, when apps like Lens and k9s exist? I just never found the app that clicked with me. The closest thing I found to what I wanted was Infra, which I really liked, but it's been abandonware for years. So, I decided to write my own. Along the way it got good enough that I thought other people might also like using it, so I released it.
Maintaining Luxury Yacht is practically a full-time job that I do for free, in my spare time. It eats up a sizeable chunk of my evenings and weekends. I'm not complaining! Nobody's forcing me to do this. I enjoy it. I'm creating something genuinely useful for myself that I get to share with other people. As I write this, I've got well over 350 stars on the GitHub repo, and that feels pretty good.
Luxury Yacht is a solo project. It's been quite a challenge to get it to where it is today. Here are some things I've learned over the past 6-ish months of doing this.
Pros
There's a lot of freedom that comes with being the sole maintainer of an app. This is the big draw for me.
I get the exact app I want, that works exactly the way I want it to. This is an extremely cool feeling and you should try it if you haven't yet. AI has opened this door for a lot of people. More on that later.
I can ship a bunch of changes at once. I can create ridiculously huge PRs that I would never willingly inflict on another person.
Being accountable to no one but yourself is extremely satisfying. I make all of the product decisions. If I want a feature, I build it. I don't have to cut or delay features to meet a release deadline, or negotiate with with a product team about taking the app in directions I don't agree with.
I release on my own schedule. Sometimes I might release a few times in one day, other times it might be a few weeks between releases, if I'm working on a particularly large or complex task.
I don't do standups, sprints, points, or burndown. All of the ceremony that can get in the way of actually doing the work is gone when you're a one-person shop.
I can choose to license and release my app however I want. In my case, I've decided to give it all away for free. There are a few reasons for that:
- I like the philosophy of FOSS, and I like the idea of giving something back to the community that has given me so much.
- AI. I make extensive use of LLMs to write Luxury Yacht. It doesn't seem right to charge someome to use code that was trained on other people's hard work.
- I really, really don't want to be in the business of software. I like creating the app. I don't like the stuff that comes with running a business.
On that last point, I think it's important to understand these kinds of things about yourself to enjoy what you do and not burn yourself out. I might be leaving money on the table, but I don't care. I'd rather be happy.
Cons
The flip side to all of that freedom is the self-discipline required to do this solo. I wouldn't recommend it if you don't have that discipline. Don't take it on if you don't love doing it, because if not you'll just be letting your users down.
Thanks to AI, writing software is easy, but writing good software is still hard. Even if you let LLMs write most of the code, it's a lot of work to prevent it from becoming slop. Current LLMs cannot hold the complexity of large apps in their context windows, and you have to constantly monitor them to keep them from going off on strange tangents and producing garbage code.
I have no one to bounce ideas off of, aside from friends who use the app. I don't know if my design choices are right. I don't know if my implementation makes sense. I don't know if I'm making rookie mistakes in the code. What I do have is lot of experience as a platform/infra engineer, and I've been using Kubernetes for almost as long as it's been around, so I have a pretty good sense of what I want out of an app like this, and I'm hoping that what I want from this app are the same things other people want.
But... I don't truly know what my users want. There is no telemetry of any kind in Luxury Yacht. I like being able to say that, but it means I have no idea how many people are using it, or how they're using it. I don't know what features are the most important to other people.
Dealing with entitled users. I have to say, I have not experienced this yet. All of the people who have been kind enough to open issues or PRs for Luxury Yacht have been great, but I've seen it in other open-source apps, and I kind of dread this happening if the app gets more popular.
The AI Thing
Since I mentioned AI earlier, let's talk about it briefly.
I have conflicted feelings about AI. I have economic, political, and environmental concerns that I doubt we will properly address before they become huge problems. Maybe I'll tackle that later, in a future post. For now I'll just say that I get a lot out of using it as a tool to write code, but I have very little use for it outside of that. We'll leave it there for today.
In Conclusion, Solo Development is a Land of Contrasts
Despite the cons, I'm having a great time with this. It's extremely satisfying to build a good piece of software. It's super cool to check out the locations of the people who have starred the repo, and see that they're from all over the world.
A quick anecdote. I was at KubeCon in Amsterdam this past April. On the advice of a friend, I had some Luxury Yacht stickers made, and I brought them with me to the conference. I put them out at my company's booth.
On the 2nd day of the conference, one of the attendees stopped by our booth, saw the stickers, and said, "hey, I use that!" I replied, "really? I made that!" Then we talked for a bit about what he liked about my app vs. others that he had tried. This person had traveled from Germany to attend the conference, and I was struck by how cool it was that a thing I made was appreciated by someone so far from where I live.
This is the stuff that makes the effort worthwhile.