Published on

Making sense of indie hacking (half a year review)

A man looking at the sunrise with his hands open wide

This is a recap of what happened in the first six months working as an indie dev. I built a lot, failed a lot, learnt a lot. There is a huge mentality swift for coding as 9to5 to building as an indie dev, which I was not expecting.

The first couple of months were painfully slow and full of self doubt. Looking back I did everything wrong. Being a mobile developer, I started building for the Web. Even though I am glad I did that as I now have a better understanding of what is doable with the technologies, it was a really bad place mentally wise. I put a ton of burden on myself, truly believing that for me to have any chance in this I had to learn web development. Nonetheless I am glad I experimented with web technologies.

After the release of Audio Bites, I decided to let the project live on its own and see what happens, while working on a new project. People were providing me with feedback and feature requests and instead of me working on those, I kept them hidden on a trello board and wait for multiple requests to come in. Looking back this was a very bad idea. I think that this logic makes more sense if you are some big corp that has tons of users providing feedback. For an indie dev trying to grow their business, not so much. Implementing customer feedback shows people you are listening, which is a huge advantage compared to big corporations.

The second project I worked on was called Social Viewer. Social Viewer's idea came from my curiosity of wanting to understand my Twitter followers better. I was trying to make sense of Twitter and online presense, so I figured that building a tool on that domain would help me make sense of it. At the same time, instead of working with unfamiliar technologies, I tried to stick with tools and languages I already knew.

In theory it was a great project to be working on. After spending a couple of weeks trying to figure out how to setup a server using the languages I knew well, I realised that I was just trying to build a tool for myself. Right after I was done with the basic functionality, I immediatelly lost interest in the project. That made finishing the project incredibly draining. Not believing in a product you are building is not fun and feels like working for someone else. It just doesn't make sense to do it. From this I understood that unless I am invested/truly interested in an idea, this won't work. Plus, I knew I had to figure out a way to validate my ideas before getting heavy on development (if I had to), but I didn't know how.

After the first two months of failing and feeling stuck, I felt like I needed a "small win" to boost me mentally. I started realizing the importance of side projects and how working on multiple thing at once could be benefitial. Working on a project for profit does not prevent me from exploring and building other side projects that purely for the joy of working on something I liked.

Before leaving my 9to5, I started working on a Contacts app for Android. The default app and the ones I could find on the Play Store felt outdated. At the same time, I wanted a project to experiment with a new technologies and other ideas I had outside of work. While working on contacts, I quickly remembered how much of a pain it is to work with the existing Contacts API. I continued working on the project most mornings before work, and the idea of building a better version of this 10 year old API came to life.

Fast forward to October, this was the perfect thing to build for that "small win". I enjoy designing APIs as much as products and I enjoy working with Android. It was something I genuienly wanted to work on, and the solution could be used in so many future projects of mine. Plus, having a 7 year old laptop to work with Android is not ideal and this was light enough to help with fast iterations. As a result ContactStore was born:

The project seemed to be well received by the Android community, which was the cherry on top of the small win idea. In the following few weeks after the release, people created issues, requested features and shared the library around. I kept working on ContactStore, including more features and making the API more fitting to people's needs.

After releasing Social Viewer, I decided to go back to Audio Bites and turn it into a SaaS using everything I had learnt. Even though I was more confident with web technologies and server side at that point, I realised that I had no clue about server databases, authentication, managing customer records and a bunch of other things server people do.

My first approach to these was using 3rd party frameworks. One thing I had not predicted was that each one of those frameworks is yet an other tool you need to learn from scratch. It took me a week trying to figure out which frameworks to use only to conclue I was just wasting my time. I ended up using mobile solutions on the server-side (SQLite3 as that's what Android uses and I know well), and hacked a quick solution for anything I was missing so that I can get a product to the market and validate whether people will pay for it.

Plus, spending a week working on something that has no real impact on the goal felt like wasted time (and a huge hit in my mood). To this day of writing, Audio Bites generated £7 of revenue from a single pay customer, which churned after a month of usage.

Towards the end of the year, I started questioning whether I need to do any coding at all to validate whether a product will sell or not. At the same time, interacting with the Android community and building using tools I am really familiar with, made me realise how much I missed building and sharing for the Android community.

And then it hit me... I enjoy working on Android and I already knew the problems the Android community is facing. Being an Android developer myself for the past 10+ years and being involved in communities in multiple countries helped.

This gave me an idea on the next area I wanted to move next. Given that I knew how much of a pain it is to work with Contacts on Android, I thought that companies and businesses might already be struggling with that. At the same time I keep seeing how much of an issue design and UI work seems to be. Most developers I talk to are not fans of UI work. At the same time, most of the work for using contacts had been made easy using ContactStore, so it was a good opportunity to try out the library on a real project.

Instead of building the whole thing before selling I decided to try out a pre-sale first to check if the work is worth doing. The Kit got a few pre-sales and some friction on Twitter (for my little following) which pushed me to build the Kit for real. I already had some good knowledge of Jetpack Compose so building a new app from scratch wasn't much of a deal. This helped me share my progress as I went through, building in public. This made the whole development of the Kit way more enjoyable than developing any of my previous projects.

On February 1st, the Jetpack Compose Starter Kit became available to everyone. To this day of writing, the Kit had 40 sales (including pre-sales).

Even though the amount of money is not enough to cover a month's of expenses, this experiment helped me understand a few things. I do not need to learn new technologies or become a SaaS master to make a profit online. As I try to try to make sense of the Saas world by growing Audio Bites, I can be working on domains I already know very well. I know for a fact now that I want to be doing more Android related work and contribute more into the Android community.

If you are wondering what I am planning on doing next, so am I. I am somehow switching off from a have to be producting 24/7 and start leaning towards things that feel right to work on. Plus, working with tools I already know very well allow me to move fast and keeps my energy high. Seems like a keeper tactic for now.

Next review in 6 months, which is going to be on August 2022. Follow @alexstyl to be notified when that happens.

Photo by Pablo Heimplatz on Unsplash