Here at MartianCraft, we know a thing or two about app development. But we don’t just make great apps for you - we can also teach you how to make them yourself. If you’re just starting out on the journey, welcome aboard! Below is some advice for anyone wondering if app development is for them, and if so, how to get started.
This stuff is hard. But that’s OK. Most things worth doing are pretty tricky to start with. What’s important to remember is that it’s not impossible. You’re going to get things wrong, you’re going to feel dumb, and you’re going to throw a lot of work away. This doesn’t go away entirely, even after you’ve been doing it for years.
Still interested? Here’s another hurdle for you: you’re probably not going to get rich from this. Making an app is a creative endeavour, like making music or writing a book. The financial success of your project will depend largely on other people. It is possible to make a worldwide impact and a lot of money, but making an app and putting it on the App Store is a similar income strategy to buying a lottery ticket, except the odds are worse and you have to put a lot more work in.
The steady money in app development comes from other people paying you to make or fix apps for them, and having your own apps is a great way, or maybe the only way, to get started in that business.
Now we’ve got rid of the dilettantes, the first question to answer is “what should you build?”
Scratch your own itch
You need a solid and strong motivation to keep you going. This means that you need to make something that you personally want or need. Don’t try and get started by making something like a notes app or a to-do list, unless you’re absolutely obsessed with notes apps or to-do lists (we have a couple of those types here).
Instead, find something that you personally would use often. What app would solve a problem you encounter every day or make some aspect of your life easier? Is there an existing app that you use, but don’t really like? At the bottom of it all, successful app development is about improving someone’s life by allowing them to do something on their phone that sucks less than the way they were doing it before. Find your own suck, and make it better. This way you will have a full understanding of the problem space, and when your app isn’t a global multimillion dollar smash hit, you’ll at least have something that helps you.
Before you start, stop
Step away from your computer. Get a pen and paper. Draw some approximately phone-sized rectangles (you don’t need to be too accurate, since there are eleventy billion different screen sizes now). What’s going to be on the first screen that comes up when the app opens? What happens when you tap stuff? Are there more screens? How do you navigate (move around between screens)?
Apple has spent a lot of time and money thinking about these questions, and all of that knowledge can be found in the Human Interface Guidelines. (the HIG). Here is the section on navigation. For example, there are three main ways that you can change the content of the screen in an app:
- Tabs: Used in the iOS App Store, the bar at the bottom of the screen is called a tab bar and each icon is called a tab and will replace the contents of the screen above when you tap it.
- Navigation: Navigation bars are used in Mail when you select a message: you tap an item and detail about that item pushes in, and you can move up and down the navigation stack. In Mail the navigation stack contains Mailboxes -> Inbox –> Message detail.
- Modals: Used in Mail when composing a new message. A whole new screen covers what was underneath and has to be dismissed by the user.
Think about which of these is appropriate for your app. There’s great information in the HIG, which will also teach you what all the various bits and bobs that make up an app are actually called. That knowledge is vital: you can’t search online for how to populate a
UITableView if you think it’s called a “Listy thing”.
There are two great exercises to help you with this activity:
- Take an app you use every day, and make your pen-and-paper diagram of it, linking all of the screens together.
- Take a single screen from the same app and, using the HIG, work out what each thing on the screen is. Is it a button, a label, a table view? Some of them might look a little different to the examples in there, but they should do the same job. Stick with the system apps in your phone to make this task easier.
All done? Got your diagrams drawn up and labelled, knowing what each part is and does and how it all fits together? Congratulations, you’re a designer. To build the thing, you’re going to need some stuff.
You can get started coding in Swift by using Playgrounds on the iPad, which gives you access to much of the frameworks and libraries that are used to build apps, but unfortunately doesn’t let you build an actual app. Yet. So, here’s what you need to get going:
- A Mac: There’s no getting around this, really. It’s possible to develop apps for iOS on non-mac platforms, but do yourself a favour and get a nice computer. It doesn’t have to be the newest or fastest Mac. If you have to choose something to optimise, get as much screen space as possible (though some may choose to differ). It’s handy to have documentation or designs visible while you’re working so you can never really have enough space.
- Xcode: This free, enormous app from Apple is where you will build your application. It’s incredibly powerful but this comes at the cost of quite a learning curve, particularly if you’re also learning all about development at the same time.
- An iOS device: You can get 90% of the way there on the simulator, a virtual iPhone that comes with Xcode, but eventually you’re going to want to see your work on a device. And if you don’t own a device, you’re not making this app for yourself, go back and read the first part again.
- Apple Developer Membership: You can use a free membership, which lets you put development builds on your own devices, but to submit to the App Store you have to pay.
Let’s do this
You’ve got your idea. You’ve planned how it’s going to look and work. You’ve got a Mac and you’ve downloaded Xcode. Now what?
That’s a great question. You need to find your way around three things:
- Swift, the programming language.
- UIKit, which is the name for all the pre-made components like labels and buttons from the HIG that you glue together and control using your Swift code.
- Xcode itself, which is something of a beast.
Swift itself is pretty accessible as far as programming languages go. Apple has a free eBook and associated materials designed to take you from zero to building a simple app, which covers all three of the above at an introductory level. I wouldn’t recommend Objective-C, the other supported language for developing iOS apps, for a beginner. I only ever start projects in Swift nowadays.
For feature-specific learning and great introductory material, you’re almost bound to find something on Ray Wenderlich (disclaimer: I am part of the Ray Wenderlich team), including books, videos and written tutorials. The “Apprentice” books are specifically designed for beginners to development.
For specific problems (“I’ve tried to do X but it doesn’t work because Y”) then someone has almost certainly already had your problem and has asked about it on Stack Overflow. Entering the details of your problem in the question field is a great way to clarify your thinking and it also brings up tons of suggested “similar questions”, it works a lot better than the search function, and if you don’t find anything, then your question is ready to post.
Submitting to the App Store
Don’t worry about this for now. Honestly. Get your app working first, then find a guide somewhere online. It’s not as hard as all the complaints suggest.
Getting started in the world of app development can be daunting, but there’s a whole internet of resources out there to help you along the way. Start small, build the simplest thing you can, then learn as you go. Seeing something you’ve made running in the palm of your hand is a great feeling - seeing it running in someone else’s hand is better still.