I think I’ll always be a student. I completed my undergraduate degree (in mathematics, back in the UK) and without hesitation started a Masters degree in the US in pure mathematics. After two years delving deeper into combinatorics, I realized I still wanted to learn more. I headed back to the UK and started a PhD in Computer Science working in computer algebra: the area where math and computer science coincide (computational real algebraic geometry to be precise). I got to spend three years peeling apart all the layers of my research field and finding new and exciting things.
Nearing the end of my PhD I decided I wanted to tackle different kinds of problems: something with a bit more of a ‘real world’ feel. I therefore ended up moving out to San Francisco in September 2014 and starting work at a start-up as a full-stack software engineer. The first three months were crazy — I was preparing for my PhD viva (I submitted in July, but didn’t viva until November) whilst learning on-the-job how to be a software engineer. Somehow I made it through to the other side and could now focus entirely on my job, right?
But about a month after submitting my corrected copy of my thesis to be printed, I was itching to learn something new. I had stabilized into my role at work and had slowly realized where I wanted to head in my career: Data.
Data is a huge buzzword both here in Silicon Valley and all around the world. I don’t think there’s a single definition of what a ‘data role’ could be, and it seems everyone becomes a data analyst or scientist by a unique path. For me, I had the mathematical background and was building out the programming skills — so how could I make the leap into a data scientist role?
The path I decided on was a Udacity Nanodegree. At the time this was a new offering from Udacity with a focus on preparing participants for particular roles in tech. I saw that a Data Analyst nanodegree was being offered and decided to check it out. Ten months later, I recently ‘graduated’ from the nanodegree and am transitioning into a Data Scientist role at my company. I’m definitely glad I took the course, and wanted to talk about my experiences.
This post isn’t going to be about how similar it was to my previous education (it wasn’t) or how it can replace a degree (in my opinion it can’t). But I think a nanodegree is a great way to convert academic skills into something more relevant for industry. So I think my Nanodegree was immensely useful, and I want to share my experience and learnings.
What the heck is a Nanodegree?
I’m pretty pleased with my Udacity Nanodegree experience. […] I think it’s actually a great bridge from PhD into industry
When I talk to someone and mention that I’ve been doing a Nanodegree, their first response is usually complete confusion. That was my first response too. I’m still never sure quite how to describe it, but I usually say something along the lines of “it’s an online programming course geared towards a particular job role.”
This is fairly generic, so here are some of the things I think make it a little different: it’s project based so when you graduate you have a ready-made portfolio; all courses are graded by real people who expect you to act on criticism to iterate and improve your work; each course has an industry focus giving the work greater meaning and purpose; supplementary courses help you build out your Resume & LinkedIn profile, and prepare for interviews; and there’s community interaction within forums, office hours, and even ‘real-life’ events.
In case you couldn’t tell from that list, I’m pretty pleased with my Udacity Nanodegree experience. I feel like it has been hugely worthwhile, and has set me up well for heading down a career path in Data Science. I think it’s actually a great bridge from PhD into industry and I wanted to talk a little bit about why I think that.
Transitioning from PhD to Industry
Moving into industry you suddenly find pretty much everything has changed. […] This can be hard to adjust to, and I certainly found myself frustrated at times.
Often people struggle with the transition from a PhD into industry. I know I did. I could write a whole post just on this topic (and likely will), but it is a jarring experience at best and something that graduate schools don’t necessarily help prepare you for.
Moving into industry is often seen (wrongly so) as a “plan B” after completing a PhD. The expected route is to proceed to a couple of postdocs and then maybe get a lectureship and eventually aim for one of the hallowed tenured positions. The reality is that academic jobs are hard to get and only a third of PhDs end up becoming a researcher so I don’t think the plan B label is fair nor appropriate.
Once you get into industry there are a lot of hurdles to get through before you start feeling acclimatized. Academia is an area where you are given (relatively) free reign with your work. You decide on a research direction with your group and then you might get left for weeks or months to work independently and come up with some results. As a PhD student you have a single deadline — that happens to be about three years in the future. And your work has a singular focus that you become a world expert on — to the point where you often understand parts of the area better than your own supervisor.
Moving into industry you suddenly find pretty much everything has changed. You are expected to be a generalist, work on very specific and pre-determined stories, and adhere to a sprint that is a couple of weeks long with tasks that are expected to be completed in a matter of hours (not years). This can be hard to adjust to, and I certainly found myself frustrated at times.
One of the biggest shocks to me was a drop in emphasis on learning. For a PhD your entire focus is learning; for an industry role you need to learn what is required to complete your task, and no more. Sure, learning more isn’t going to harm your work, but it can be hard/impossible to get time set aside purely for improving your skills (especially so in startups). Learning is often just a means to an end.
So if I wasn’t going to get my learning fix from work, where would I get it? Enter the nanodegree…
What’s good about the Udacity Nanodegree?
For the Data Analyst Nanodegree this meant learning about the entire data lifecycle: from data wrangling, to exploratory data analysis, to machine learning, and finally to data visualization.
I had decided to do an online course to enhance my skills, but I took a while to decide between the plethora of MOOCs out there. Unsurprisingly, the reasons for choosing Udacity were also the reasons I enjoyed completing the course.
One of the biggest reasons I selected the nanodegree was because it is project-based. You complete a series of courses (five courses for the Data Analyst nanodegree) and for each you produce a final project demonstrating your knowledge. There are video lectures throughout, but if you already know the topics you don’t need to watch everything before starting to tackle the project (in fact, Udacity encourage you not to waste time revisiting known material).
These projects certainly fueled my love of independent learning, and each was thoroughly reviewed by Udacity staff. It is expected that you iterate according to this feedback and improve you project at least once per course. I found all the feedback to be detailed, useful, and it certainly improved my projects.
You also, by design of the syllabi, get a wide breadth of knowledge focused around a particular role. For the Data Analyst Nanodegree this meant learning about the entire data lifecycle: from data wrangling, to exploratory data analysis, to machine learning, and finally to data visualization.
Outside of the explicit syllabus, I felt that the Udacity experience also helped teach me practical skills by osmosis. You were encourage to use git/github to submit code, had to provide documentation, and adhere to styleguides to ensure code quality.
There was also a focus on employable skills and how to present yourself for the job market. Optional courses helped you improve your resume (all my previous resumes were for academic roles, so this was much needed!), LinkedIn profile, and practice interview questions. You also get a Udacity Profile where you can list your skills, education, work experience, and show off your portfolio of projects (you can check out my profile here).
Two factors that helped, in my opinion, add legitimacy to the nanodegree were the fact that it is substantial and industry endorsed. At nine to twelve months of work, with a recommended workload of ten hours a week, this would be a marathon not a sprint. But I also know that I do not learn well from cramming, and a longer education effort will hopefully pay off with a long retention of knowledge. And having courses that were created with companies such as Google or Facebook (with interspersed interviews with employees about their work) certainly adds respect to the credentials
Finally, there are all the regular advantages to completing a MOOC that have been well-discussed elsewhere: flexibility, convenience, self-pacing, interactivity, etc.
What is the Udacity Nanodegree missing?
…part of the selling point of the Nanodegree is the breadth of topics covered, however there were multiple occasions where I wanted to dive deeper into a topic and wasn’t sure the best approach.
So far I’ve talked a lot about why I think the nanodegree is a great program. But nothing is perfect, and I do think there are areas that the nanodegree is missing or could do with a little more focus on.
I mentioned that the nanodegree teaches practical skills by osmosis, but one glaring omission seemed to be code testing. None of the projects required any kind of unit testing and there was no mention of testing frameworks. Testing is also missing from a lot of acadmic work, and is one area I’ve found the most difficult to adjust to.
I could also have done with more soft deadlines so that I had a grasp of whether I was on track or not. When deadlines are separated by a few months, it can be hard to pace yourself (I realise that as a former PhD student I should be used to this but the nanodegree doesn’t have a supervisor breathing down your neck every few weeks!). Depending on the course (I think) I would occasionally get emails saying something like “by Sunday you should have compled week 4 of course X”, which were really useful motivators (but also sporadic). This goes along with the fact that it is a substantial workload that really requires you to keep on top of your work — I had a couple of moments where I had to push to meet an incoming deadline. That being said, if you do miss a deadline it seems like its only effect is to move you into a cohort.
Another issue I had with the nanodegree was a lack of depth in certain topics. I guess part of the selling point of the Nanodegree is the breadth of topics covered, however there were multiple occasions where I wanted to dive deeper into a topic and wasn’t sure the best approach. Perhaps the option to pick an elective would be a good approach: once you complete each course you can choose one of the components (data wranging, machine learning, data visualization etc) to specialize in and do a deeper dive in.
With the projects, I found a little inconsistency. Depending on the topic I felt some projects had a lack of freedom. I understand the need to limit scope to enable easier grading and feedback, but feel that at times I was sort of boxed in on my project and working towards a rubric. I would also have really appreciated a single unifying project to finish off the course. Something to put all the building blocks together. In fact, the first introductory project was close to this (a deep dive on some NYC subway data) and it would have been great to revisit a similar project after gaining all the knowledge from the courses.
It’s also worth noting that it’s not cheap. The nanodegrees are priced at $200 a month which is a hefty investment for something that will likely take you the good part of a year. Udacity offered a promotion (and it seems they still do) that if you complete the degree within a calendar year then they’ll give you half your tuition back, which is pretty fantastic. Not only does that mean you’ll get a good chunk of money back (I treated it as a sort of savings), but it’s also a really good motivator to stay on track!
I obviously want to build on my knowledge that I gained from my nanodegree, and I’m excited to be able to do this as part of my job.
Since completing my Nanodegree I’ve taken a breather from online courses (although I’m kind of itching to start another!). Instead I’ve been focusing on my job (and visa applications) and applying my new skills to projects at work. I’m happy to say that I’m currently transitioning into a data scientist role at my work, and I think that the nanodegree played a significant role in that promotion.
My next steps are a little blurry. I obviously want to build on my knowledge that I gained from my nanodegree, and I’m excited to be able to do this as part of my job. I also want to use the time I was spending on my nanodegree to contribute to open source projects. During my nanodegree I won a Udacity competition to attend the Open Data Science Conference which reminded me of the importance and power of the open source community. I think I’ll start with SymPy: a symbolic computation library for python that is closely aligned to the work I did with my PhD. Finally, I definitely want to compete in more Kaggle competitions! I can’t think of a better way to hone my data science skills than working on real problems with real datasets (in a quantifiable and competitive way). Oh, and I don’t think I’ll ever stop working on Project Euler problems — mathematics plus programming is an addictive combination.
In short, I think the Udacity Nanodegree is a worthwhile course, and has helped me transition from a software engineer into a data scientist role. I don’t think it’s perfect, and think I would have probably had a different experience without a background in mathematics and computer science. But it gave me much-needed structure in my learning and I feel like I’ve gained a strong base of skills, along with a portfolio of projects demonstrating them. Udacity offers an ever-expanding catalogue of nanodegrees from full stack developers to specialisms in data, mobile, or front-end. So if you’re looking to work on skills in a certain area, check out if they have one that fits your needs.
P.S. Google and Udacity recently announced a new course on Deep Learning that is completely free. It is about three months work (6hrs/week) and focuses on using TensorFlow, Google’s open source framework. I guess I know where I’m going to get my next learning fix…!