[Updated 25th Feb 2020]
It’s been 5 years since I wrote my first line of Swift. Back then, Swift 1.0 had just been announced and I was discovering a brand new world. Fast forward 5 years, I can honestly say that Swift has changed my life.
Looking back, I realise how much teaching myself how to code was beneficial to my career, the way I think creatively about problems and how I run my App Business today.
First of all, Swift helped me land a job at Google. With a background in digital marketing and consulting I wasn’t, on paper, the most attractive candidate for a job at Google Play which would require to talk and advise the top Android developers out there. Learning to code was definitely the one thing that helped my resume stand out and get hired for this position. Even though I didn’t write much code during my time at Google, understanding how developers think and work was key to suceed in this role.
Swift then helped me to build my own portfolio of apps and every step of the journey has been full of discoveries, learnings, challenges and ideas. Today, I pay the bills writing apps in Swift and my life would be totally different if I had made an other choice back in 2015.
Since this is one of the questions I get asked the most, I wanted to take some time to write this blog post and discuss how I would go about teach myself iOS development today if I was to start from scratch all over again.
Back in 2015, I had never opened Xcode, I knew nothing about mobile development and had absolutely no idea how mobile apps were built. I had just given up on my good old Blackberry and had gotten my first iPhone 5.
I had no design skills and all I knew about the mobile industry was limited to a handful of apps I was using on a daily basis.
Code wise, I had failed a few courses at University and in the summer of 2014 I had taken a CS101 Course on Udacity that taught the basics of programming (if/else, loops, etc) using Python.
I guess it helped speed up the beginning of my Swift journey since I knew some ‘basics’. That said, I think that someone with zero programming knowledge could totally learn the fundamentals directly with Swift. The same core concepts apply to most, if not all, programming languages.
We’re not lacking resources today. There’s actually so much out there that it can be hard to figure out where to start. Let me try to shed some light on what I would do if I was starting today. Here is my suggested roadmap for complete beginners, split into 4 phases.
You’ve never written a single line of code in the past? No problem, Udemy got you covered. Zero programming knowledge required for this one. All you need is a MacBook that can run Xcode. Angela is super dedicated to bring you the best of what iOS has to offer and will take you from understanding the core concepts of programming with Swift to building more than 20 real world apps. You’ll learn core concept of app design and app marketing.
I will not recommend you finish this in a set amount of time because we all have different lives and we all have various amounts of free time. My only advice is as follow: once you start, don’t stop until you’re through with it. Try to dedicate time every day, even if it’s only one hour. Consistency is key. It will be difficult and confusing at times, that’s expected. The difference between those who will succeed and those who won’t lies in these tricky moments where it’s hard and you have to keep pushing.
If you don’t understand something, re-watch the video three times, Google around to learn more about a particular concept. It’s totally ok to pause the course and make sure you understand something clearly before moving forward.
Ready to jump in? This way.
While you’re taking this first course, start thinking about problems you personally face every day or regularly and ask yourself if there’s something you could be build to solve these problems.
Trust me, you will not feel ready, you will feel uncomfortable, you might be scared. Your brain will try to tell you that you should wait. It’s all normal. I went through this weird phase too. Just… don’t wait.
These are defining moments in your journey. It’s these small actions, pushing yourself when things get hard or uncomfortable, that will really shift the dial and help you reach the next level.
Don’t worry if you did not find amazing ideas from the get go. Creativity takes practice. Just start working on any app. A small weather app, a to do list, a wallpaper app, it doesn’t matter. The key is to expose yourself to code issues you’ll have to solve on your own.
From the concept you selected, turn the idea into a problems and break each of them down into smaller and smaller problems until each task is so well defined that you can just turn it into a quick Google search that will lead to documentation, blog posts, tutorials or other courses.
Imagine you want to build a app that references tennis court sites around you. That’s your concept.
Step 1: Where do I find the data? Solution: Start googling around for an API you can tap into. You will want to validate that you can actually find the relevant data to build your app. If you can’t, that’s a deal-breaker and you might as well change idea before building anything that would require you to create a database manually (because trust, I’ve been there, that’s a massive pain). This could be helpful: check this out
Data is flowing: check this out
Step 2: How can I access this data? Solution: Perfect, there is a detailed URL you can query to fetch the JSON on that same website. https://opendata.dc.gov/datasets/tennis-court-sites/geoservice
Step 3: How do I parse this JSON into Objects to display them on a map? Solution: Sounds like this one could be useful: https://www.hackingwithswift.com/read/7/3/parsing-json-using-the-codable-protocol
Step 4: How do I display dots on a map in Swift? Solution: go back to your first course or look for a tutorial, there are tons out there.
When you face a problem that seems too hard for a single google search, break it down further.
Now go on, you’ve got a lot of reading and search to do.
Leaving the indie development route aside for a moment, for most of you out there, becoming iOS developer will mean applying for jobs at big companies or startups and get hired as a junior iOS developer. It’s great to have a small portfolio with 1 or 2 app(s) before you start applying. Ideally, ship them on the App Store or at least keep them in GitHub repositories that you can easily share with recruiters to showcase your work.
To become job-ready, you now need to practice the classic take-home project that most companies will ask you to undertake as part of their hiring process. I went through this myself a few times and here is the only course I can recommend.
Sean Allen, who no longer needs an intro in the iOS community, recently released his course: iOS Dev Job Interview Practice - Take Home Project which is fully dedicated to helping you get interview ready.
Sean reached out to me asking for some feedback so I went through the videos myself and I can honestly say that is it golden. He goes into a lot more details than what recruiters will usually require so it’s your one-chance ticket to really impress during the interview process.
This course is clear, well paced, and super in depth. Sean has a great eye for design so you’ll also learn about UI which is a big plus. It uses 100% programmatic UI which is a huge advantage in my opinion. If you understand programmatic UI, Storyboards will be a walk in the park. But since you can’t know for sure which approach you’ll be asked to take during your take-home projects, getting comfortable with the harder one seems the logical thing to do so starting with programmatic UI is definitely a bonus.
Over the last few years, I have been following Sean’s journey as a YouTuber and content creator, I also got the chance to have a chat with him on his podcast and the quality of the stuff he puts out there does not stop to impress me. This one won’t disappoint.
Little surprise: fancy at 15% discount for this course? Use this code: EDOUARD
Once you’re done with the 40+ videos in this course, you’re pretty much job-ready and you can start applying.
Now that you’ve been through all of that, your learning journey doesn’t stop there. It actually only get more and more exciting from this point.
If you got a job as a junior developer, that’s amazing, congratulations! You’re going to learn tons from your senior developer colleagues.
If you’ve just doing iOS apps on the side, you’re ready to discover more complex topics. How about building a little app with ARKit and play with Augmented Reality stuff? Yes, it will be challenging… but hey, we never stop learning and the more you challenge yourself, the easier it gets. So… keep pushing.
How about tapping into a random public API to bring a new app to life… that can also be fun and useful for many people. GitHub has a great collection of public APIs ready to be leveraged to build great apps. You can find it here: https://github.com/public-apis/public-apis
Unreleased at the time of writing, I’m super excited to look into this future edition. I had learnt so much with the 6th edition, it’s going to be on my reading list for sure when it comes out.
This is a gold mine of quality articles ranging from beginner to advanced stuff. Definitely a must read once in a while. Try to read one article per week. Knowledge influx guaranteed.
SwiftUI is Apple’s new UI framework that was announced in June 2019. Though I do not yet recommend using SwiftUI to build fully fledged apps dedicated to reach production stage on the App Store. SwiftUI has definitely a huge potential for the future. A must learn at some point in my opinion. I’ll probably get started with this new framework in a few months once I work a new small & simple apps. https://www.hackingwithswift.com/100/swiftui
Amazing collection of great tutorials for iOS development. I often refer to these when I need to do something specific in my own apps.
Careful with tutorials though. It’s very important to know when to use them or not. If you keep going through them without specific goals in mind, you will be stuck in ‘tutorial alley’ for a while. There are enough tutorials out there to keep you busy for years. While they’re great because you’re essentially coding a lot and obviously getting advices from senior instructors, the danger is coming from the fact that you never get stuck, you never really have to look for solutions to weird bugs or edges cases. That’s a problem because a huge part of what we do as developers is solving problems for the first time by researching, reading and trial & error. You only really understand something when you mess around with it yourself.
Always use tutorials as a base to build something for one of your own projects… make tweaks, change things around, combine tutorials together and come up with something you thought about. You’ll learn 10 times more by trying things by yourself than by just following the instructors.
[Disclaimer] Don’t skip this one, it’s awesome. Just pick the latest version. As off when I’m writing this, this is the one you want to look into: https://itunes.apple.com/us/course/developing-ios-11-apps-with-swift/id1309275316
This is an amazing course and it’s available for free. It is given by Paul Hegarty as part of the Computer Science Degree of Stanford University (USA). I actually tried to take this course early on after my first iOS course, but I quickly realised that both the level and the pace were way too much for me. I decided to come back to it after I had been through a few simpler courses and things started to click. This course is definitely worth the time you’ll spend on it. It’s not everyday we get the chance to learn alongside Stanford students… for free.
Until next time, happy coding!