Here are some questions that I get asked often by developer:
"How do I become a better developer?", "Should I learn about AI and machine learning?", "Do I need to learn Azure and get certifications?".
The developers asking these questions are all asking what they should focus on, because they don't want to miss out and be the developer that doesn't know the latest and greatest. And choosing what to learn in the software development world is difficult, because there are so many topics and you can spend years on each one to become good at it.
Focus on the basics
Let me tell you what I think you should focus on. First and foremost, you should focus on the basics. If you are a .NET developer, that means that you should become good at C# and using your IDE. You should also be very familiar with using source control (like Git) as that is what you'll use every day to keep your code safe and work together with other developers.
Even if you have been developing for years, going back to the basics is always a good practice to sharpen the word.
Beyond that, you should learn everything you can about the workload you (want to) work with. This can be desktop applications, mobile apps or web applications. If you are a .NET developer, that means focusing on things like Xamarin, ASP.NET and WPF or Windows Forms. Also, learning about APIs and how to create and use them is a necessary skill for all these workloads.
Once you've "mastered" the above areas, you are a great developer already. You can build actual, working applications, that will add value for companies. Remember that companies aren't looking for VR and AR apps or the latest AI algorithms (not yet anyways). Most companies just want to create a form over their data so that they can capture user input or show users something. Its as simple as that. Richard Campbell talks about this on my podcast in the episode "The Next Decade of Software Development with Richard Campbell".
Beyond these technical skills, you should learn things like working in a team, designing your application, working with IT operations (DevOps), creating documentation and conveying your thoughts to others (in presentations, in conversations or in written form). I cover many of these things in my book "200 Things Developers Should Know" (audiobook is also available).
Should I learn about the cloud?
When you are a great developer and know the basics, it is time to learn more. A great place to start is by learning about the cloud. My favorite cloud is Microsoft Azure. Why should you learn about that? Because many companies use it and ask for experience in it and also because it enables you to be way more productive and focus on the functionality of the applicating, instead of running it. For instance, you can use Azure Functions to easily trigger a piece of code when somebody uploads a file and spit the result out to a queue, without writing any plumbing code.
But Azure is huge and has many services. So how do you decide what to focus on? For developers, I recommend to focus on basic things that run your code, which are Virtual Machines, Containers, Azure App Service (read my 4-part tutorial on them here), and Azure Functions and Logic Apps. If you can work with these services, you are already on your way. You should also know about storage, like Azure Storage and a database like Azure SQL Database or Azure Cosmos DB. Beyond that, you can go further by learning about services like API Management, Azure Search and Cognitive Services. I would not focus on complex services like Azure Kubernetes Service and Azure Service Fabric, as they are services that should be used in niche scenarios, although many companies use them for microservices which they think is 'cool'. Listen to my conversation with Roland Guijt to discover that you shouldn't use Microservices by default as they introduce complexity.
A great way to start learning about the cloud is by taking my Pluralsight courses and study for a certification. This will motivate you to learn and guides you through various topics. Tim Warner talks about this on my podcast.
What about future technology?
There are many, interesting, emerging technologies, like AI, machines learning, VR, AR and even Quantum Computing. I love to geek out on them as much as you do. But there is no need (yet) to learn how to use these.
Yes, you can become a data scientist and use AI and machine learning to add value to a company, but that is a very different role than that of a developer (listen to my conversation about what a data scientist does with Megan Bloemsma).
And it will be years before companies will seriously invest in Virtual and Augmented reality, so don't worry about that yet. And don't try to be on the bleeding edge. It might be an attractive place to be for a developer, but it sucks your time away and doesn't add any value, as Dan Appleman talks about on my podcast.
Learning and teaching
Because you are a developer, you should be a life-long learner (I think everybody should be). If this is not in your nature, try to create habits that support life-long learning or choose another profession. Learning is fun and broadens your horizons.
And you can help yourself to learn better by teaching what you learn. When you teach, you get to learn twice. This can be as simple as teaching your friend or colleague about something you've learned or presenting at a (virtual) usergroup or conference.
Here are some resources that can help you:
- I recorded a podcast about Learning, Teaching, Career and more, which covers a lot of what I've written about here
- My weekly podcast called "Developer Weekly"
- My book "200 Things Developers Should Know", which covers things about Programming, Career, Troubleshooting, Dealing with Managers, Health, and much more
- Learn how to learn from the book "Limitless" by Jim Kwik