• en | es

Falling into Machine Learning

Recently, I rediscovered my passion for Mathematics and Artificial Intelligence, which I used to hate during my degree in Computer Sciences. Lately, I’ve been focused on Software Design, Automated Testing, Microservices, and Functional Programming. I also love learning new programming languages, so I’ve been wondering whether to go deeper into Golang, Scala or Python. But, in the end, all of them are tools; tools for building what kind of things? In my case, my day-to-day job consists in building and maintaining Microservices, as a full-stack developer. I like it, it’s challenging and you need to have many different skills. But, at some point, I started to look for something completely different to learn in my spare time.

One day, I ended up reading about Golang and Python. I noticed someone was mentioning Machine Learning in both languages, and I got curious and started reading about it. After a while, I realised that those two subjects (Mathematics and Artificial Intelligence) that I didn’t quite like and didn’t mean much to me separately, could be combined to create cool (and useful) things in a completely different area than I’m used to. Completely new challenges! Since then, I got excited about Machine Learning and it’s been the most enjoyable and exciting use of my skills in a long time. The tools I used to like learning (mainly programming languages) became secondary, or what they really are: a means to an end. I stopped googling around, and started an online course about Machine Learning. The fun began.

What can I do with Machine Learning?

Machine Learning can sound like a mysterious thing, but we actually see it every day. The amount of applications is countless:

  • How do Amazon or Netflix know what you like, to make recommendations?
  • What’s behind those self-driving cars?
  • Is it possible to automate financial trading?
  • What about weather forecasts?
  • How does the Google Search Engine work?
  • Can machines help us improve healthcare?
  • What gives Siri and Alexa the ability to process natural language?

And these are only a few examples. The use cases of Machine Learning are left up to imagination.

What do I need to get started?

It’s easy to feel overwhelmed by the amount of information that we can find about Machine Learning. There is a huge amount of blogs and papers to look at, and this grows every day, as the field is still quite young and the interest about it has increased in the last few years.

As a multidisciplinary field, there are a lot of areas of Computer Science and Mathematics that you need to have at least some knowledge about.

Programming is a must. As Machine Learning practitioner, you will usually be doing more hands-on work than a data scientist, who will be more focused on data analysis. There is a thin line between the two though, and you could even be performing both roles at the same time, specially when working on your own. Proficiency in at least one general-purpose programming language is needed in order to build the machine learning bits, and full applications around them for users.

Machine Learning is especially heavy on maths. Just to start with, you will need to have some idea about:

  • Linear Algebra
  • Probability
  • Statistics
  • Multivariate calculus
  • Optimization and Algorithms

Then, you might get interested in things like Deep Learning (which is a subcategory of Machine Learning that tries to imitate the human brain learning patterns), where you need to learn specific things about Artificial Intelligence. This could be just one among many possible specializations you could choose from.

Of course, if things get serious at some point, you will need to know about distributed computing, to speed up and scale your computations. Functional Programming is also useful here, due to the parallelizable and mathematical nature of the field. You might even come up with new algorithms that will need to be coded and optimized, using specific numerical programming techniques.

But, do we need so many things to start with? Not really. Actually, you can get started on Machine Learning without being a mathematician and an expert on Artificial Intelligence. You will still need some basic understanding of some areas of Mathematics, but it’s not that scary after all. Also, some tools will help you providing prebaked algorithms that already take care of parallelism for you.

The most important thing to get started is to lose the fear of not knowing enough about Machine Learning. We all start from zero. Machine Learning is a field that requires a lot of different skills, but thinking that we need to know, for instance, all the maths in depth before starting is a big mistake. A good way to get started is to choose a tool that makes things easy for beginners; Weka and scikit-learn are great tools for this. You can start playing around even if you don’t really understand how things work internally yet. Discovering the topic and making sure that you really like it before investing a lot of time in the skills needed is important. You can just learn the details in depth as you need them, not in advance.

Was it worth it?

It’s already been a few months since I got into this amazing field. To me, the most exciting aspect about Machine Learning, apart from its use cases, is the combination of skills (not just software development) that you need to build these kinds of systems. This was a plus when I chose this field as my main focus for the next year. Learning and acquiring so many new skills over time is challenging, but at the same time so rewarding that, for me, it’s definitely worth the time and effort.

About the author

Software developer interested in Functional Programming and Domain Driven Design. He has worked building web and mobile applications in two different countries.

Sergio loves to try different flavours of programming. He has worked mainly with Java, but has recently discovered Scala and Kotlin and developed a big interest in functional languages such as Haskell. He believes in working with different technologies as a way to improve his programming skills.

Sergio embraces TDD and Simple Design in order to build clean and maintainable code.

Enjoying this article?

Sign up to our monthly newsletter to get content like this in your inbox!