In 2016, I decided to dive into Android development, mostly because I try to pick up a new technology stack once a year. I utilized Udacity’s Android Developer Nanodegree program to get up to speed on Android development. and this post will be reviewing the program.
Timeline to Completion
Udacity recommends 12 months to complete the program, but this is highly dependent on many factors such as: your current level of programming skills, your experience level in software development, how much free time you have and/or willing to commit, and etc. Personally, I finished the program in a month, and this was while holding down a full time job and putting in around 2 – 3 hours per day after work on weekdays and full day of effort during the weekends. 12 months sounded too long to me to get warmed up in Android development, so I decided to zoom through the course. However, do note that this was only possible because I was already an experienced software engineer who had a few years of experience in an object oriented programming language and was already familiar with many common concepts in software development. Your mileage may vary.
Nanodegree vs Nanodegree Plus
Udacity offers two types of Nanodegree programs, the normal version and the plus version. At the time of this writing, the standard nanodegree program costs $199 per month while the plus version costs $299 per month. The Nanodegree program is essentially a professional certificate of some sorts handed out by Udacity, which is supposed to give you some credibility in the field (whether it does or not is a whole another debate). The way that the Nanodegree Plus program differs (and can justify the higher costs) is that Udacity will guarantee that you will land a job in the field (in this case getting a job as an Android developer) within 6 months of completing the program or they will refund you the tuition costs. For those of you interested in taking a Nanodegree program because you want to switch fields or you want to find a new job, the extra costs might be worth it. I went with the normal Nanodegree program because I was only looking to learn.
I’ve always been super skeptical of MOOCs (Massive Open Online Courses) in general due to the low completion rates of around 15%. A lot of these MOOCs are free and generally when you don’t pay for a class and there isn’t much of a consequence for not completing it, the motivation to do so is pretty low. But after completing the course, I do believe that MOOCs are awesome, given that you’re willing to put your best effort into it. With MOOCs, you really do get out what you put in.
The course’s syllabus is project based in that with each unit, you have to first go through a video course and then complete a project utilizing what you’ve learned in that unit. Applying what you’ve learned is the best way to learn anything so I really enjoyed the project based approach to learning. The course currently has 8 projects, with each project building upon the knowledge that was built upon in the previous project.
The course covered all of the fundamentals of Android development. Things like the difference between RecyclerView and the ListView, how to properly lay out XML views in a performant manner, how to bind views, android activity lifecycle, fragment lifecycles, android performance, debugging, responsive app design utilizing fragments, and etc. The course video content itself guides you through building a simple weather app, one that works on both on a mobile phone and also in responsive view in tablets. In the projects sections, you’ll be given specific projects to work on. In the final project, which is the Capstone project, you’ll be allowed to build whatever you want.
The course also does a good job of limiting the reliance on third party libraries to do the heavy lifting for you. For example, you’re forced to implement your own Content Providers from scratch, which is really painful to do from scratch, but it is the best way to learn how these things work.
Overall, the courses are excellent and you’ll learn a lot about Android development if you put in your best effort.
Course content vs The real world
The main thing I’ve noticed about the course, especially after working on a real world Android project, is that the way apps are built in the real world is very different than how the course teaches you to build apps. After all, the course was developed by Google, so I’m thinking that the way the course teaches you how to build Android apps is the way Google wants you to build apps.
One example is the heavy usage of Fragments in the course. Since I didn’t have any experience (aside from playing around with Android development in college), I thought that heavy usage of Fragments were a norm in the real world. Apparently this isn’t the case and that many developers despise Fragments due to their complex lifecycle and avoid using them at all costs.
Another thing is the heavy usage of third party libraries to speed up development. The course itself does a good job of not relying on third party libraries. For example, the course will write raw SQL queries to cache data into a SQLite database. In the real world however, many apps utilize third party ORMs to make caching easier.
I still think it’s important to know how things work under the hood so that you have a better understanding of how Android development works. But do know that the way apps are built in the course is not how Android development is done in real life.
I think if you’re an experienced software developer, or even a university student studying computer science and who has some programming experience, this Nanodegree program is a great way to learn Android development. The progression of course content is perfect, the projects are interesting and relevant, and if you enroll for the Nanodegree Plus program, you’re guaranteed a job or your money back.
If you do not have any prior programming experience however, I think you should learn to code first. The concepts explained in the course are not beginner-friendly concepts and will be difficult to wrap your head around if you do not have any previous programming experience. If you still want to learn Android development however and want to do some prep work prior to this course, Udacity does have a Android Basics program and even a Java Programming course. I haven’t taken these courses yet, but based on the quality of the courses in the Android Developer Nanodegree program, I’m pretty confident that the courses are high in quality.