I started coding in iOS since 2009. I do it part time because I have a full time job, so I dedicate about 3 hours a day, 5 days a week.
I am a tech guy, always have been. Studied Biochemistry and picked up ASP, PHP and moved into iOS. But because I live in a country where technicians are highly undervalued, I got my MBA in 2000. So I know a thing or two about how to run a business.
So when I started meeting indies in 2009, I approached them and said, “I have some ideas for an app, is anyone interested in working with me?”. Their response was always “No thanks, we all have ideas, we don’t need a business type to come and push us around”.
Something inside me said: “Hey, that’s true, Im a tech guy myself, I should know better”. So I decided to begin coding my own projects. I have about 20 of them out of which 5 developed into half-assed apps, Im currently working on 3 and the other 12 are just titles in my Notes.app.
Not only that but I’ve stayed in touch with most of those indies and nobody has made anything out of themselves. No Zyngas, no Halfbricks etc. The more I read tweets and posts and blogs and articles about indies, the more I see they all have trouble marketing games, designing effective games, successfully monetizing games etc. I’m constantly seeing presentations about how a developer “made it big” or at least “worthwile” and he is no longer an indie, but has slyfully re-engineered himself as a development studio (usually 3 or more people). These presentations are usually about their dev career. The funny thing is that most of these presentations almost always include tips like:
Don’t underestimate the power of marketing
Design your app to make it monetizable in the future
Get input from beta testers
Don’t put all your money into a single promotion platform
Hmmmm….This looks a lot like:
Marketing & Sales Plan
It’s still just a Business Plan after all! And after months or years of starving yourself and getting into family or personal financial discussions with your wife or partner, you have nothing to show for except a nice app in the AppStore with a few ratings and about $200 worth of revenue. When a sound business plan could have gotten you a personal loan to cover living expenses and a solid business plan to get you through the first 12 months. After that time you could still have a viable product in the AppStore, money in your pocket, a plan for selling your app profitably into the future, possibly $201 in revenue, but you would still have your sanity…and your wife!
So this is a note to all indies out there. I’m a tech guy myself, I know what its like to be under-appreciated. Swallow your pride, have a few drinks with a business type guy and hear him out. He might know how to get you that studio in 2 months instead of 12.
iOS is undoubtedly a great touch UI. However, it needs a refresh, it’s long overdue for an overhaul. Not just a “new widget” type refresh but a real overhaul. If we can make a robot that flies millions of miles to explore a hostile planet…
SEARCHING FOR APPS
The whole repetitive process of searching for apps in the AppStore, installing them, updating them everyday and switching between them is getting so old, so 2012!
We’re are in the era of Robots that travel millions of space miles to do their thing. Robots that park cars, help the elderly etc. Our robots are getting smarter by the day. We need our smartphone to get smarter too.
Finding apps is a real pain. Not only is the AppStore not very good at finding apps for you, but the whole idea of searching for an app is tedious. A smartphone should really recommend apps based on our preferences. More importantly it should gives us a dashboard of the apps we haven’t used lately, suggest similar apps to those so we may decide to replace them and preset us with new apps altogether. New featured apps should be based on our preferences, not user ratings. What do I care if 500 million kids really love games and have access to their mom and pop’s credit card!? My featured apps need to be customized to my lifestyle, not a voting system.
The dashboard should be smart enough to look at what apps I have, types of documents I store on iCloud or Dropbox, most visited locations etc and come up with app suggestions that are really productive.
Installing apps is also rather tedious. Once you find the app you still have to touch install and enter your password. iOS screens should be sensitive enough to detect fingerprint patterns or have voice control for entering passwords orally. This “popping the keyboard to type in passwords that get more complex every day due to hackers” thing is a bit annoying. I completely agree with the need for security not only from strangers who might have gotten ahold of your phone but also little kids who might buy a slew of games on your device while you are not paying attention. But adding a bunch of obstacles makes it a pain for those 5 to 10 minutes you do manage to pry the device from your kids’ hands and you want to actually buy an app.
Updating is just as bad as installing. No wait…its worse! You only install once. You update every time the developer comes up with a new update, which can be quite often. Its annoying to see those red badges in the AppStore app reminding you of a pending update. As if that wasn’t enough, you have to re-enter your password if you wish to update an app you already downloaded. If the app cost anything, you don’t have to pay to upgrade it, so why ask for the password? It won’t cost the user more money to upgrade it. If you already downloaded it in the first place, why would you not want to have it upgraded? Who wants to pay for an app but doesn’t want the new and improved features of it? If you are going to ask the user, “the app you have has new improvements ready to be downloaded for free, do you wish to download the new version that won’t cost you a penny?”, then at least ask “Or would you like to see these other apps that have similar functionality?”. At least you will have made it worthwhile to make the user re-enter the long convoluted password in the tiny keyboard :).
This is perhaps the toughest feature to address. iPad has done wonders with its sideways swipe to switch between apps or its upwards swipe to view open apps. iPhone needs to at least get up to speed somehow. I constantly find myself switching from twitter to facebook to email to browser. Wouldn’t it be nice if the smartphone was actually smart enough to know what to do next? For example, I have a usage pattern; when I wake up, I check facebook and then twitter, or vv. It would be nice to click on the home button or voice control over to an action sheet with app launching options. When leaving the facebook app, the user should be presented with options based on what he regularly does after facebook, or based on what would be a logical step after facebook.
The whole square icons on a grid app model needs to be revised. Ill be honest, I don’t have a Windows phone, but I have heard it is one of the most touted advantages of the OS. I have never used it so I don’t know if it’s really true or not but it is definitely something worth looking into because this whole switching between apps is really getting old.
Here is to hoping that iOS7 will bring something new. Here is to hoping iOS7 won’t be another WindowsMe.
These are just random thoughts on what I believe are the pros and cons of coding an app vs a game. The reason why I am writing this is actually because I find myself in the same predicament. I’ve been coding crap for the past 3 years and I believe its time to make something “significant”.
At first I thought, I’ll code a bunch of apps and even though they might not be Top Pick apps, they will be enough. Even if they only make about $5-$10 a month, I may be reaping $100 a month which sounds cool. I even got into the whole iAds thing and thought it could improve my revenue to perhaps $200 a month. So I read some docs, took some online course (which were much better than the docs btw) and I was ready to code. This is basically how I coded in my personal evolution as an iOS programmer:
At first you will code anything! My “Code Anything” stage consisted of an app I wanted to make for my wife. As a guy, Im very absent minded when it comes to remembering birthdays and important things in a relationship. One of them is simply being spontaneous and surprising your loved one with an occasional flirt or memoir of your time together. So I made an app (iLuvMe) which would take 15 memoirs and present them to the user as he/she tapped on the screen. At first the app made the user jump through hoops. Currently it is development to make it easier to use and I added the email functionality for users who have trouble using it. As I learned later, this should have been the first feature added to any app…Contact Customer Support.
My “Borrow Code” stage was basically taking an existing online tutorial code and modifying it to make an app for tracking imports in the company I work for (Shipment iTrack). I did it because it actually fulfilled a need in my job but I didn’t learn how to design an app, I just learned how to understand or interpret code. This is very dangerous because it makes you believe you understand concepts that you actually don’t, such as Delegates & Protocols. It was around this time that I also made my next app (SalesToGo) which basically borrowed the sample app from CorePlot and modified it to my needs.
Then my “Lo Quality Original” stage consisted in creating an original app with a web service to back it up. The app worked, works, but its uglier than sin and I took no consideration as for UX. The app (iGlobe) is an app intended to be a playable online world wide game where you rack up points based on the places you visit and people you meet. It basically rewards you for being social. But building an app from the ground up teaches you to think about how to design code, it teaches you to really understand design patterns and code structure. This is where I learned most of my current knowledge on programming; both coding and planning.
I then decided to go back and upgrade my old apps during my “Improve Existing Apps” stage. This is when I added Customer Support buttons and some UX features on my old apps. However, I ended up with some spaghetti. This is why I began to see where I could reuse code and extract it into a class for making web connections and fetching JSON for example. This helped me understand how to structure code. I incidentally also learned how to read reference documentation by using 3rd party SDKs like Facebook, Bump, AppiRater, CorePlot and TestFlight.
At this point I was kinda bored of apps and ran into Cocos2d. I guess that having bought a book made me more aware of my investment so I decided to really stick with it. I read the book and learned quite a bit about Cocos2d and decided to start with a game. I started with an “Opportunity Game”. You can make original games or remakes of traditional games as an ongoing plan, but you can also take advantage of a worldwide situation and make a game out of it. This has the added advantage that the world is aware of that global situation and it serves as a nice piggyback ride for marketing the game. So I was 2 months into my game when I realized I had to outsource my graphic design. It dawned on me that you have to see this as a business or it will fail somewhere in the code design, graphical appeal or marketing plan.
Finally, I reached a fork in the road. Should I work on a game or an app. So I came up with something like this:
Must be Good
Quicker to Market
Must be Original
A game has a larger potential market. Why? Because anybody can be interested in a game. Angry Birds is fun for young and old. But if you create an app, its harder to come up with something for everyone. It will most probably end up being for a niche market. I also believe a game is easier to market. It is more subjective to like or dislike a game, whereas an app has to be VERY appealing to be liked by a user. However, the game must indeed be good! This means, it must really be good and it is expected to have certain things such as GameCenter, many levels, powerups etc.
On the other hand, an app can be made quicker and still be good. What I mean is, you can have very little functionality in the app and have it be very effective at what it does. However, to be successful, it has to be original because not only are there tons of apps that can already do many things but again, apps are very subjective. Thus the app must really do something original or it will be overlooked for another.
So it was Decision Time. I realized I needed a partner. It just so happened I met someone at the Apple Dev Talk in Austin on January 2012 and I began working with him on a game. This was going to be a full fledged game. We designed it on paper first; Intro, levels, scoring, power-ups, social media integration etc. We started working on it since February and it has been falling apart since. He didn’t have enough time as he is a new Dad (which I totally respect because my son is 3 years old). I did manage to outsource the graphic design and keep my work plan. The timeline has been stretched as the art proved to take longer than expected.
So here I am, with a game that is 2 months before its projected launch and Im 50% through the game. Everyday getting new ideas in my head. Some ideas tell me to go back to real-need apps from situations I encounter day to day. Others tell me to focus on 1 or 2 of the old apps and push through to make them the cornerstone of my iOS development. And yet others say, finish the game you started or make more “Opportunity Games”.
So why am I posting this? Because 140 characters is too limited! 🙂 Do you find yourself in the same situation? This is not a programming specific problem. This is a decision like any other. You know you have to do something, anything! Just don’t stand still or you’ll sink!
Anyway, I thought my experience could help anybody at least to recognize where they are in their iOS indie dev evolution. iOS dev world is great, but as with anything, you gotta put your back into it and prioritize.