Write Your Own iOS App

Since we deployed SitterSat.com, I get some questions about the iOS app.  They are usually along the lines of “did you write this or pay someone else to do it?”, “is it difficult to create an iOS app?” or “is it expensive to create an iOS app?”.  Here’s what I would quickly say to those 3 questions and I’ll post a bit more as well in the body of this post.

SitterSat iPhone App Screenshot

Question 1:  Did you write this iOS app yourself?

Answer 1:  Yes, I wrote the entire iOS app end to end myself.  I didn’t pay someone else to do it.  There’s a couple of reasons why I didn’t want to do that.  One, I wanted to learn how to do this myself.  Two, SitterSat is 100% free, so we don’t want to hemorrhage money on things we can avoid.

Question 2:  Is it difficult to create an iOS app?

Answer 2:  Yes and No, depending on who is asking.  No if you are an experienced software engineer.  Yes if you are new to writing “code” so to speak.  Somewhere in the middle for everyone else.

Question 3:  Is it expensive to create an iOS app?

Answer 3:  The actual app itself?  Can be, if you outsource it.  Had I outsourced SitterSat, I am guessing I could have paid someone about $5,000 to $10,000 to write it.  The actual deployment process?  $99 payable to Apple.  Sticker shock?  Don’t.  I’ll explain why I think it’s more expensive than people think later.

You want to do it yourself?  Here’s what you will need.

1.  A Mac (here’s a link to the laptops).  Buy one with plenty of RAM.  You will need it and thank yourself for having an awesome computer.  Truth be told, I have plenty of Windows machines too.  I’m agnostic.  I actually like both platforms.  I’m not one of those folks who swears by any one particular brand, OS, etc.  Anyhow, you will love a Mac just for daily life, so get one if you don’t have one.  Again, get one with as much GB in RAM as you can get.  You’ll likely want to buy some other goodies to make it more fun.  $2,500.

2.  Get yourself an iOS Developer Program account.  It’s what you’ll be using to deploy your App.  $99/year.

3.  Download XCode, it’s what you’ll be using to write your App.  Free.

4.  Download The Gimp or something else to do your image editing.  You’ll need something to create your original artwork.  Free.

5.  Learn Objective-C.  This is where it gets a little bit dicey for some folks.  If you don’t know it (like I didn’t know it), you need to learn it and you’ll need to learn how to work with it in XCode (another tool I didn’t know prior).  But don’t get concerned too much, it’s such an easy object-oriented language.  I’d recommend using iTunes University to do just this or go get some books from your local bookstore (I still love books I can hold in my hand).  iTunes U is a great resource.  It’s free.  So here’s what I did, I found a class being offered by Stanford University.  I took the course (about 24 hours worth end to end) on the iPad at night and on the weekends (yes, I have a really patient wife).  I learned Objective-C and working with the XCode to write a simple calculator.  Your real app will do much more than this, but you get the idea, it gets you started.  Free.

Knowing what I need to buy is one thing, but what do I really need?

More than money or knowledge, I think you need time.  Even if you already know how to “write code,” you need time.  Time to write the app.  Time to test the app.  Time to deploy the app.  Time to support the app.  Even if you have money to outsource it, you need time to manage the process and product.  If you’re like me, happily married and working full-time, you need an understanding wife who gives you time outside of work.  You don’t want to screw up your real life so you need time and she needs to be ok with it.  Also, I get asked about wonder kids on CNN who write killer apps and make a bunch of money.  They are superstars, but they are the exception.  Those kids are amazing.  But they are 12 years old with free time.  Not me.  Even so, as a kid, that was not me.  I was not smart enough first of all, but even so, I was not indoors, I was running around outside, riding my bike all over the place and eating mac & cheese and drinking Coca-Cola (instead of water when I was thirsty – I think Coca-Cola took 2 inches off my height :>).  Anyhow, time is what you need.

Got time?  Haven’t tired of me yet?  Ok, then here’s the high-level.

Write your app.  Fire up XCode and write the app that you’ve designed so eloquently on paper.  You’re going to have a host of questions, so remember Google is your friend.  There’s a lot of brilliant people who manage to not only solve real problems, but also spell it out for you on the web (e.g. stackoverflow).  These folks have a real gift for being able to educate while getting real work done.  Unfortunately, I can’t tell you how to write your app because there’s so many variations of what you might want to do.  Is it fully encapsulated, rather, does it stand alone and need zero Internet connectivity to work?  Is it a game or a utility?  In SitterSat’s case, it’s a utility that provides a very simple, straightforward purpose.  My friend Wil at ScheduleFly says keep it simple and on target no matter what you’re building.  They’ve been wildly successful in sticking to that when the temptation can be so hard to overdo it.  Don’t overdo it.  That’s the approach I took as well.  SitterSat’s app has an internal database and makes quite a few REST web API calls for authentication, download, upload, etc etc…you may not need that.  But my point is that whatever you do, Apple and Google are your friends.  Use them.  They have everything you need in Apple’s documentation and on Google’s extensive search platform.

