neural-network.png

Introduction

If you're reading this, you're likely interested to read about my experience transitioning from Software Development to Machine Learning to inform whether it's something you should consider. I'll share why I decided to change paths and the steps I took to do so hopefully you will feel empowered to make the move yourself.

TLDR: I did online courses which gave me the confidence to go back to university, after which I landed a ML research engineer job.

Finding the confidence

I had been meaning to learn more about AI. I'd watch amazing products being released which boasted that they were "powered by AI", but I knew very little about it... other than that it was going to be cause of our species' downfall, of course.

I was a Software Developer for 3 years and now I'm a Geoffrey Hinton clone, with a herd of autonomous bots at my fingertips. In reality, I'm building machine learning based applications for a company called Speech Graphics in Edinburgh.

If you take one thing from this post, it's that developing the confidence to take steps towards working with and understanding machine learning was the most important part of my experience. At first I thought that it was reserved for PhD graduates and a someone like me would need to wait until we can upload knowledge with a human-brain interface before I could understand it.

My way of building confidence was through doing online courses. I was very privileged that the company I worked for at the time, an amazing NFC startup called Flomio, were willing to let me bill hours watching an online course on machine learning. I followed fast.ai's "Practical Deep Learning for Coders" and then watched CS231n in my spare time.

After that, although there was a fairly long road ahead, it was night and day. I had the confidence that the jelly in my skull didn't need any additional compute power to grasp it.

Things that helped

If you already know how to code, you can be up and running training models in a day after watching the first lecture of fast.ai. Fast.ai's "top down approach" really helps motivate continued learning by showing you what's possible. Having a software developer background really made things easier, you can gradually dive deeper into the different concepts, as you would with a new library or API.

Learning to use a language and a library at the same time can be a pain... first learn the language, then learn the libraries/APIs that are written with it. In my experience, this is true for machine learning too... once I had learned python, picking up fastai and PyTorch was much easier.

Once I had a reasonable grasp of fastai and PyTorch, I looked around for university courses that might help me transition into a machine learning. Although it would’ve been nice to make the transition completely independently outside of institutions, I felt I would benefit from the structure of it and having the degree would also help my job search.

This is by no means a "you need a degree" statement, the most valuable lessons I've learned has been from self-guided study online. Taking the risk financially was the hardest consideration for me. My only advice for this is to try and save as much as you can, and look for funding / scholarships where available.

Note: Tech is a male dominated industry where women are more than twice as likely to quit as men (41% vs 17%) so being a white male, I benefit from lots of other factors.

Going back to uni

So I in enrolled in Artificial Intelligence with Speech and Multimodal Interaction MSc in Heriot Watt University, Edinburgh, Scotland. The course focused on big data applications, intro to data science, statistics, and one fancy module called Biologically Inspired Computation (see my previous two blog posts about Genetic Algorithm and Particle Swarm Optimisation for examples of that).

You may notice that there wasn't a large amount of Deep Learning there. Although the fundamentals of neural networks were thought and we had to build a neural net from scratch, the online courses I did were a lot more practically useful than what I learned in university, especially fast.ai.

Having had experience programming professionally and having learned many fundamentals from the different online courses, my university experience went a lot smoother than my undergraduate degree. There was lots of late nights and pretty much every weekend was spent doing assignments during the day, but honestly, I enjoyed the sense of purpose that pursuing the degree gave me.

Note: If you do decide to go the university route, use ANKI (spaced repetition) to study for exams. It is the closest I’ve been to being able to get to upload facts into my jelly brain.

I added alerts for "Machine Learning" in Edinburgh on the LinkedIn job search feature and spammed my CV wherever matched. If you want to see the CV I send, DM me and I'll be happy to share. I focused my search on smaller tech companies but I would take any interview offers I received.

Most of the job applications were similar to the Software Developer interview process I had been through before. The main difference was questions would focus on machine learning concepts and the take home would be some data related task, e.g. building a classifier with the given data.

For these take-home tests, I used fastai. This was great for getting quick results but be sure you understand what's going on behind the scenes because every interview asked about them.

I did 4 interviews with companies in Edinburgh and was offered 4 jobs. I really couldn't have even imagined that result. There is such demand for data-science / machine learning skills that I had much better job application / interview results that I had prior to all this. This was in the relatively small city of Edinburgh so I imagine opportunities are even greater in bigger cities.

This may sound like it was all roses but financial decisions aside, university was tough and it's a bit of a grind staying with online course.

Conclusion

In conclusion, I did a few online courses which gave me the confidence to go back to university, upon completion I interviewed for a few companies and settled on the one in which I thought I could learn the most. The whole process was one and a half years from start to finish. I made the decision to join Speech Graphics because machine learning is core to their product and they have a dedicated ML team so I knew I would be in a good position to learn a lot.

To make this whole thing possible, there were many helpful people around me at all points throughout my transition. Between my girlfriend Kerri, my parents to my friends in uni and my dissertaion supervisor, I know its a cliche but I really wouldn't have been able to do it without each of them being so kind and helpful.

I personally love reading about these kind of stories and finding out about peoples experiences doing something I am considering. Did you get any value from reading this article? If so (or if not), feel free to share it, and you’re also more than welcome to contact me (via Twitter) if you have any questions, comments, or feedback.

I hope my story has given you an insight into my perspective about switching paths.

Thanks for reading! :rocket: