UPDATE: If you’re interested in coding iOS apps, I would also recommend you check out my other article, How to Build Your First iOS App in 30 days, as it’s a bit more detailed.
In this Month’s Side Hustle Spotlight, I’m going to discuss iOS development. It’s near and dear to my heart as I’m a huge tech nerd in my day job. If you have a pulse, you know what Android and Apple devices are, and you’ve probably got apps loaded on your device(s) created by people just like you and me. For many people, developing an app is almost magic – nobody understands it, nor do they try. I’m here today to tell you one simple truth:
Making Apps is not hard.
Let that sink in. It’s true. Making apps is not hard. It does take time, but here’s the really cool part – once you make your first app, the second gets exponentially easier as you now know the core technology behind the app. I went from zero experience making iPhone apps to my first app in about 2 months. I ended up not submitting it to the store because I got far enough that I wanted to fine tune it a little before submitting, so I’m hoping to post it to the Apple Store in the next month or so. In the time between knowing nothing, and finishing (or nearly finishing) my app, I’ve come a long way.
Why Apps Are Awesome
Passive Income. Enough said! The beauty of the app store is that you have a massive global audience – a captive audience. People constantly browse the app store looking for their next app to make their lives easier, kill time, or whatever. With the app store, you have a couple of models for monetization: free with ads, freemium (in-app purchases), or paid. Games seem to do pretty well with the free with ads or freemium models. Reference and educational apps often are paid, but there’s no rigid rule here. Either way you monetize it – the point is, you’ll make money while you sleep.
How much Money? It varies entirely. Some app developers have reported making thousands a month, while others make $2-5/mo. If you balk at the idea of $2 a month – don’t. Your first app (or two) should suck. We should all strive to develop quality apps, but the reality is, some people go for quantity over quality, and still manage to make a living. Could app development replace your full-time job? Absolutely. Games always do better (think Angry Birds and their ~$200M income), but there’s plenty of niche’s to be explored in the app space as it relates to non-game apps.
How to Get Started
When it comes to learning how to make apps for iPhone, there’s a couple of things you need to understand. They are:
- Object Oriented Programming Basics
- A Programming Language (Swift or Objective-C are your options for iOS programming)
- iOS specific tools (Xcode)
Let’s go down the list and discuss each one.
Object Oriented Programming (OOP)
In programming, there’s a couple of schools of thought as to how you structure your application. Those are: Procedural, and Object Oriented – also known as OO. Procedural is a bit more old school, and is basically as such: the program executes from top to bottom, in order, and all the code is laid out in order (more or less). In OO, you create objects (think a bicycle) – where you define the attributes, and responsibilities of said object. It’s a more modular approach than procedural, and is basically the norm these days.
For some great OOP resources, check these links out. Don’t be worried if you don’t understand everything right away. It won’t stop you from coding. You do need to build a foundation of these topics and at least grasp the basics to begin with though:
Swift vs. Objective-C
The programming language you select is actually what will allow your app to do things. If you want to load data and display it on your app, change the background, or make things happen – you’ll need to code in your choice of language.
I’ll keep this simple – Objective-C is a spin-off of the C language, which has been around a while. It’s a solid language with a ton of articles on it, but it’s also tough for beginners. I have done some basic programming before my Apple journey, and I still think Objective-C (or Obj-C, as many call it) is hard. Swift is a newer language developed by Apple, that is much, much easier. Swift essentially abstracts a lot of the underlying work (such as Memory reservations, garbage cleanup, etc) – which lets you focus more on the ‘doing’ part of your app. I’m sure there’ll be some veterans out there who disagree with this, but I’m writing this for people who want to get a quick win on their first app.
Moving forward with Swift, there’s only one reference I give to my friends and colleagues. It’s the Official Apple Swift page. I would read it top to bottom, and then bookmark it.
Xcode is the Apple-specific Integrated Development Environment (IDE) that allows you to create iOS apps for iPhone, iPad, or basically iAnything. You’ll do all your coding in there, and your GUI layout as well. As a still semi-recent newbie to Xcode, I gotta say – I love it. I have used the Eclipse IDE for Android applications in the past, and Xcode is leaps and bounds better. The only drawback? You need a Mac to use Xcode. You can download it for free in the apple store with your Mac, assuming you have one. Check out this screenshot of my Xcode environment (this is with my actual App opened up in the environment).
To learn Xcode, I have one serious recommendation: Use this Apple Swift Tutorial. I would recommend going through 100% of the Tutorial. It took me about a week, and probably 10 hours to go through the entire tutorial, but it was totally worth it. Depending on the version you code in (tip: don’t start in Swift 3.x, start with 2.x as it’s got better documentation and more people have used it) – most things in the tutorial should work. You might run into some issues, but that’s where the fun begins – you need to work through those issues and get the tutorial to run. If you can get through this tutorial, I can almost guarantee you’ll have the tools to build your first app, no matter how basic it is.
The Right Attitude
Coding apps involves lots of trial and error. Things won’t work, the app will crash, or you won’t get the desired results. My best advice is this: try harder. If you fail, keep trying. If you get frustrated, walk away and come back later. This might sound funny, but most of my problems have been solved while I was lying in bed, driving my car, or brushing my teeth. Stepping away from the computer is usually helpful, but just don’t give up on it. If you stick with it, you’ll be able to finish it.