Create your original artwork.  Resist the urge to create something quickly.  Spend some time.  Hire a graphics designer if you can.  Use a friend that’s really good at it.  Do it yourself if you have the chops.  Create your graphics as vector based png files at 1024×1024 and scale in later as necessary.  When you deploy your app, you’re going to need 57×57, 114×114 and other sizes for Retina display and what not.  I can’t emphasize enough the need to have high quality graphics that match the intent of your application.  Apple requires it.  Once you have your graphics, copy them into the right locations in XCode for your project so you can use them while testing.

Test your app in the simulator.  In XCode, once you’re ready to test your app, you can test it with the built-in simulator on all kinds of versions of iPhone and iPad.  I recommend testing it thoroughly in all various versions you want to support.  In SitterSat’s case, I was only able to support v5.0+ for the iPhone because I was using new NSURL libraries that were only made available in newer OS versions.  Oh well.  I’m ok with that.  I don’t want to go back and write a bunch of other code to accomplish the same task for older versions.  I lose out on those phones.  Oh well.  I’m ok with that.  But you don’t have to be and you can test it to your heart’s content.

Test your app on real phones.  Hook up iPhones via USB directly onto XCode and fire away.  You can get real testing done that way.  Go a step further and create a provisioning profile that is strictly used for testing purposes.  You can get nice crash dumps from your test phones and someone can download it remote while not having to connect to USB.  I did a bunch of testing and was glad.  I remember one case that I would never have found if I hadn’t gotten others  to test.  Someone was using a CRLF in a place I wasn’t expecting (but I was allowing) and I wasn’t handling it in the app (causing my app to crash).  You just can’t get it all yourself, you need to deploy to a wide test base.

Deploy your app to the AppStore.  I see lots of and lots of helpful information on the web about how to deploy your app.  All this stuff is generally great, but I also want to point you to a definitive resource.  It’s the one I used.  It has everything.  There’s no need for me to rehash all this, just follow it to a tee.  It will get you there.  Google iTunes Connect and setup your account or use this link to create an iTunes Connect App Record (if my link still works by the time you read this post).  This part of the process is time consuming.  It takes a while, in my case 8 days, from the time you upload your binary (your app) into the review process for Apple to the time it is deployed.  With as much volume as Apple receives, it’s actually quite surprising mine got through so quickly.  It says this in the documentation, but be ready to create some test accounts for Apple to use.

Upgrade your Apple account.  If you’re ready to move your app from a personal developer to a business account (and already deployed your app), you’ll need a D&B number.  That means you’ll need a real company.  But that’s most likely the case for whatever you’re doing.  You’ll want to contact Apple via phone and have them initiate this transfer for you, but it will take a couple of weeks.  Doing this will get your individual name off the app and replaced with the company name.

Promote your app.  You will want to get the word out via Twitter, Facebook, Pinterest, press releases etc.  I’ve seen people do this before or after their actual launch.  One thing I will say is that be prepared for some people to stumble across it as soon as it hits the AppStore.  Within 3 hours of our app hitting the marketplace, we had someone in Brazil download it and rate us 5 stars on the app.  We were of course so thrilled to have such a high rating (thank you person in Brazil!!!), but we were cracking up at how this person found it.  We have no idea.  :>  The AppStore is hot.  Since then, we’ve had people from several parts of the world get the app.  So be prepared for a bit of that along with your serious promotion efforts.  Also, be sure to do a better job than we did about asking for app ratings.  You have to ask people.  We haven’t.  Lesson learned for the next release.

Support your app.  The last thing you want to do is put something out in the marketplace and just ignore it.  Listen to users, respond to feedback.  Implement suggestions for improvements as appropriate, but most of all, fix bugs.  Nothing will kill your app faster than a host of unanswered bugs.  A user contacted us about a defect (a million thanks, most people won’t tell you about it, they’ll just uninstall) and we had it fixed quickly much to the delight of the user.

Finally, let’s wrap up with a bit about the money.

I get the impression that a lot of people think apps are pretty much free and easy to build.  I’ve heard “can’t you just outsource it for on-the-cheap”  The answer is yes, you can, but let’s look a bit closer. I have read a lot of interesting analysis about the cost to build an app being anywhere from $3,500 to $35,000.  I heard AngryBirds was about $100,000 to build, but I haven’t looked into the truth of it.  I don’t really care honestly, but it wouldn’t surprise me if it was that much.  It’s a great game.  Anyhow, a few comments.

