How I went from zero app development experience to 12k sales in 2 weeks

Shihab
9 min readMay 24, 2016

--

Many people are under the delusion that only big and large established companies release their content onto the AppStore; and of those, only the greatest fare well. Whilst this may be primarily true, and certainly how it has been for a very long time, it is not a guaranteed 100% fact. Indie developers must put their foot in the door and get their name out there.

This isn’t a post of how I became successful, I’m far from that. It’s a post on how I started on this journey, and how I got to where I am now.

I’m fairly young, I’m a university student, and I’m only developing part time. What this means is that I haven’t managed to dedicate as much time into iOS and OS X development as many of the other big players. Where many would be doing this as a 9–5, 5 days a week, I’m doing this 5–9, 7 days a week. Making up for lost time by reducing other activities. Cutting down on the ‘fun’, and increasing my knowledge base. Back in July 2015, I purchased an Apple Developer License, a pretty considerable investment, which I felt I needed to do something worthwhile to make up for.

Let me get this out, I did have prior coding and programming knowledge, I come from a Computer Science background, and have experience in C, Java, PHP, SQL, HTML, CSS, Haskell, etc. But iOS (Obj-C and Swift) was a whole new world to me. Whilst many who set out on learning new languages would seek out courses or tutorials, I found that to be a laborious and time consuming endeavour, one that may not even teach me much by the end of it. Instead, I dived straight into Xcode, playing around with the Interface Builder at first, and then seeing how Swift’s language is constructed by creating small simple functions, the likes of a Fibonacci Sequence generator, and a calculator of sorts. I didn’t like Interface Builder, at all. And to this day, I find it too fiddly and a mess to work with (accidentally deleting an object that has an IB Outlet would render the whole project useless, amongst other flaws). Over time, I found Xcode’s autocomplete feature to be one of its most useful. It opened up the possibility of having undiscovered libraries presented as an option, one that I took eagerly and experimented with.

About a month or so later, I released my first app onto the AppStore. A 2048 clone, with level options, and cool animations. The $6 I made from it was overshadowed by the experience I gained from it. Admittedly, there is nothing to be proud of here, but getting an app onto the AppStore meant a great deal to me, my name was out there, and my product was on someone else’s phone, that still blows my mind to this day, that something I made is being used by someone out there somewhere in the world. Fast forward a month, and I’d wrapped up on a task manager/notes hybrid, it was my first proper app, one that I did zero marketing for, and learnt that promotion does indeed make a difference, a big one (It went from a grand total of 4 downloads, to 2k downloads in one day when I promoted it on Reddit)… Which brings me onto my next app, a Reddit client.

I have always wanted to build a Reddit client for as long as I could remember (that’s the inner college applicant speaking), but never considered actually doing it. How could I? Reddit is so vast, and I am so small. Whilst my mind was telling me that it would be a failure, I thought about it differently; I didn’t want to make an app to be successful, I wanted to make an app to serve a need, my need. I needed a Reddit client that was configured my way, with my design ethos instilled within it, with my ideas poured into it. This wasn’t for anyone else, it was for me.

Scouring the internet for articles on using JSON data, and communicating with servers, utilising APIs, and the rest that goes into interfacing with an established service, I slowly learnt and gathered enough information to attempt creating the initial ‘Front Page’, the timeline. Getting the app to display Reddit data was a huge step in my eyes, it meant that it was working. Having only made a very simple game, and a notes app previously, this was huge. As broken as it looked, it was working. That was definitely a step in the right direction. Days passed, and I added more things, a filter, image thumbnails, text formatting, design enhancements, etc. Up until one day I looked at it and thought, “Hey, this is actually a serious contender for the AppStore, whilst it’s not near completion, it could be worthy of something big”, and so I went from creating it just for myself to opening up a beta through TestFlight, so that I could get the opinion of others too. The feedback was overwhelmingly positive.

I had also posted screenshots of the app on various subreddits on Reddit itself, which helped project the app and gain more exposure to an audience that would actually use it. I was accepting everyone into the beta program, anyone that asked got a slot. The 2,000 allocated slots filled up in a matter of days, and soon people were asking to be put in the beta if anyone dropped from it. This was good, as it meant that people actually wanted to be a part of it. People wanted my app.

The entire process took me approximately 4 months (I had started late November 2015, and finished early March 2016, not accounting for time taken off for social activities and illnesses). I learnt a great deal from it, from how to populate table views, how to incorporate swipe gestures, how to fetch and display data, how to handle Xcode issues, how to set up provisioning profiles and bundle identifiers, how to market a product, but most of all, how to overcome hurdles. There were plenty, day in, day out, but if I let an issue stump me, if one single problem was allowed to bring me down, I wouldn’t have finished. I wouldn’t have got Milkeddit onto the AppStore. I wouldn’t have managed to launch a product I was extremely proud of.

