My Udacity iOS Developer Nanodegree program review and experience.

“I really believe that we have to work hard to make online education better and better, and eventually it’s going to be really great. But like most of these things, it takes time to improve, to understand and to make things really good.”

– Sebastian Thrun


My Udacity experience began in January 2017 and have been very challenging ever since due to having never been exposed to Object-Oriented-Programming. I have only been exposed to HTML, CSS and a little JavaScript so you can imagine how hard it was to learn iOS development. Other than getting started in programming, my goal was to get my feet wet in the industry, so I enrolled in the iOS Developer Nanodegree Plus program. By enrolling in the Plus program, Udacity guarantees employment within 6 months after graduation or you get your tuition 100% refunded. Here’s my brief review on the Nanodegree program.

The Plus program is $300/month and takes around 6-12 months to finish, depending on your prior experience and how much time you dedicate to the program per week. In order to graduate, you must complete 5 portfolio-worthy iOS apps and also finish the Career courses in the program.

For a  complete overview of the program, check it out here: https://www.udacity.com/course/ios-developer-nanodegree–nd003.

The following information is written and valid for the program as of August 29th, 2017. The program has two sections: Core Curriculum and Extra Curricular. Finishing all modules and classes in the Core Curriculum is required for graduation. Extra Curricular classes, on the other hand, are optional but strongly recommended!

Core Curriculum is split into 9 sections:

1. Welcome to the Nanodegree:

Udacity introduces the program with an overview of the course and direct students to the classes based on their prior experiences. Students with no experience will be required to take the “Swift for Beginners” class in the Extra Curricular section, and “Swift for Developers” for those who have experience in programming. They focus on basic programming concepts from variables and types, to functions and closures. The section ends with Udacity showing their Career Services support.

The Swift class teaches you Swift syntax and basic programming terminology and concepts. The video lessons are recorded at 2-5 mins in length and are fairly interactive with quizzes at the end of the video – You can’t learn how to program just by watching videos! -. If the information in the video is outdated, there will be a note under the video indicating the changes required.

2. Intro to iOS App Development with Swift:

Udacity introduces iOS Development with Swift and the Xcode IDE. A tour of Xcode is provided and later, first project app is introduced along with the MVC pattern. After the tour, the Storyboard is explored more deeply with AutoLayout and Buttons and how they are used on different view controllers. The AVAudioRecorder is introduced to be used in the first portfolio app along with iOS concepts such as delegation, extensions and more.

The first portfolio project is an app that records a conversation with you and a friend and plays it back to make you sound like a chipmunk or Darth Vader. It focuses on implementing AVFoundation and adding a few buttons with proper constraints. This was a very easy project as the instructors of the course will go through the major functions of the app with very little left for the student to do. The main thing students will have to worry about is AutoLayout and making the app presentable and functional for all screen sizes.

3. UIKit Fundamentals:

This section involves playing more with the Storyboard! From IBOutlets, Segues to Table Views, this section will teach you one of the most important skills in building apps, which is dealing with the user interface. You will build your second app called MemeMe 2.0 which involves creating an app that enables a user to take a picture and add text at the top and bottom to form a meme. The user will be able to also share the photo on Facebook and Twitter and also by SMS or email.

By completing this app, I have learned a lot about UIKit and how an iOS app comes together. You learn many different features while building this app, such as implementing Table and Collection views, working with text fields and their delegates and how to share saved image models to others. I think the hardest part is the concept of Notifications and how they work to move the screen up a certain height when a keyboard is active to avoid hiding the text fields of the meme image.

4. Network Requests and GCD:

A very important section as iOS developers will often be interacting in some way with the internet. You will create your third project called On the Map, an app with a map that shows information posted by other students. The map will contain pins that show the location where other students have reported studying. By tapping on the pin users can see a URL for something the student finds interesting. The user will be able to add their own data by posting a string that can be reverse geocoded to a location, and a URL.

To me, this was the most challenging part of the whole program; networking and working with APIs. This will show your true skills as an iOS developer as this will involve deep knowledge of Swift programming. I learned a lot about networking and how requests are made between clients and servers. This class focused a lot on the basics of computer science which is why I found it very difficult from time to time, as I have not learned this before and suddenly learning it from a boot camp sort of way. In addition to making requests, I was also learning about web APIs, JSON Parsing and the importance of The Grand Central Dispatch and Queues. iOS concurrency and queues are extremely important in any software development and iOS no different. To build fast and reliable apps, being able to work between the main and background queue is important for the best user experience. After learning the syntax and how the code works when working with APIs, I learned how to improve this code structure using the MVC design and how to organize the app neatly by separating networking code into its own Swift file.

5. Data Persistence:

