Seniority
How to behave as a senior software engineer: 7 behaviors that every senior software should have.
Hi Friends,
Welcome to the 80th issue of the Polymathic Engineer newsletter. This week, we will talk about becoming a senior software engineer.
Moving from software engineer to senior software engineer was a difficult step in my career, and it took quite a long time.
However, after some retrospective thinking, I later understood that most of the struggle was my fault. I focused a lot on developing my technical skills but didn’t put enough effort and attention into my behaviors.
Building deep technical expertise on the domain you are working on and on the related technologies is essential, but what often delay your promotions are behaviors.
To become a senior engineer, you must first learn how to behave as a senior engineer.
In the following section, I’ll list things senior engineers do and behaviors they have so that you can use them to speed up your promotion:
-
Make your team better
-
Be reliable
-
Prioritize value
-
Think in terms of tradeoffs
-
Don’t complain unless you have a suggestion
-
Build value, not only code
-
Search for criticism
How CodeRabbit can support your code reviews
This issue is offered by CodeRabbit, a great tool that automates the code review process and provides context-aware feedback on pull requests within minutes. CodeRabbit uses AI to analyze your codebase, identify possible issues, and suggest improvements.
Try CodeRabbit and Cut Code Review Time & Bugs in Half
Make your team better
One of the distinguishing traits of senior engineers is their ability to uplift the entire team. Senior engineers prioritize the growth of the team over their personal code contributions.
There are many ways to teach and guide your coworkers, including code reviews, pair programming, and design reviews.
For example, a design review isn't only about choosing the best possible design.
It's about weighing the tradeoffs together, asking the right questions, and ensuring everyone understands why some choices must be made.
Team growth is one of the main benefits of reviewing code or discussing a design.
You can also hold regular knowledge-sharing sessions. When you learn something new, make it a point to share it with the team.
Be reliable
Being reliable is about more than meeting deadlines. It’s about building a reputation where your team and stakeholders know they can count on you to deliver high-quality work consistently.
Senior engineers take responsibility for their tasks and projects and understand the differences between estimates, predictions, and commitments.
They make things predictable and deal with uncertainty, so the team can always count on them to deliver. If something goes wrong, the best thing to do is to own up to it and work on a solution rather than pointing fingers.
Prioritize value
Senior engineers understand that not all tasks are equal. They focus on tasks that add the most value, even if they're not the most difficult or exciting.
This could mean fixing the build system or refactoring code, but the goal is always to make the team as effective as possible.
Identify the core problems that need solving and prioritize tasks that add significant value to the customer, the team, or the stakeholders.
Prioritizing value is about making choices that align with the bigger picture and maximize the positive impact of your work.
Think in terms of tradeoffs
Every decision in software engineering involves tradeoffs. Senior engineers must balance various factors to make informed decisions.
As a senior, people expect that you are able to explain what you’re building, the options you considered, and the pros and cons of each.
Always consider multiple solutions before going all-in on one, and prefer easier-to-build and maintain solutions.
It’s also essential to understand the tradeoff between short-term and long-term benefits. Sometimes, a quick fix might solve the immediate problem but lead to more significant issues later.
Don’t complain unless you have a suggestion
Complaining without offering solutions is unproductive. When you identify problems or see something isn't working as well as it could. Focus on finding and proposing actionable solutions.
You can also engage your team in finding the best solution. Brainstorm together, gather feedback, and refine your proposal based on collective input.
This demonstrates proactive thinking and helps build a positive and solution-oriented team culture.
Build value, not only code
Senior engineers understand their role is creating value and not just about creating code. They know what the customers want and use technical solutions to add value.
They are careful with their time, ensuring that customers and stakeholders get the most value for their money.
A good strategy is to engage with them regularly. Understanding their perspectives can help you build well-rounded solutions that address broader needs.
Search for criticism
Be always eager for feedback and open to criticism because this is necessary to grow.
Senior engineers actively ask for feedback from peers, managers, and stakeholders to improve their work.
Regular feedback helps you identify areas for improvement and ensures you're meeting expectations. Take also the time to reflect on the feedback you receive.
The key to continuous improvement is identifying patterns and recurring issues and creating an action plan to address them.
Food for thoughts
When I wasn't yet a senior engineer, I had some bad experiences with nontechnical managers. First, they couldn't fully understand some dynamics inside the team. Second, they couldn't fully assess how hard my work was and its quality. Link
If managers implicitly ask for bad code and no tests, they should be ready to deal with technical debt and hard-to-maintain software. A great manager will know how to find the right balance, such as setting aside time to improve the quality of the code and the tools you use.
The first programming language I learned was C, and if I had to pick a first language as a beginner, I’d still go with it. It gives you nothing but a few built-in keywords, and you need to understand everything else. Plus, many other languages are C derivative or inspired.
Interesting Reading
Here are some interesting articles I’ve read this weel:
Technical skills are just the tip of the iceberg.
A lot goes on in building great teams that ultimately build great software and senior engineers play a big role in that.
Also, thanks for mentioning my article, Fernando!
Developing technical skills alone isn't enough.
Look for actionable solutions rather than just identifying problems, was my favorite advice.
Thanks for mentioning my article on Resiliency, Fernando.