You are a Senior Engineer, now what?

Congratulations! You’ve earned the rank of Senior Engineer. That’s no small feat, and you should be proud of your hard work and dedication. However, as you might be wondering, what’s next? It’s a question that many software engineers ask themselves, and for good reason. After all, reaching this point can feel like the pinnacle of one’s career.

But the truth is, becoming a senior engineer is only the beginning of a new chapter in your professional journey. So, no need to fret! I’m here to share some insights on how you can continue to thrive and achieve even greater success as a Senior Engineer. Let’s dive in! ๐Ÿ‘

Now that you are a senior, the junior days are over, does that means that you should know everything? Absolutely not. Being a senior is about knowing how much you don’t know. However, that also means you should be constantly seeking more technical knowledge in both depth and breadth.

Technical Depth and Breadth

Technical depth refers to a software engineer’s deep understanding of a specific area or technology. This means that they have extensive knowledge and expertise in a particular programming language, framework, or tool, which allows them to optimize it, solve complex problems related to it, and work efficiently in that area.

For example, a software engineer who specializes in Java may have in-depth knowledge of the language, the Spring framework, and deployment on Tomcat in various configuration scenarios. This enables them to quickly and efficiently troubleshoot issues and optimize their work.

On the other hand, technical breadth refers to a software engineer’s broad understanding of multiple areas or technologies. They have a good understanding of various programming languages, frameworks, and tools, and can work on different projects that require different skills and knowledge.

For instance, a software engineer with diverse expertise in C#, Go, and Python can deploy applications on various operating systems and cloud platforms. They can work on a wide range of projects, from scripting and solving problems at the software and infrastructure levels to configuring and deploying applications in various environments.

While technical depth and breadth are distinct, they’re not mutually exclusive. In fact, the most successful senior engineers have both. They have a strong foundation of technical depth in one or more areas, which enables them to tackle complex problems and optimize their work.

At the same time, they also have technical breadth, which allows them to adapt to new technologies and projects, and collaborate effectively with colleagues from different technical backgrounds. So, strive to develop both technical depth and breadth, and become a well-rounded and versatile senior engineer.

Besides technical skills, there are also plenty of soft skills that you’ll need to master over time. But, I’ll save that conversation for another blog post. For now, let’s focus on how you can continue to improve your technical skills and stay up-to-date throughout your career.

Okay, so here’s the deal: once you hit that senior level, the path to seniority is pretty similar across the board, unless you decide to transition into a management role. It’s like leveling up in a video game - you’re always striving to get better and better, but the gameplay stays pretty consistent.

Now, don’t get me wrong - when you start taking on tech lead, staff engineer, or principal engineer roles, you’re going to need to add some new soft skills to your toolbelt. Things like leadership, mentorship, and influence become increasingly important. But when it comes to hard skills, the path stays pretty consistent. So let’s say that reaching principal engineer status just makes you a “more senior senior” - you’re still building on the same foundation of technical skills that got you to where you are.

Software architecture and design

To continue evolving your software design and architecture skills, there are two key pillars you need to focus on, and one helpful “shortcut.” First and foremost, you should always make it a priority to continue studying and learning in this field. Technology is constantly evolving, and staying up-to-date with the latest tools, techniques, and approaches is essential to remaining competitive in your career.

Additionally, it’s important to understand that design and architecture go hand in hand. You can’t excel at one without a good understanding of the other. If you only focus on design, you might miss critical architecture considerations. On the other hand, if you only focus on architecture, you might end up over-architecting and neglecting the importance of good design.

Learning software architecture and design can be a challenge, especially since it’s not as straightforward as learning a new coding language. As the saying goes, software architecture and design are the things you can’t simply Google. This means that you’ll need to rely on two main sources for learning:

Books!

When it comes to these topics, there’s no substitute for diving deep into the subject matter. While video tutorials can be helpful, books are the raw source that will give you the depth of knowledge you need to truly understand these complex topics. If you’re looking for a good place to start, I highly recommend checking out these books:

News!

Keeping up-to-date with the latest technologies is critical, as they will undoubtedly shape the future of software engineering. For example, Kubernetes, which was introduced less than a decade ago, has become the default choice for many in the industry. Therefore, it’s crucial to stay informed about the latest tech news to remain relevant and competitive.

When seeking out news, focus on topics that are specific to the technologies you want to learn, such as Golang, Kubernetes, and Microservices. Additionally, broad technology trends will give you a better understanding of the bigger picture, enabling you to anticipate and prepare for future developments. By staying on top of tech news, you’ll be exposed to innovative ideas and emerging trends that will help you to think outside the box and stay ahead of the curve. Some of my personal sources for news is:

Practice, practice, and more practice

The other pilar, as you probably already guessed, is experience. You must expose yourself to an ever-growing list of new things. If you’re not feeling uncomfortable, then you’re doing it wrong. Every day should be a challenge, where you feel like you have no idea how to do what you need to do. But with time, you will realize that you can do it and be proud of yourself. Then, you’ll be scared of the next day’s challenge, and the cycle continues. A few good ways to gain experience in software architecture and design include:

By embracing these experiences, you’ll be able to learn new things, expand your skill set, and build the confidence to take on more significant challenges.

Lowering the problem level

Finally, let’s discuss the “shortcut” for tackling complex problems and concepts. By breaking them down into smaller, more manageable concepts, you can better understand and build upon them. For example:

Let’s say you are feeling lost in a project that requires you to use Kafka but have no idea what Kafka is or what it’s for. Don’t worry, you’re not alone. Kafka is a distributed system that consists of servers and clients communicating through a high-performance TCP network protocol.

But if that sounds too technical, let’s bring it down a level: think of Kafka as a topic that works like a queue, with multiple consumers. Okay, now we’re getting somewhere.

But let’s bring it down even further: Kafka is essentially a database full of records called messages that you can consume in order. With this understanding, you can now start building on top of it. For instance, knowing that Kafka is a database, you can start exploring key concepts that databases have and use that to further your understanding of Kafka. Don’t be intimidated by Kafka or any other technology.

Break it down into smaller, more understandable pieces, and you’ll be well on your way to becoming a master.

In conclusion, becoming a senior engineer is an outstanding achievement that you should be proud of. However, it’s not the end of the road. The journey continues, and there’s always more to learn and explore. As a senior engineer, you should focus on developing both technical depth and breadth to stay adaptable and versatile. Additionally, understanding that software design and architecture go hand in hand is crucial for staying competitive in your career. To achieve this, you can rely on books and other sources to continue learning and deepening your understanding of these complex topics. Remember, staying up-to-date with the latest tools, techniques, and approaches is essential to remain competitive in your career.


If you find my tech insights helpful, entertaining, or just plain cool, consider treating me to a virtual coffee and fuel my coding adventures: