7 Lessons I Learned as a Senior Software Engineer and Beyond

Published

June 30, 2024

This year marks my 10th year anniversary of starting to write code. Even before I got paid to do it, I spent a lot of my life tinkering with technology and exploring the internet. Looking back on these years, I notice how my perspective has changed at this point in my career. If you’re navigating your own path in software development, perhaps my experiences can offer some valuable insights.

women looking at a ladder reaching in the sky

Seniority Isn't About Being the Best Programmer

Some days ago, I had an interesting conversation with a mid-level developer who wanted to advance towards a senior engineering role. They asked about which skills they should focus on to get to the senior level.

I do think to reach a senior level, strong hard and technical skills are important. These include an understanding of programming languages, design patterns, and the ability to solve various problems independently. But that's just one part of what you need to be considered senior.

As engineers, we often focus on code, but being able to convey ideas clearly and effectively is just as important. An important moment in my career was giving a presentation on why our team needed to adopt a new technical solution to improve the internal quality of the software system we were using. In this presentation, it wasn't just my technical knowledge that made the difference; it was also the ability to communicate the benefits, address concerns, and bring everyone on board. It's about building consensus and driving change through collaboration, not through authority or ego.

Being a senior engineer means putting the team's success above your own need to be right or recognized. It's about fostering a collaborative environment where everyone's contributions are valued. What I eventually learned is that seniority isn't about being the best programmer; it's about being the best team player.

Dos and Don'ts
  • Do Lead by Example: Showing a strong work ethic and professionalism will inspire others

  • Do Prioritize Communication: Regularly share updates, ideas, and feedback with your team.

  • Don’t Hog Credit: Recognizing the contributions of others builds trust and encourages collaboration

  • Don’t Overlook the Big Picture: While technical details are important, keep the overall goal in mind

Understanding People and Their Motivations

Early in my career, I had a habit of staying in my bubble, focusing solely on my tasks. Over time, I learned that understanding what people around me are doing and what drives them can make a real difference.

Even though I'm leaning more towards an introverted personality, today I make it a point to meet regularly with people, not just within my team but across the organization. It wasn't until I started actively listening to people outside my closest bubble and learning about their priorities that I started making a bigger impact across an organisation.

These experiences taught me that understanding people’s motivations helps anticipating potential conflicts and finding common ground. It’s easy to get caught up in your work, but taking the time to learn about others’ roles and motivations can change your approach to collaboration. I've found that by understanding what my colleagues motivations are, I can effectively change my own approach towards a bigger impact.

Dos and Don'ts
  • Don’t Stay Isolated: Avoid working in a silo. Engaging with different colleagues broadens your understanding and contributes to a more cohesive work environment.

  • Don’t Make Assumptions: Don't assume you know what drives others without taking the time to ask and listen.

  • Don’t Avoid Difficult Conversations: Address issues promptly and constructively to avoid long-term issues.

Structuring Your Time Strategically -
Learn to Say No

As a senior engineer, you're pulled in many directions – coding, meetings, code reviews, technical advice, bug fixing, writing design documents, mentoring – you're the person that can make things happen. Early on, I struggled with balancing these demands. I wanted to contribute to everything and please everyone, which can get very stressful.

As I advanced in my career, I learned that not every task warrants my attention. I started to address when deadlines weren't possible to be met, avoid meetings without agendas, and tasks that contributed to cognitive overload with a low return of investment. This selective approach ensures that my focus remains on high-impact activities.

Protecting my focus time involves setting clear meeting budgets and managing workloads and demands set by others. Take a look at Julia Evan brag list blog post or Jordan Cutlers How I plan my week as a Senior Engineer if you're interested in what that can look like.

In terms of time and meeting boundaries, I implemented a rule: no more than three hours of meetings per day and no more than ten hours per week. I also make sure to book at least 2-3 hours of focus time daily in the mornings if possible by leveraging tools like reclaim or clockwise. Additionally, I reserve specific slots for engineering tasks and extra time when I'm working on tight deadlines for certain projects. My calendar is open for meetings in general, but as soon as meetings take overhand, I try to book the rest of the day / week with slots dedicated to focus / project / engineering time.

It turns out colleagues in general are respectful of these boundaries and more mindful about my time if they actually see it on my calendar. By setting clear boundaries and reflecting on my work, I'm gaining more clarity towards what I'm spending my energy on. If you're feeling overwhelmed by demands on your time, try setting similar limits.

Dos and Don'ts
  • Do Set Clear Priorities: Regularly assess what you're working and align it with your quarterly goals.

  • Do Establish Boundaries: Implement meeting and time management rules, such as limiting meetings to a certain time amount or time of day.

  • Don’t Say Yes to Everything: Avoid agreeing to every task or meeting request.

  • Don’t Overlook the Importance of Breaks: Ensure you have regular breaks and downtime scheduled.

Becoming a Force Multiplier

Being a force multiplier means amplifying the capabilities and success of those around you. It’s not easy to achieve, but basically the more senior you get, you should focus less on just your individual achievements. To do this, I schedule regular sessions with junior or mid-level developers to help them grow, dedicating an hour every two weeks for these meetings. Setting clear goals and expectations for mentorship situations ensures that both parties benefit from the interaction, creating a productive and supportive environment. There are many great resources about mentorship and sponsorship, for example by Lara Hogan.

But effective knowledge sharing goes beyond formal mentoring. I try to to give presentations, engage in one-on-one pairing, and offer help proactively. These activities help to build a culture of continuous learning and mutual support. Opening learning channels and conducting workshop pairing sessions make it easier for others to grasp important topics and stay updated with industry trends.

