My Android Developer Nanodegree Experience

I officially finished my Android Nanodegree at the end of August, since MOOC like a Nanodegree is still kinda new, so I decided to share my experience with people who are thinking about getting one or people who are trying to get one.

Lil' Me

A little about me first, I just finished my senior year in CUHK and waiting to get my Bs. in Computer Science, currently I am a web developer in a UK-based startup called SnagR. I'll tell you more about me later, but that's all you need to know for now.

Before Enrollment

I heard about Udacity from a classmate when I was an exchange student in University of Washington last summer (right after I had spent a year working in ASM as an intern). I tried a few courses and found them practical and fascinating, besides, I always felt my college education being too theoretical and I always ended up teaching myself everything. Therefore,  I decided to enroll after finishing the Birthday Card app from Android Development for Beginners.

Approach

Project 1 & 2: Popular Movies

Stage 1 deadline: Nov 2, 2015
Stage 2 deadline: Dec 14, 2015

I submitted the first project Popular Movies Stage 1 pretty much right after I enrolled as I already finished the Developing Android Apps course. School hadn't started yet so I could spend as much time as I wanted on it. I had to admit that at the time, I didn't fully understand all the topics the course had covered. I was pretty lost at the part where they talked about SQLite. However, I sensed strong similarity between the Popular Movie and the Sunshine app, therefore, my app wasn't something started from scratch but a modification from the Sunshine app. And that also explained how I finished Stage 2 so fast in mid-October. Yeah, sneaky, but it worked.

Since I finished this app really early, I could press pause and focus all my time on my college study and final year project for the rest of the semester, which also required me to write apps.


HKTrafficMap

I had taken a Mobile Computing & Application Development course (Course code: CSCI3310), in which I had to write an iOS app, an Android app and a cross-platform app using Lua for assignments. Simply speaking, I had to learn everything in three months, exciting huh? And the prof only talked about the theoretical stuff and left every practical thing to the TAs, and for each topic they only had two tutorial sessions to cover everything. As you can see, the whole course was a total train wreck. For the Android app, I had to pin the road traffic images from the Government onto Google Map with voice output. Thanks to Udacity, I managed to finish the app in six hours. 



Cardboard

I had also taken a course about Computational Photography (Course code: CSCI3290). The final project was to design an Android app so we could have a little VR experience. I had covered everything in this blog post: link


Project 3: Super Duo!

Deadline: Feb 15, 2016

I resumed my study in Udacity when I was done with all my finals. Instead of watching the lecture videos on weekends, I usually downloaded them all into my tablet and watched them in the MTR (the railway system in HK), saving the weekends for coding. Therefore, I was totally lying my ass off when I said I could work 10-20 hours a week in the Udacity pre-enroll survey.  

I started working on Alexandria (a book listing app that can scan barcodes) in early January when I finished the course Advanced Android App Development. All I needed to do was fixing the bugs and adding the barcode scanning functionality. Easy peasy, pretty much the app was writing itself when I figured out how to integrate the zbar library into it so user can scan barcode without using a separate app. 

The Football Scores is a little bit more tricky as it required me to create a widget. Again, I saw similarity between it and Sunshine, so I also finished it pretty quickly. I actually spent more time finding icons for the football clubs. I finally submitted both apps on Jan 24, 2016.

Source code (Alexandria): https://github.com/kevguy/Alexandria
Source code (Football Scores): https://github.com/kevguy/FootballScores


Project 4: Build It Bigger

Deadline: May 2, 2016

I had more than three months to watch the lecture videos and finish this, seemed like it. However, my finals started in April so it was actually two months. I had already detailed my steps in this blog post: 

Anyway, I managed to finish it in mid-March.


Project 5: Make Your App Material

Deadline: Jul 4, 2016

That was the most boring assignment I had finished. I always found modifying the layouts of Android apps a pain in the ass. Full disclosure, I didn't finish all the videos in Material Design for Android Developers as I didn't really have the motivation for the topic itself. The tutors had already done a decent job but I just really hated Android material design so much. Therefore, I completed all the requirements accompanied with a lot of web searching and 'Stackoverflowing'. 



Project 6: Go Ubiquitous

Deadline: Aug 1, 2016

I finished this in two days because Android Ubiquitous Computing has pretty much covered everything I needed. That was the first time I had to use an emulator. Man was it slow. 



Project 7 & 8: Capstone - MusicRecog  

Capstone Stage 1 Deadline: Aug 22, 2016
Capstone Stage 2 Deadline: Sep 19, 2016

This is the part where I had to implement an idea of my own. Stage 1 required me to write a proposal about it, but I had already been planning the implementation way before that. Therefore, when I submitted the proposal, I already had done a lot of research and gathered what I needed. I officially started working on the app in early August. What I basically did was integrating Gracenote's Android SDK into my own app, wrote a lot of network requests to query information from Spotify's Web API and LyricsChart and stored the info using a Syncadapter. I wasted a lot of time trying to use Echoprint (another music recognition library, acquired by Spotify) instead hoping I could use services from Spotify as much as I could, you know, to make things as consistent as possible. I tried to build some jnilib but to no avail. Also, Spotify's Android SDK didn't offer most of the service I needed, query audio features, for instance, so I had to settle for its web API. That's why I had to write so many network requests. Additionally, I integrated AdMob and Identity services into it. I decided to run away from material design for as long as I could. Eventually, the layouts of my app were so messed up that I finally had to ask for some one-to-one coaching through Udacity. The coach did a really good job helping me pinpoint the problems and fix a lot of them. A big shoutout to Mr. Ashesh Bharadwaj!

