Expectations and growth strategies for Senior Software Engineers

In this article I want to give a brief overview of what I think is expected of a Senior Software Engineer, what you should aim for to be good and how you can grow. This information would have been tremendously helpful to me when I started my journey in software development.

Expectations and growth strategies for Senior Software Engineers
Photo by Clay Banks / Unsplash

This is an update of the original article I published in 2021.

The software development world is quite diverse and when I started out as a developer I would have loved to have someone telling me what the real expectations are for professionals. Sometimes those are very different from what is written in a job description.

In this article series I already covered the Junior Software Engineer. In this article I want to continue with the Senior Software Engineer and will explain my point of view of what is expected of people in this role and what you should do to be good!

What is expected of you

Scope of influence: The main scope of your influence is your team. However, you already have seen some code basis, used different technologies and maybe looked into other areas like DevOps. In fact, more and more you will cross borders to other teams as you build features that interact with their services. You need to understand those services and how they could be best integrated.

Size of tasks: Not only will you break down features into smaller units of work. You will be responsible to go deep into the unknown to figure out the complexity of epics. You will create Proof Of Concepts (PoCs) to identify the best technology or tool for the task. In other words, people expect you to take ownership of the entire vertical of a big feature if necessary.

Reliable assessments: Your main focus is still delivery as you are a Software Engineer. However, you will be dragged into more meetings, alignments with other teams, etc. Additionally, as you are a person with considerable amount of experience under your belt other people rely on your assessment. All this will reduce the time you spend with coding.

Practices: You have worked in a few teams already. In those you have seen some things that work and some that don't. You should be one of the persons in your team that provide feedback either to your manager or to individuals. Think about ways to make work in the team more efficient. For example, you might identify a point of repetition that everyone in the team is doing over and over again. You could be the one recognising the potential for the whole team to save time. You could put that topic of automation of the task on the table.

What you should aim for to be good

Proactiveness & drive: I cannot stress this point often enough. For me the number one and two on the list of characteristics of a Senior Software Engineer are proactiveness and drive. You are the one that points out deficiencies when others overlook them and you are the one that, given a goal, will drive that initiative until completion.

Familiarize yourself with the context: The Senior role is not solely restricted to technology. It also covers team workflows and general collaboration in- and outside the team. You understanding business flows of the company and the role you and your team play in the whole picture will help with that a lot.

Balance speed & quality: An understanding that develops over time is the one of pragmatism and the balance of speed of delivery and quality. By now you should have learned that you often don't have the time to make everything "neat". You should have learned that often "good enough" is what is important and you developed a gut feeling of what that means. After all, continuously delivering value at a sustainable pace and producing maintainable outcomes is what counts.

Mentoring: Finally, mentoring is an often used term by hiring managers. When they hire a multiplier they enable a team to grow with less external help and guidance. This is a huge cost and time saver. As a Senior you are a reliable source of experience and knowledge. You will teach more unexperienced people. They will also look at you as a role model cause they want to be in your shoes in the future. That means that your actions (in code and in person) will have more weight than before.

How you can learn

Everyone is different and has specific preferences, but those are some options you can look into.

Look beyond what is comfortable: I know Senior engineers that now, at the latest, start to look beyond their own nose (i.e., what they feel comfortable with). This usually is computers and software. They start looking into psychology, team building and team management topics. They want to understand the people in their team and what behaviours produce which outcomes. They also see themselves as the role model that they are and try to grow in areas like communication (e.g., alignment, negotiation) and optimizing their own work.

The workings of individuals and teams is a whole different level of complexity. My feeling is that at some point working with machines is just not complicated/challenging enough anymore. And engineers like to go about challenges.

On the other hand, it is also fine to keep digging deeper into technology. Try to understand things you did not understand before or become an expert in a certain domain. It's not like there is nothing new popping up anymore to explore!

Conclusion

Being a Senior Software Engineer will challenge you in many different ways. You are expected to write quality code in a sustainable pace. On top of that, you also want to show more interest in how your team is doing in the greater context.

Do you have other input about what to look out for when you take up a career in Software Engineering? Let me know! I would be glad to listen to it and learn from your experiences.