One of the most rewarding aspects of mentoring is seeing others grow and succeed. I remember working with a junior developer who was struggling with a complex project. Through regular pairing sessions, we broke down the problem into manageable parts. Over time, they gained confidence and eventually led the project to a successful completion.

Being a force multiplier also means speaking out for others if you have influence (sponsorship). This involves advocating for team members, ensuring their contributions are recognized, and creating opportunities for them to shine. Sometimes, it means stepping back so someone else can grow, learn, and take the lead.

Great teammates lift the skills, expertise, and names of those around them - Lara Hogan

Dos and Don'ts
  • Do Offer Mentoring: Dedicate consistent time for mentoring junior and mid-level developers

  • Do Advocate for Team Members: Use your influence to speak up for others, ensuring their contributions are recognized

  • Don’t Hoard Knowledge: Avoid keeping valuable information to yourself. Sharing your expertise helps elevate the entire team.

  • Don’t Focus Solely on Personal Achievements: Shift your focus from individual accomplishments to the success of the whole team.

Being Proactive

Proactivity is about taking initiative rather than waiting for tasks to come to you. At some point I started asking myself: What do I want to work on? What does the company need? What am I good at? This shift in mindset helps to focus on more impactful contributions.

Being proactive often starts with listening. I pay attention to recurring themes in conversations and look for opportunities to contribute meaningfully. For example, during team meetings, I listen for pain points and think about how my skills can help address them.

I usually pick one major focus area per quarter, dedicating time and resources to make substantial improvements. This proactive mindset led me to take on projects that aligned with my strengths and interests, while also addressing critical business needs. For instance, I once noticed our deployment process was causing frequent delays. By continuously dedicating some time in a quarter to streamline and automate this process, I not only leveraged my skills but also significantly improved our efficiency.

This approach keeps me motivated and ensures that my work has a meaningful impact. If you’re looking to make a bigger impact, start by identifying where your passions and strengths intersect with your company’s needs. Your initiative can lead to substantial improvements and a more fulfilling career.

Dos and Don'ts
  • Do Focus on Major Projects: Select one major focus area per quarter and dedicate time and resources to make substantial improvements.

  • Do Listen Actively: Pay attention to recurring themes and pain points during team meetings and conversations. Look for opportunities where your skills can help address these issues.

  • Don’t Wait for Instructions: Avoid waiting for tasks to come to you.

Plan Ahead and Have an Opinion

I develop my strategic goals by setting quarterly objectives and making weekly notes on my progress. I keep a simple 'what is Lisi doing' list, which helps me stay on track and assess my achievements regularly. Reflecting on each quarter allows me to see how well I'm working towards my goals and make adjustments as needed.

Here is an example of what that looks like:

Quarter 3 2024

  • document the frontend architecture of the system

  • make a detailed memory audit to avoid freezing

  • continue mentoring with Julia

Week 24

  • met with Adam to discuss existing work done around the tracking system

  • worked on bug relating to Y

  • continue implementation of feature X

  • lookahead meetings focusing on Z

Once the quarter is finished, you can then go back through the documented weeks and see if you were making any progress towards the goals you set at the beginning of the quarter.

I learned to balance immediate tasks with strategic initiatives, making sure that my efforts aligned with the company's broader objectives. This approach helps me navigate complex projects and drive substantial improvements. When I find myself in meetings or rooms that aren't useful or relevant to me, I make a conscious decision to leave, freeing up time for more impactful work.

When it comes to strategic and more long term, substantial works, as a senior it's generally expected to have and share your technical opinions. Seniority is also about being actively involved in the processes and discussions that shape common goals.

Dos and Don'ts
  • Do Set Clear Goals: Develop strategic goals by setting quarterly objectives and making weekly notes on your progress.

  • Don’t Waste Time in Unproductive Meetings: If a meeting or discussion isn’t useful or relevant, make a decision to focus on more impactful work.

  • Don’t Shy Away from Sharing Opinions: Actively participate in strategic discussions and share your technical opinions.

Solving Tricky Problems Across Multiple Teams

Complex problems often require collaboration across multiple teams and working on it over a period of months. In my last role we had the challenge of introducing comprehensive testing and increasing test coverage, which involved coordination across several departments. It taught me the importance of clear, consistent communication and planning together.

Working on such projects, I quickly realized that high-visibility, easy tasks (called "snacking") might seem tempting, especially when seeking promotions. However, choosing projects that challenge you and are hard to solve is where real recognition lies.

Will Larsons blog post "Work on what matters" elaborates on this point really well:

If you spend your career snacking, preening or chasing ghosts, it’s possible but relatively unlikely that what you’ve done before will be valued at companies you interview with. Instead, the only viable long-term bet on your career is to do work that matters, work that develops your and to steer towards companies that value genuine expertise.

By choosing to tackle these challenging projects, you not only develop a deeper understanding of the broader system but also build a reputation as someone who can handle tough problems. If you’re looking to make a substantial impact, embrace these complex, cross-team challenges and stop snacking, just to get immediate recognition for yourself.

Dos and Don'ts
  • Do Focus on High-Impact Work: Prioritize tasks that have a significant impact on the project and the organization.

  • Don’t Snack & Preen: Avoid doing low-impact, high-visibility work as well as easy and low-impact work

  • Don’t Work in Isolation: Don’t try to solve complex problems on your own, leverage the knowledge of the people around you

Reflection

It's natural not to do everything right the first-time around that you do it, but over time with each project and each collaboration you will get better at planning projects to a successful execution. A few of these things that I mentioned took me some time to realize, but I hope these reflections resonate with you and provide some inspiration in your own journey. Whether you're just starting out or looking to advance in your career, remember that the key to growth lies not just purely in your technical skills but in developing a clear approach that includes empathy, good time management, communication, and strategic thinking.

More articles