I have noticed that there are infinite resources to get you started as a beginner, but rare ones that define advanced topics that can help you level up and reach a senior level.
There is some sort of unwritten agreement that you have to learn advanced topics the hard way through your work experience, but some developers are not lucky enough to be subjected to the right challenges that might help them grow. How do you educate yourself?
Top comments (5)
Are there any specific topics you want help with? I might be able to provide some more specific recommendations.
As far as books go, my go to recommendations are The Pragmatic Programmer and Code Complete. Both of these books guided me to many huge level-ups early in my software career.
Thank you for sharing those useful resources, Glenn!
No specific topics, I was talking in general, as I've met more than a couple of developers struggling with this and I wanted to know how other people handle it.
It's a very interesting question which got me thinking about it for quite a while. I've been doing software development for over 25 years and the following is based on my personal experiences and my own opinions.
Looking at your question it seems you've made the assumption that you have to know about specific advanced topics to be considered a senior.
Advanced topics are usually related to a specific set of problems. There are an infinite number of advanced resources out there but you often need to know what you're looking for before you can find them.
In my experience the best developers are actually the ones who keep things as simple as possible. Knowing when and why to reach for a certain solution is what makes them senior. This requires experience. The fact that they know advanced topics usually means they ran into problems where that knowledge was needed.
Making a lot of mistakes and facing all kinds of problems is important. These can range from tiny to big mistakes and from technical to team or business related issues. Look back all the time to see what you did well and where you could improve. If you can't figure it out yourself, don't be afraid to ask. You'll start to see patterns and figure out why and when something did or didn't work, and also what was important and what wasn't.
Even though you'll gain a lot of technical expertise, the most important skills you'll develop are your soft skills. Communication, analytical thinking, problem solving and so on. And those skills transfer really well. This means that everything you do outside of work which require those soft skills will benefit your work as well.
Of course there are things you can do to help yourself improve more quickly:
In the end it's all about knowledge vs wisdom. Even as a junior developer you can gain a massive amount of knowledge (Google). Knowing how to properly use that information requires experience.
I love having juniors on my team though. They often add way more value than they think. They bring their own experiences, energy, and a pair of fresh eyes. And because the whole software landscape changes so quickly, chances are they actually have something to teach the seniors.
Wow! Thank you for taking the time to share your point of view.
Thank you for asking the question. It was nice to look back on the experiences I've had in my own career. I hope it's helpful and that it at least explains why experience is considered such a crucial part of being a senior developer.