It took me almost a month to finish it. I spent a week focusing on the skeleton of the syncadapter and the network requests. I spent the next two weeks having fun in London and Paris, but I still managed to finish the network requests part in the hotel rooms and on the planes when I wasn't watching Mr. Robot or Parks and Rec. When I came back to Hong Kong, I spent all the office hours dealing with Gracenote's SDK and Google's Ad Mob and Identity when I wasn't helping my former colleagues tracing bugs or explain the code I wrote (I resigned at the beginning of August, I could do whatever I wanted). I managed to finish it near the end of August, which concluded my study for the Android Nanodegree.

Source code: link

Is It Worth It?

It depends. First, I really learned a lot this year. If I had to choose between Udacity and my own college education, I would choose Udacity without a blink. You know, sometimes when you are bored during lectures or classes, you'd wonder if what you learned actually helped you in any way or you would ever use it outside of the classroom. That's not the case in Udacity. The materials they covered are much more practical and you can actually apply those skills into real world. As long as I finished enough lecture videos, I could get my hands on and build something on my own. And these always give you something lots of colleges usually fail to provide, a constant sense of accomplishment (Don't get me wrong, CUHK is still a top university). Thanks to Udacity, I kept my passion for coding and always am eager to learn more, and share what I learned with others. If you wanna learn something practical and build your own stuff for some show and tell, Udacity is the way to go.

However, if you actually want to look for a job, or even want to work in Silicon Valley, you still got a long way to go buddy. Engineers are really in demand in the States, that's why the Nanodegree Plus thing works. However, a Nanodegree itself is not enough for you to be hired in Silicon Valley, there're a lot of factors to be considered besides a Nanodegree, like your GPA, which college you went to (especially which college you went to, I don't support this, but that's just the truth), how many projects you worked on. Also, every place across the world hires differently. But Udacity definitely can help you get one step closer to your goal.

It's time to tell you more about myself. First, I'm now working as a web developer, not a Android developer, exhibit A. For this whole year, I was only contacted by a recruiter through Udacity once, and guess what? He wanted me to write C/C++ instead of doing anything with Android. Therefore, I don't think Udacity's talent search helped me much. But Udacity's career support does help, a lot! 

I started applying for jobs during the career fair in CUHK in February. I only applied for five and got offers from three. Unlike the US and European countries, people in HK don't really give a crap about engineers from most fields, especially computer guys. I even met people who thought IT was mostly about support, double-clicking Setup.exe and unplug and replug printers. Whenever lay-off happens, we're usually the first ones who bite the dust. Yeah, you heard me, Cathway Pacific. So I already considered myself lucky that I could still choose a job. And how did I get those jobs?
  1. I went to CUHK. If you're from CUHK, HKU or HKUST, job finding is always much easier than others in HK.
  2. I included two projects I did in Udacity in my resume. Therefore, I had 'project' experience.
  3. I had internship experience (ASM) and I was a part-time coding tutor for Microsoft. So I had 'job' experience.
  4. I went to UW for a summer. I had 'exchange program' experience.
This analysis is extremely shallow, but believe it or not, very close to the truth. Why? Majority of employers in HK don't know how to hire an IT guy. In most interviews, they'll just look at your resume and found the four things I listed above. Their interviewing questions are textbook twattage. Their coding tests are LOL. And worst of all, they always think you need the job badly. However, there are still some interviewers who really know their stuff and are always enthusiastic to share more about their work. It does happen, but not very often.

My first real gig was working as a web developer in a company called FoxGlobal (don't Google it, don't waste your time) in May. Spending a week there I found I was tricked into writing PHP and everything was not challenging enough. At that time, I had a Udacity-approved resume and LinkedIn profile, so I decided to set up a profile on JobsDB and see what would happen. In April, they already helped me get some internship offers from some startups in San Francisco (J-1 visas made me back off), so I knew I definitely deserved better. And four days later, I started to get my first phone call from a recruiter, and another, and another, and another, and numerous interview invitations from different companies. In the recruiters' opinion, what I had was a well-written resume, and most of them asked me if I had help. Of course I had! Long story short, right now I'm working in SnagR as a UX Developer. 

Why I'm not an Android developer now is because most of the employers here either want people to work on both iOS and Android or work on middleware like Lua instead. It's probably not Udacity's fault, but more like the difference in demand here. But my passion for Android is still there. In retrospect, I couldn't have reached where I am without Udacity.  And Udacity has tried their best to boost your career and made sure you are on the right track. Therefore, when you are deciding which Nanodegree you wanna go for, think seriously about which career path you're opting for, and also consider how the industry is in your place. When you're pursuing the Degree, explore more when you have the time. I wish I could get more outta it, but I didn't have the time (therefore, don't copy my code, they are terrible and hacky). 




Kev
My Android Developer Nanodegree Experience My Android Developer Nanodegree Experience Reviewed by Kevin Lai on 3:05:00 AM Rating: 5

6 comments:

  1. This article is very much helpful and i hope this will be an useful information for the needed one.Keep on updating these kinds of informative things Android online training .

    ReplyDelete
  2. As a leading Top Mobile App Development Company in India, Appsinvo company is well known to design and build customized web and mobile app solutions for the clients. Complete integration of the mobile app and the website gives the businesses a boost not only in their growth but also in the revenue.
    Top Mobile App Development Company in Mumbai

    ReplyDelete

Powered by Blogger.