If you’re approaching this as wanting to get something out in the market for as cheaply as possible, you’re approaching it wrong.  Approach it in a way that is cost effective, but with the end user experience as the most critical thing.  If you outsource it, make sure you’re choosing a reputable company.  There’s a bunch out there to choose from, but choose one you feel comfortable will be around for a while.  Also make sure you retain full ownership of everything.  They will also have access to your sensitive information (especially if the app does anything meaningful).  Make sure you have a 3rd party privacy agreement and other legal provisions in place.  And make sure they operate with the mentality of security first (sanitizing user input, etc) while being able to satisfy your other non-functional requirements, such as reliability.  Finally, I’d like to say one more time, don’t skimp just because you’re cheap.  Trying to be cost effective is one thing, but skimping because you’re cheap is the wrong move.  Resist the temptation.  High quality work cost money.  Make it rewarding for both parties.

Graphics design skills (for your original artwork) should cost you some money unless you can do it yourself.  You should really pay to have quality work done.  It’s a skill I don’t have and I appreciate how valuable it is.  I have friends who do it full-time.  It’s amazing.  They are artists.  This art comes with a price tag.  It’s worth it.  You pay for quality work.  Apple mandates quality.  If you have $25,000 you can have your cake and eat it too (and get some nice marketing materials to boot).

In closing, who am I to tell you all this?  Go try it.  Report back that I’m wrong.  We need to know, I need to know.  I want to know.  This is just my experience and if being married for 11 years has taught me anything, it’s that I’m rarely right so why would this be any different.  :>  Oh and let me know what your app is once you get it out there!

If you read this and want more iOS related stuff, you can see all posts under iOS Apps and iOS Snippets.

Advertisements
Previous Post
Leave a comment

14 Comments

  1. Neil Schreiber

     /  10/16/2012

    Good article Scott. I have a few points to add:

    1. When designing your app approach it like you would if you were to make a TV commercial. Mobile phone screens are small, you have to keep things simple and get your message across quickly (i.e. with as few screens as possible and with intuitive flow).

    2. Storyboard your idea. You can use tools like Visio or Omingraffle or just do it on paper but go through the complete exercise of sketching every screen that will be in the app and understand the transitions.

    3. For testing make use of ad hoc distributions. You can easily build your own Over The Air distribution mechanism or you can use a solution such as TestFlight. You can setup up to 100 testers using this approach. You definitely want to take advantage of that and thoroughly test before deploying. There are a lot of apps out there that don’t do this.

    4. Build in the ability to monitor your app. You can use a variety of approaches. If your app relies on some kind of server make sure you are logging all transactions between your server. Include information about which phone and user sent commands. It’s helpful to include things like the device type, it’s OS version, your app version and anything else that helps you figure out who is doing what. When you have 100’s or 1000’s of users you need some kind of mechanism to figure out what any individual is doing. Instrument the heck our of your app and servers.

    Thanks Scott, you article is helpful and should help others get started.

    Reply
    • Neil, excellent additions, thanks for adding that in, I’m sure others can benefit from this first-hand knowledge. I wasn’t aware of TestFlight, I’ll check it out. For everyone out there, Neil is a friend of mine who wrote ScoreLynx – check it out when you get time.

      Reply
  2. Here’s what Henry McGilton said on LinkedIN – “Great post on your web site, Scott. On the topic of ‘Buy a Mac’, you might note that Apple have a program selling re-furbished computers, usually at about fifteen percent discount. I got my 17-inch Quad Core i7 that way. And I also got my 27-inch Thunderbolt display the same way.” – Henry is an iOS developer in the San Fran area.

    Thanks to Henry, I should have mentioned that, it’s a great program for sure. I’ve taken advantage of it and plan to when I get my big ol’ glorious Mac monitor at some point.

    Reply
  3. No Problem Scott! Good Content.

    Reply
  4. Aw, this was an extremely good post. Spending some time and actual effort to make a
    very good article… but what can I say… I put things off a whole lot and
    never seem to get nearly anything done.

    Reply
    • Hey, thanks, glad you liked it. I’ll post another soon with some valuable lessons learned (let’s just say, I underestimated the popularity of the AppStore). Anyhow, sounds like you have it going in the right direction with your site!

      Reply
  5. Daniel Bradley commented from the iPhone Developers group inside LinkedIn. Here’s what Daniel had to say: “That’s an interesting article. I totally agree, get out there and learn. Spot on. You do however mention hiring a graphic designer though which kind of goes against the articles main point.
    If you hire a decent software dev company to do your app, they’ll sort out all the artwork, graphics, sounds, licensing etc.
    It’s just a point, I’d encourage everyone to try app development, just bare in mind it’s also about getting a product right as well.”

    Reply
    • I spoke with Daniel and let him know that he’s right. I kind of contradicted myself. Funny how that happens, but he’s correct. Anyhow, I do appreciate him pointing that out as well as his comments about a decent software dev company. I just wanted everyone to see his comment vs. having it solely hidden within LinkedIn.

      Reply
  1. Write Your Own iApp (Part 2) « about ss
  2. Cameras Take Pictures « about ss

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: