Top Skills for 2023

Script

The first skill you have to learn in 2023 is Machine Learning.

Machine Learning (ML) is one of the fastest-growing fields in technology. The increasing prevalence of Machine Learning in the business world is creating an irreversible shift, where developers who stay up-to-date on Machine Learning techniques will have a massive advantage over those who find themselves desperately trying to catch up.

Of course, the field of Machine Learning itself isn’t new, it has been around and advancing for decades now.. but the past few decades have seen an exponential rise in the adoption of machine learning. Why? Well, when the internet became mainstream, there wasn’t much means to collect and analyze data. But, as the internet itself grew, it gave rise to globally distributed applications like YouTube and Facebook … and that gave rise to the notion of “big data” where the initial challenge was simply to collect and process large volumes of data. But now, large companies have mostly solved that challenge. You have some of the top tech companies collecting data from billions of events every second, that amounts to petabytes of data per day, if not more. For context, Facebook was generating 4 petabytes of data per day back in 2020. So the big challenge now is not data collection, but what insights can we get by analyzing insanely large volumes data? And of course, it’s not optimal and not even possible to look at every event when you’ve got billions of them coming in every second, so the idea is to identify patterns in data. And that’s where machine learning comes in. Additionally, with the rise of the Internet of Things, the demand for software engineers that understand machine learning is only growing. The Machine Learning market is projected to grow to over $100 billion dollars by 2025. The sheer volume of data being analyzed these days makes Machine Learning an absolutely critical business discipline, and that’s why you should have this as one of the top skills to pick up if you haven’t already done so.

Ok cool, so how the hell do you actually get started on the machine learning path?

If you are a beginner, and like books, start with this book. It’s called the 100-page Machine Learning Book by Andriy Burkov. It’s a great introduction to Machine Learning and covers the breadth. After this, you can dive a bit deeper through other more dedicated resources.

If you are more of an academic person, the classic book to use is Artificial Intelligence, a Modern Approach by Stuart Russell and Peter Norvig… but be warned, this one is much more dense and very mathematical. I’ve had mine for almost 20 years now, and as you can see, it has gotten a fair bit of use over time :)

If you are more of a visual learner, and can track your own progress, then you can start with these two free courses:

  1. MIT’s Introduction to Deep Learning Course taught by Alex Amini (MIT Introduction to Deep Learning | 6.S191 - YouTube)

  2. Stanford’s Machine Learning Course taught by Andrew Ng (Stanford CS229: Machine Learning Course, Lecture 1 - Andrew Ng (Autumn 2018) - YouTube)

Please note that both these courses will require you to have a very good grasp on Data Structures and Algorithms. So if you are week on those, might be a good idea to brush up on them first. If you want free resources to brush up on those first, check out my other videos linked int he description.

The second skill you have to acquire in 2023 is Distributed Systems.

Distributed systems goes hand-in-hand with the earlier conversation about big data and analytics. The reason we’ve got this insane amount of data is because modern applications can scale far beyond what we couldn’t even imagine only a couple of decades ago. Modern applications are distributed across data centers globally, regionally and then even zonally to provide high availability, better latency and increased redundancy. That’s how we have gotten used to uptime SLOs of 5 nines for robust cloud applications. For those of you who don’t know … uptime guarantee of 5 nines basically means that an application up 99.999% of time … that means it cannot be down for more than 5 and a half minutes per year! And as I already mentioned, processing billions and billions of events every second and petabytes of data every day at this high uptime rate … these insane numbers are only possible because of the distributed nature of modern applications. In fact, it is the foundation of modern architectures.

How does Facebook handle 2 billion users? How does Twitter handle almost a billion Tweets each day? How does YouTube handle over a billion hours of watch time every day? How does Amazon sell around $500 million worth of products each day? The answer to all of these lie in understanding distributed architectures. And this is only going to continue. So, as a Software engineer in 2023 and beyond, it is absolutely critical for you to understand distributed architectures if you want to stay relevant in the tech world.

Alright, so how do you go about learning distributed systems?

Unfortunately, learning distributed systems is not as straight-forward as other areas in software engineering . Mainly because there are a lot of moving parts and there is no specified algorithms of sort, in fact, there isn’t even a right or a wrong … most things in the distributed systems realm live in the “it depends” grey area where decisions aren’t about optimal solutions, but about making the best trade-offs. In fact, the first thing you will learn about distributed systems, the CAP theorem itself starts off with a fundamental trade-off: between Consistency, Availability and Partition tolerance, you can only have two out of the three. Since Partition Tolerance can never be guaranteed 100% as things like natural disasters can totally cut connections within a network, you have to pick one between Consistency and Availability. Either your system is highly available or it has strong consistency. Thats the premise … trade-offs. Of course, you can then figure out models where your system can be a hybrid of the two where you sacrifice a bit of both, or lean towards one side or another … so it all depends on the situation … but the key take away here, is “trade offs”.

So, by that virtue, you learn a lot of it with experience and not academically. But, that being said, I can recommend a few good books to get you started, and some paid resources that I think have excellent content.

Let’s start with the books.

Start with Understanding Distributed Systems by Roberto Vitillo. Then move on to Designing Data Intensive Applications by Martin Kleppmann and then after that, read Software Architecture: The Hard Parts by a few different authors. Remember, if you are new to this stuff, follow this same order of reading the books or most things will either fly over your head or it will quickly get too overwhelming.

Microsoft Azure also has a nice collection of some design patterns that form the core design principles behind distributed architectures. I’ve made a few videos with my own recommendations on learning distributed systems effectively along with all of the information that I have cataloged. So check those videos out … But aside from that, I have not found many free resources that genuinely explain distributed systems as a whole, because putting everything about distributed systems in one video or article or even one book, is HARD. The information is there, it’s scattered and fragmented among books, articles, technical blogs, tech talks, forums and academic white papers … so, you can learn a lot of it for free, you will just have to be a bit extra driven and organized when it comes to learning this stuff.

But, I will be honest, Distributed Systems is that one area where it’s worth paying for courses or training programs. It will just save you a ton of time and headaches. You can do your own research into the services and programs are out there.. I know MIT has a few rotating offerings from their continuing education department, or if you already have a learning platform you like, use that one.

Anyway, these are the two hottest and must-have skills in tech right now and honestly, I cannot stress this enough … if you really want to be competitive in the market and ensure that you have a stable career for the next decade, you have to learn distributed systems and machine learning. And I hope this video did a good job at encouraging you to start on that journey if you have not already, and provided you with some good books to start with, some free resources to checkout and a very good paid resource if you need more structure.

Previous
Previous

Programming languages you should learn in 2023

Next
Next

6 things you must do before you graduate