I often get asked how to get started in iOS Development. I thought i’d try and get it written up and posted as a blog post incase it’s helpful for anyone. I started writing it and soon realised that it’s more of a “How I got started in iOS Development”, that said I hope it’s helpful to anyone who is thinking of diving into the world of iOS.
Everyone has their own prefered method to pick up new skills, you might night find my method as useful as I did/do. But I hope it is still useful to you in someway.
I’ve not sat down at length with a book to learn Objective-C or iOS, nor have I undertaken weeks or months of training although sometimes I do wish I had done. Most of what I know has been self taught over the years.
I’m a firm believer in learning something by actually doing it. It seems I’m more of a practical learner. Years ago I learnt HTML/CSS by being persistent & doing my best to complete a basic layout. Since then I have moved on to PHP and now Objective-C. All of these picked up using the same “Learn by Doing” technique.
On the rare occasions you stop and look back it’s a great feeling when you realise just how much you have learnt along the way, from no knowledge at all to being able to build templates, themes & apps.
I started working with iPhone apps when a client wanted an app to display information from their website on the move. Up until this point I had no prior knowledge of Objective-C or iOS Development. The App Store had only just been announced and everyone wanted to be a part of it.
Going from nothing to a working app for a client was pretty daunting. After 2 days of watching and taking in someone elses code I was left to continue to build and finish the app. After a couple of months of dipping in and out of the project the app was done and was fully functional and after a couple of days it hit the App Store.
The project was completed, but I wanted to do more. I wanted to learn more and start building my own apps. Each time i’ve found myself learning lots of new things with Objective-C and iOS has been when i’ve been working on a real project so I started working on Magic Bean. It would allow you to keep up to date with your beanstalkapp.com account on the move and allow you to deploy websites from your phone.
I had a project to focus on in my spare time, evenings and weekends. I set up a new Xcode project and set about working on the app in the latter part of 2010. It was alot more complex than the app I had created previously. Lots of API endpoints to interact with along with storage of login details and posting deployment requests to Beanstalk’s API.
Like many others when faced with a new language i’d more often than not find myself stuck, trying to figure out how to perform a certain task. Like saving user accounts to the device within the keychain. When I hit brick walls like this I’d usually find myself on various websites, most of the time i’d be on Stack Overflow or a site with a tutorial. Even to this day Stack Overflow is probably one of my most visited websites while finding the best solution to a problem.
Visiting GitHub and finding other peoples code before tearing it apart to find out how they do something specific is also a great way to learn new techniques. Obviously to do this you need some basic understanding of Objective-C.
Magic Bean was completed after a couple of months of development and hit the App Store shortly after. But you’ll find the learning process doesn’t stop at one project. Magic Bean saw a few updates before I started working on Buffer for iPhone. Version 1 provided a steep learning curve with lots of elements of Objective-C and iOS that I hadn’t touched on before. This has been a reoccuring trend with the same happening with Buffer for iPhone version 2 and more recently Globbert. You’ll pick up new techniques with pretty much every project.
It’s the reason why i’m now revisiting Magic Bean to develop a Version 2 to make use of all of the new skills i’ve learnt since its launch. Something i’ll be discussing more in a future blog post.
I have been recently applying this same technique to picking up the basics of Android development. We recently added the ability to schedule Native Retweets from Buffer. They are displayed slightly differently than normal updates showing the original authors avatar along with the tweeted date & time. I had got them displaying nicely within Buffer for iPhone and after a few days I had them displaying nicely within our Android app. Up until this point I hadn’t had any experience with Java or Android development.
As I mentioned earlier everyone has a different preference to learning new things, personally I find doing new things more rewarding than sitting down and reading a book. It doesn’t neccessarily mean you won’t mind me reading a book on Android development though, in fact you would have seen me doing just that this week. It’s been a great way to pick up some of the terminology that differs so much to that of iOS development.
If you have any specific questions feel free to post them in the comments or drop me an email via my contact form. I’d be happy to answer any questions you have.