In my previous post shared a few months ago, I talked about why I started to learn how to code. If you haven’t read it, feel free to do so. Following this post, many people asked me about the ‘HOW’, so here is a second post in which I have listed and reviewed all the online courses (MOOCs) I’ve followed so far.
As I mentioned in my previous post, my learning journey started in Summer 2014, between two jobs, with what I like to call a warm uplap, an introduction to Computer Science. So let’s start from there.
Taking this first course was the perfect way to start learning from scratch at a relatively slow pace. This is a great introduction to Python and to programming as a whole. No prerequisites are needed besides maybe some basic maths. With nice and short videos followed by quizzes, Udacity’s format made it easy to power through the whole course quite quickly. With this course, I managed to build my first bot to growth-hack my first side-project (a YouTube Music Promotion channel). This project kept me busy for a little while and I didn’t dedicate more time to programming for the next few months.
I’ve always wanted to create something on my own and I had a few ideas, but they had always been buried in my hard-drive or on some post-it notes that would eventually end up in the bin. When, in February 2015, my best friend found a great deal on Udemy. We purchased our first iOS course for £9 just to see how complex it would be to start building iPhone apps. Expectations weren’t high at that time…
In this first video-based iOS course, Rob Percival teaches you how to build 15 real-world apps. He keeps the complexity level to a bare minimum while explaining very clearly and thoroughly all the concepts needed to start building iOS apps. Building clones of Flappy Birds, Tinder, Instagram and Snapchat on my first iOS-related course was mind blowing.
I started working on my first app after a few chapters with Rob. A good friend of mine has a gluten intolerance and I wanted to build an app that would reference pubs where we’d find gluten-free beers in London.
At the end of the course, I had a very ugly and very messy yet working MVP for London Gluten Free. You’ll have a preview of how it looked back then. It hurts my eyes to look at that today (see the before/after at the last section of this post).
This course is simply awesome. Mark has a consulting background and is a great teacher. He always brings it back to what’s actually needed in the real world when developing apps for clients and for yourself, whether you do it alone or in a team
This course covered some elements and concepts that had been covered by the first iOS course I had taken, but it was actually very valuable to review them to ensure I had understood them properly. Mark has a great attention to detail, and also thinks beyond the actual code by giving great design and UX tips.
I kept working on my personal project whilst taking this course. I added new features, migrated the database after Parse, the back-end solution I had chosen, got discontinued (thanks Facebook) and worked on the design.
I took this course mainly because I heard that Simon Allardice was a great teacher and his courses on Lynda were worth it. Foundations of Programming is a suite of video-based courses which cover several CS topics. I first looked at the Fundamentals and realised that this was now super easy to understand and made me realise I had come a long way. I ended up watching the whole course in speed 2x to ensure I didn’t miss any relevant information.
Next, I dived into the Object Oriented Design module which took me about 3 hours to watch. Simon explains the Object Oriented Programming principles in a very simple way. Definitely worth going through it once, either to understand more about it or as a refresher.
In this iOS Essential Training, Simon covered some additional topics that weren’t looked at in the previous courses. In addition, his approach to the core concepts is awesome. He manages to explain complex principles like the model view controller framework (MVC), the concept of delegation and the application structure and lifecycle in a very simple and visual way. Definitely worth it.
Though this module isn’t dedicated to Swift, it was great to explore for two reasons. Firstly the options we have when it comes to databases and secondly, the key elements to keep in mind when it comes to data modelling. You’ll learn about relational and nonrelational databases and get tips to plan ahead and help you pick the right architecture for the right product to scale.
This short course about refactoring allowed me to understand the process of taking existing code and improving it. It’s been an eye-opener in some cases. Simon tells us exactly what to look for in our code to make it more readable and understandable and as well as to make it easier to add new features to it. This is definitely a course worth going back to once in awhile to optimise your code base before major updates, for example.
This is an amazing course, available for free on iTunes U and on YouTube. 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 high for me. I decided to come back to it after I had been through all the previously mentioned courses and it’s been great. This course is definitely worth it.
A few weeks after I had completed the Stanford course, Mark Price released his Intermediate iOS course in collaboration with Nick Walter, another great iOS teacher on Udemy. This video-based course is the logical continuation of Mark’s first course. The topics covered bring us even closer to the real world with modules such as Push notifications, back-end as a service (BaaS) with Firebase, app monetisation via in-app purchase (IAP), advertising (Google AdMod) or Apple Pay and releasing apps to beta-testers via Test Flight.
Designing games is something I’ve always wanted to do. Though some of the previous iOS courses I had taken had sections about building games and this course, dedicated to SpriteKit (iOS’s framework for making 2D animated games) was interesting to go through. With the basics covered in this course, you’ll have enough knowledge to start building simple iOS games. To give you an idea, my friend built Stupid Bros right after completing this course.
A few weeks ago, I signed up for the Open-Source Society. This suite of 30 MOOCs with courses from the best universities basically recreates the CS programme students from the best universities in the world are getting.
Will I finish them all? Time will tell. One thing is sure, there is plenty more to learn.
Wrap up: 5 key learnings
1. You can learn anything
The internet is a true goldmine for people looking to build new skills. The only things you need are an objective, a significant amount of time and determination. In some case you will have to open your wallet to purchase some courses but think about the added value to your profile once you’ve acquired these new skills.
2. Do I need to have an idea before I get started?
Not necessarily. You will get loads of ideas on the way. That being said, it’s better to have something in mind when you start because it will give you the focus and you will have these ‘flashes’ every time you learn something that you can directly apply to your project. In some cases, learning can help you realise that your idea isn’t really achievable or needs to be slightly tweaked. You’ll also realise that every bit of knowledge acquired adds leverage to your creativity.
3. Can I do it alone?
The answer is yes, you can definitely do it alone. I’ve had the chance to start my learning journey at the same time as a good friend of mine and we’ve learnt everything at the same pace. Learning with someone brings an element of mutual motivation. Things like: “You’re 5 videos ahead … fine I’ll catch-up tonight”. This isn’t competition, rather just helping each other by keeping the momentum going. Highly recommended.
If you’re doing it alone, maintaining motivation is going to be key in the first 3 months. Past that period, the excitement of being able to build or design things on your own will help you carry on.
4. Is it super intense to manage a day job, self-teaching and side-projects?
Let’s be honest, it’s not the most relaxing lifestyle but it’s totally manageable. You need to dedicate a sufficient amount of time (especially at the beginning) to stay motivated. The key is to see that you’re making progress. And bear in mind that it’s totally ok to take breaks. I’ve taken a few breaks during the past few months, either to focus on the business side of my side-projects or simply for a week or two of digital detox.
5. MVP MVP MVP
So you’ve had this great idea for a while now and you’ve started brainstorming about your target audience, business model and all the features you need to build. All this is great, but make sure you focus on the core concept first and get out there as soon as possible with a Minimum Viable Product (MVP) so you can confront the market, get feedback from real users to help make your product better. (Think Lean).
As promised, I told you I would show you how my first app looked when I first launched it and how it looks today. Some slight improvement in my design skills too :D
A final word:
Firstly, I hope you enjoyed this series of posts. It goes without saying that some of these courses are going to become obsolete as time goes by but hopefully I will have shown to some of you that there is a huge variety of online resources that can help you learn pretty much everything you need without having to open your wallet too much.
Feel free to get in touch if you want more details or if you have any questions. I’d be glad to help you in any way. Also I’d be interested to hear about other people’s learning journeys.
October 24, 2016
Tags: #skills, #programming, #iosdeveloper