Many people I know are interested in developing apps. Many have bought books, and even started to code a few ideas, however very few actually ever publish anything. Several months ago I was thinking about this and came up with the Interest vs. Required work vs. Accomplishment chart. I believe this sums up the reasons why it’s really easy to start an app development project, but it’s really hard to finish it, and why you have accomplished nothing until you actually do. These principles can be applied to many different types of projects, however I’ll focus on my experience with Android apps.
Part 1 – Starting a project is fun
Starting a new project is fun: you’ve come up with an awesome new idea; you’re envisioning all the features that your next blockbuster app will have; you tell your friends and they all agree that your idea will be the next Angry Birds. At this moment in the project lifecycle, your interest is at it’s peak, while the required work is at it’s minimum. Starting a project is free in this sense.
Part 2 – Making a working prototype is fun
For most of us that love programming, the next phase of the project is also a lot of fun. This is the point where we get the main features working, and where we learn new things that we didn’t know before. If you’re like me, researching some API you hadn’t used before and watching the code do something new is pretty cool and rewarding.
Also during this phase is where the easy-to-find bugs pop out. Squishing those out of the code is also a source of satisfaction, so at this point interest is still pretty high, while the required work increases but remains rewarding.
If you’re developing apps in your free time (that is, after your 9-5 job) this phase could take you weeks or even months. All this time, summed up with everything life throws at you on a daily basis (a stressful day at work, a sick child, etc.), means that normally the initial excitement and interest starts to wear off.
Part 3 – Finishing is a lot of work (the hard, boring kind)
Finishing an app is a lot of work, and not the fun kind I mentioned above. During this phase you’ll have an almost ready code base, however here is when you come up with the really hard-to-find, corner case bugs that aren’t obvious and take hours to debug. Here you’ll find performance issues that you didn’t anticipate, and that require a rewrite of a large part of your code. You had already received the satisfaction of seeing your code work, and rewriting parts of it doesn’t bring that feeling back.
If your app has a ton of features, you’ll also get bogged down in this phase. You should keep your initial feature set to a minimum, and get feedback as soon as possible (in the form of Market comments or emails from real users (not your Mom or best-friend-and-cofounder)) before committing to more features. Borrowing from 37 Signal’s Rework, “good enough is fine” for your app (if you don’t have the book, you can also take a look at this essay from “Getting Real”). As you get more experience, building more complex apps will become easier and will take you less time… but keep your first versions really simple. In the first versions of my flashcard app I tried to add a “flip animation” when the user presses the card to see a translation. I was unsuccessful as this was way over my head at that time and this set me back about 2 weeks. Last week I finally added this effect in just one night, however it took six months of learning to reach a point in which adding this kind of extra feature made sense. (Note: If you’re curious, a pretty important update is coming soon, including this!)
Also, during this phase you’ll have to create a ton of graphical assets: for different resolutions, for different screen sizes. You’ll have to prepare assets for the Android Market, and if you’re going to publish in different app markets, you’ll have to make assets according to their specific requirements. You’ll have to pay for string translations (if you’re supporting different languages) and wait for the results.
You’ll have to test your app in different devices, and get feedback from all your testers. And if something does come up, you’ll have to repeat this until you are (almost) bug-free. This, again, is not half as fun as when you first developed your app, and even after publishing you’ll be returning to this stage for updates and bug fixes.
Trust me, this part is not fun. I’ve lived it twice with my two apps, and I relive it every time I make an update to them. It’s hard, it’s boring, it’s time consuming, and it’s not rewarding in the same way programming is. But at least knowing this helps me wade through this phase knowing that the rewards await for those who persevere. I believe it is during this phase of a development project that most projects die (at least personal projects). If you’re not having fun, other activities (watching TV, playing games, going out) will seem more attractive. Here excuses will flourish as to why you’re unable to finish your app or why it’s best not to finish, and after a few weeks you’ll be at step 1 all over again.
Part 4 – You’re missing out on almost everything cool about apps until you publish
I would dare to say you’ve accomplished nothing until you actually publish your app. If you’ve already spent hours of coding and don’t persevere until this last phase, you’re missing out on everything that’s good about being a developer these days:
The feeling of finally uploading your .apk file, clicking the Publish button, and taking the night off to finally rest after weeks of work is awesome and satisfying. And so is coming back the next morning to find that someone actually downloaded your app… or even purchased it. If it weren’t so hard it probably wouldn’t be as satisfying. It’s also a good feeling to know that your work is being used by thousands of people all around the world. My flashcard apps have been purchased in more than 40 different countries from all continents (except Antarctica, of course). It will be an unbelievable day when I randomly run into someone that has used one of my apps.
You won’t be making money from an app that’s sitting on your hard drive. Your app doesn’t have to be the next best thing for you to make money as an app developer. If you don’t believe me, just browse around the apps in the Android Market. Many apps have made hundreds or thousands of dollars for their developers, while not being a big challenge to create from a programming or even creative point of view.
Just the size of the Android ecosystem (700,000+ installs per day) means that someone is going to find and use your app. I did absolutely nothing to get the word out about my flashcard apps. What started as just a few new users per day has become almost 1000 new users per day, with no work on the marketing front from my part.
Also, nothing beats the feeling of making money while you sleep. Making passive income is a valuable aspect of being a developer these days. Years ago it was really hard to get the word out about your software products, as was getting paid for them; today you have millions of potential customers at a click’s distance. From a financial point of view, how much money would you have to invest to make $250, or $500, or $1000 per month? Probably tens of thousands of dollars. By working hard for a few months and publishing an app you have the possibility to make as much money as someone with a lot more capital than you.
If you check out job postings for Android developers, about 90% of them will say they’re looking for someone who has actually published an app. And those who don’t explicitly mention it will probably prefer someone who has. Anyone can pick up a book and learn how to make Android apps, but like I explained previously, it takes an extra effort to actually get it into the Market. If you’re looking to be employed as an Android app developer, it’s definitely a good idea to have a few apps published.
Apps have made programming cool. Being an app developer, and making money from your apps adds a level of awesomeness to yourself. One day you might not even have to suit up.
Go, finish your app
So stop reading this and go finish your app. Yes, I mean you! And you know which app I’m talking about! It’s hard work, but who knows, you might be the next Angry Birds.