What happens when you want to store data locally or if you need to persist data? Core Data is the answer! In this class, you will learn about data persistence and how to store data in the app’s local database by using a Core Data model in your app. This will allow you to store but also retrieve data even if you don’t have an internet connection. You will build your 4th project called Virtual Tourist, which allows you to download and store images from Flickr, based on a dropped pin location on a map.

As with networking, Core data was also a tricky topic and quite a hard framework to learn for absolute beginners. I was learning about the Core Data stack, how to create a model and how to manage model objects by storing and retrieving from the data model. I also learned about concurrency relating to Core Data and how tasks can run in different queues in a safe and efficient way. Storing media and retrieving it later from Core Data is an essential skill for any iOS developer and Udacity have made many skits on their own to teach students Core Data in an engaging manner.

6. Final Project:

You’re in charge! This is your chance to let your iOS Developer skills shine! For this final project, you’ll design your own iOS app, taking the design from drawing board to App Store.

I believe out of the 5 portfolio projects, the final project is the most valuable learning experience. For the first 4 projects, you are taught and given much information to building the portfolio apps. Many students have created the same apps and you can get a lot of help from Udacity’s help forum or even on GitHub. However, for the final project, you’re on your own. I was able to build an app on my own, with my own idea. I was able to plan out the user interface, manage the Core Data stack, and decide which API to interact with and with full control. Because of this, I learned a lot more and had a better understanding of the concepts required to build the app since there were no specific guidelines I had to follow.

7. Career: Job Search Strategies:

Since I was enrolled in the Plus program, I am required to finish the next few Career courses in order to graduate. This section focused on writing out my resume and had to fulfill many requirements in order for my resume to qualify. Udacity provided many tips and suggestions for me to write a well polished and updated resume for my job search. I also had to write a Cover Letter that was catered to a specific job I wanted to apply to. From the overall user interface to the quality and content of the Resume and Cover Letter, Udacity was there to make sure you were ready to apply for jobs as an iOS Developer.

8. Career: Networking:

Networking is undoubtedly one of the most important things you should be doing while looking for a job. Here, Udacity checks for your online presence and helps you create and polish your LinkedIn, Udacity, and your GitHub profile. Everything is checked closely, from showcasing your projects to structuring your content, Udacity will help you maintain a presentable profile and to have an online presence.

9. Career: iOS Interview Practice:

The interview is probably the most daunting part of a job search. Udacity knows it. That’s why they are there to provide several tips to ace the interview such as answering behavioral and technical questions. At the end, you are required to go through an iOS Mock Interview, which is just answering several questions that may come up during an interview, whether it may be behavioral or technical. You submit your answers in pdf format and writing at least 2-3 paragraphs per questions so you are not interacting live with a Udacity employee. This is something I believe should be done with a Udacity employee. By interviewing live and with an actual person, the practice and experience are even more valuable as opposed to just submitting an essay where you have time to think and structure your answers and you are not under any pressure.

Final thoughts / TLDR:

I started this program in January 2017 and graduated in August and currently in the 6-month job searching period. I started with nearly 0 programming experience. Udacity teaches many concepts very well and has a pleasant website to learn in. Their lectures are straight to the point with frequent quizzes and lecture notes to help reinforce learning. You will learn the core skills of iOS development: UIKit, API networking, and Core Data. From time to time, you will be exposed to a few frameworks such as AVFoundation, MapKit, and Core Location.

Now is it worth it? Depends on your goal.

If you are just trying to build apps and learn about the platform, there are TONS of free options that are really good, especially on Udemy. The only part that I found useful and worth learning from Udacity was their API networking class. This class was very well structured. Not only was it taught well with their lectures, they focused on how to implement networking code to follow the MVC design pattern which is extremely important in iOS development. So if you are not desperate in looking for a job, don’t take Udacity. It is ridiculously expensive at $200 for the basic program or $300 for the Plus program.

So why should you take this program? If you are looking for a job.

The reason you would take this program is that you need the help and are trying to step into the tech industry with guidance. Career services are always available to you and the Udacity staff are there to help you at all times. If you have any questions about what you are learning or a current project you are currently stuck in, you can easily access their forums and many mentors and other developers will be there to help you. Every project you submit will be reviewed by the Udacity team and will receive great feedback such as suggestions, required changes etc.

Ultimately, if you want the credential, have your projects reviewed and have access to career services, then go for it. If you just want to learn? No way. You can learn everything Udacity offers, for free on other platforms.

This is my one tip I can give everyone: Learn everything or as much as you can for free first! Their courses are free! Don’t start paying right away when you have no prior knowledge. Programming takes a long time to learn and to become familiar with, so if you start paying at the beginning, you are essentially paying hundreds per month just to learn the basic concepts when you can do the same for free. Paying monthly is mainly for code reviews, having access to mentorship and career services.

Leave a comment