The launch in itself was mediocre, approximately 300 sales on day one. Whilst this is something many indie developers may dream of, it was far less than I expected, especially considering that there were 2,000 beta testers, and a passionate backing on Reddit who all seemed interested in my app initially. What did I do wrong? I had a great product, I had a fairly large base of potential users. I had made relevant announcements on Reddit and emailed a few journalists. Yet, the numbers weren’t adding up. I soon realised my downfall was in my pricing structure. $1.99 is relatively cheap for a coffee, it’s fairly cheap for a bag or an accessory, it’s not a large price to pay for a meal; but for an app, it’s a lot. It’s definitely a lot when the app itself has no reviews, is fresh on the AppStore, and has never been heard of. It was the wrong price, it was like a fish out of water, it was dying. I was determined to continue making people see its worth, to show them that an app could cost more than $0.99 and still make an appearance on the AppStore. But the consumers were not swayed, I made it free two week later to see how that would work out. It worked out very well. 12,000 downloads in a day. My pricing structure was definitely to blame.

I also learnt that AppStore rankings are influenced by the number of downloads across a period of days, along with the type of reviews it receives. Having got a considerable amount of downloads on launch day, and the day that followed, my app was number one top paid in the AppStore’s News category. This victory was shortlived as the number of downloads decreased and the days carried on coming. Submitting an update (which included a watchOS companion app, something that I learnt fairly quickly due to its primitive code and layout) sent it back to the number one spot again, as this resulted in an influx of downloads in a short amount of time. Furthermore, reviews came here and there, some positive, some negative. The negative reviews were primarily as a result of a lack of knowledge, people just sometimes don’t know how to do something, and they vent their frustration out as a 1 star app review. This is disappointing as it cannot be removed, and neither does the AppStore offer a way to contact the reviewer and resolve any misunderstandings. The only optin is to brave it and hope for a greater amount of positive reviews to overshadow it. Which I was lucky enough to get. Landing at an average of 5 stars in most regions, and 4.5 stars globally, it done pretty well overall.

However, I did not settle there. Did I ever tell you that I had always wanted a Reddit client for OS X too? And this time, there was hardly anything on the Mac AppStore (arguably because web exists) that even came close to serving as a complete feature-rich client. How hard could it be making one? To my surprise, it was easy. Easier than I had anticipated. Whilst a lot of the code was vastly different, due to the disparity in libraries used between iOS and OS X, and how they differentiated in features (tap as opposed to click, swipe as opposed to scroll, etc), the language was still the same, and the core of it all relied on the same principles. I wrapped up on development in 8 days. Yes, that’s right, 8 days. I made an entire Reddit Mac client in 8 days. Having already gathered a small base of people who may be interested in it, I ran it past them in the form of a beta to see whether it was worthy of the AppStore, and then I submitted it for review.

Now, the review process has long been criticised for many reasons; slow review times, unwarranted rejections, poor handling of an influx of app submissions, lack of communication between the developer and reviewer, and just a sheer lack of any explanation when apps get rejected. Milkeddit for Mac faced 3 rejections before being finally accepted. Each and every time, it was due to Sandbox entitlements, something I had not considered in depth, something I had never looked into, and something I didn’t know would cause an issue. Having not been exposed to Sandboxing in iOS, the addition of it was an odd one, and one that I later came to learn is a requirement for the Mac AppStore, and certainly something that improves Apple’s own protection against any malware or similar things. Fixing these issues allowed for Apple to green light it and have it show up on the Mac AppStore, it instantly made it to the number one top paid, as well as number one top grossing, app in the News category, and 100 downloads over the course of the first week. This was considerably less than expected, but then again, it was a whole new platform, I didn’t know what to expect.

I was also lucky enough to have had both versions of Milkeddit featured on ProductHunt, and get reviewed by various tech news publication sites. I would like to say that the site reviews helped with sales, but they really didn’t affect it much (got me about 400 downloads altogether for both apps). The largest amount of downloads resulted from promoting the apps on Reddit itself, however this too started to be gunned down and seen as a negative by others. Which ultimately led me to resort to a Mailchimp capaign to broadcast updates through emails.

It’s been almost a year since I’ve touched iOS development, and I’ve learnt enough in that time. I can’t wait to see what else I can come up with. This article hardly touched on the ins and outs of the development process, but I do hope it served as an overview to what it took getting to this point.

If you’d like to check out Milkeddit, find it over here on the iOS AppStore, and here on the Mac AppStore.

If you liked this post, please recommend it so others can find it, and follow if you’d like to see more!

--

--

Shihab

iOS and macOS app developer https://milkeddit.com, Senior Web Developer, Graphic Designer, ex-IBM