First Time As a Senior Engineer
New job, new role, things that I think are important to understand
6 months ago I have completed my 5 years of being a software engineer. I wrote my learnings in this article that went viral and was featured in multiple e-books. Around the same time, I started my new job as a senior engineer. A role with a clear job description that entails not only coding but also includes a lot of decision making, communication, and having to consider business requirements. In theory, it sounds simple. But when you start afresh, just like any other role, it can be chaotic.
I am collating a few pointers that are helping me and I think it would be beneficial for a lot of you out there. Not only coding skills, because being a senior developer comes with much more than just writing code.
Focusing on the best outcome and not the best solution
I love that distinction between solutions and outcomes. Too often, people overlook the difference between the two. In those cases, they confuse their commitment to a particular solution with the outcome. Of course, it’s not. A solution is a means to an outcome, not the outcome itself.
And the thing is, there’s usually more than one solution that will get you and your team to the desired outcome. It’s really the same idea as focusing on outcomes more than solutions. Over the years, I’ve focused less on the outcomes (the what) and more on the solutions (the how). This has led to good solutions for sure, but not the best outcomes.
And that has led to less impact overall. As a senior engineer, you should always look at the bigger picture. Introducing a new feature should always include questions around the business impact, timelines, priorities, etc. This will help you focus on things that are actually needed. And believe me, you will have a lot of things on your plate, saying no to a few requirements will help you achieve more.
Keeping your eyes and ears open for non-technical stuff
As a senior developer, you need to understand the business and how to bring constant value to the business. Instead of just focusing on the technical side of a feature, you need to understand how that actually impacts the end-user.
Less experienced developers focus too much on tech. This comes due to the fact that they don’t master their tech stack yet — which is something a senior developer does.
Always focusing on the Why before diving into the How.
Senior developers don’t waste their time on things that don’t really matter for the stuff that leads to a feature. The question that they ask themselves constantly is: is what I’m working on will have an impact on the user and eventually on the business? And If there is a conflict, they will not hesitate to say no to it. And saying no is really important.
In short, senior developers keep their minds open for non-technical stuff, while less experienced developers have their minds on coding the solution for the next problem.
Effective communication
Being a great programmer doesn’t make you a senior developer. Their skillset is much more than just programming. And being a good communicator is one of those skills.
A senior developer respects the opinion of other developers in the team. A senior developer should help to create an open environment where every member of the team can speak their mind. Being empathetic to other people’s opinions is important.
You should be open to change, awareness of the fact that most team members are less knowledgeable is something that should be taken into account as well.
This will help you propose new solutions effectively, not only internally within the team but also with product managers and clients. Being able to understand the problems is vital for this role.
Making decisions only based on solid research
A senior developer is someone who thinks thoroughly about the things they do. This is very important because as a senior you will be driving a lot of discussions. Without having a thorough understanding of the stuff that you are going to be talking about is not going to work.
Wait? Isn’t that what every developer should do?
Yes, it is. However, the fact is that most developers just follow guidelines and conventions without giving it much thought, or let alone challenge it. Things like code practices, approaches on how services are deployed, how much time the deployment takes, are there integration tests to verify that the changes are working after each commit. There are a lot of things that you would have to think about and only good research around those topics will help understand and change them.
Due to more knowledge and awareness of what’s important, the senior developer is able to make better decisions.
Understanding the problems and documenting them
Being new in the team gives you an opportunity to have a broader picture of the things that are going on. Making sure to make notes of the things that might be missing doing the onboarding and already documenting could be improved. This could involve running and testing services locally, getting access to the platforms that are being used. How are the secrets managed, and how you can get access to staging and prod environments?
This is an important aspect because people who have been working with the system for a while will already know all the hidden details to do something which might not be clear for a new joiner. And you will do a big favor to the next person who will join the team, which in turn reduces the onboarding time.
You would have to write a lot of documents around proposals for new features, architecture decisions, and the changes that you introduce.