Learning Leader: Skill Development for Engineers

How I Became a Leader in my Software Engineering Career

I will start by telling a story about how I became a leader in software engineering. I fell into a leadership role not necessarily by choice but out of necessity. However, it has changed me for the better and I don’t ever regret taking the position.

Background

I was working as a DevOps Engineer at a startup of about 150 people at the time and I was on a team of 2 engineers. I had more seniority between the 2 of us and the other teammate was actually hired as a Database Administrator. After several months that felt like years, we finally hired a 3rd engineer to be on the team. At this point, I was promoted as the default team lead for the DevOps team and eventually we hired 2 more engineers onto the team.

Looking back at this role, I was, for the most part, just another senior engineer. I cranked out work, just like the others did. There may have been a little bit of mentoring and guidance for the junior engineers, but I wasn’t setting any direction for the team as a whole. The other tech leads of the product teams regularly met and I was often excluded from the discussions. I didn’t feel like a tech lead.

At some point, I was working closely with a particular product delivery team that was building software in AWS with cloud native technologies. This team was made up of highly efficient software engineers and I was their dedicated DevOps engineer. I attended their daily standups and their refinement sessions, but I wasn’t 100% integrated with their team in their retrospectives, other planning sessions, or code reviews.

The tech lead of this team, Matt, happened to start at the company the same week I did. We had a special bond, since he was the one that showed me how to setup my laptop for local development only days after he started. Matt is a really smart individual and an exceptional engineer. He was also a very reserved person, and he was very fortunate to be leading other exceptional engineers because of that. It didn’t take much to lead that team as they all contributed to the bigger picture.

The Turning Point for Me

On a typical, random day, that team and I were called into a small conference room for an announcement. To the rest of the team’s surprise, it was announced that Matt, the tech lead of that team, along with an agile coach and the director of engineering, were leaving the company to start a new venture at another company. This caught us all off-guard and we were all in shock. People come and go, especially at startups, but this was a unique situation.

They gave us all time to ask any questions about the announcement. A lot of the questions were around backfilling roles. Naturally, one of the questions was about who will step into the role of the tech lead for that team. There were other members of the team and the organization that were probably looking to grow into a leadership role and hoping to step into that role.

Later that day, my manager called me into his office along with the manager of the software engineers on the product team. They asked me if I would be interested in filling the empty role of the tech lead on this team. At the time, I was the tech lead of the DevOps team with several unfinished projects, and I was very apprehensive about accepting the offer. I told him that if that is what the business needs, I will fill the position.

I started in the role immediately and we had a follow-up meeting with that team to let them know that I will be stepping in for Matt as the tech lead of their team. At this point, I have to imagine that the team was tired of all the recent changes. I ensured them that I would do my best to fill Matt’s shoes and that we will still operate and make decisions as a team.

Skill Development for Engineers

Over the next several years in the role, I continued to define my leadership style and build up leadership skills that make me the leader I am today. This was the first time I was on a team with dedicated testers, scrum master, and a product owner. People also came and went, so I had exposure to different levels of engineers, other roles, and many different personalities.

When I joined the team, I wasn’t really thinking about my “leadership style”. I was mostly interested in just doing what I felt was right as an engineer and a tech lead for my team of developers. When I started on the team, it had several senior software engineers and a mid-level engineer all of which were very high performers. However, there was still room for improvement for the team and for me in my role.

Communication

In the early stages of this role, I significantly improved my communication skills. I worked with several different groups and people in different roles. I improved both my verbal and written communication skills interacting with these different people. Here are some great examples that have helped me learn and develop my communication skills.

I collaborated closely with the product owner and stakeholders, bridging the gap between business needs and technical requirements. As my understanding of our customers, their needs, and the product deepened, I refined my questioning to pinpoint the problems they sought to solve. This precision was crucial to ensure my product team focused on building valuable features, avoiding wasted time on unwanted functionality.

I provided status updates through both verbal reports and written emails to stakeholders, encompassing the Director of Product and the Chief Product Officer. Conducting product demonstrations for stakeholders and the wider organization posed a unique challenge. During the Q&A sessions that followed, I honed my impromptu communication skills, clarifying the reasons behind our development choices, detailing the decisions made, and explaining the technologies used in the process.

In a more technical means, I improved my written communication in the form of well-written function and class names, inline and external documentation, and in my peer code reviews. These are a great place to start as a software engineer as these are closer to your day-to-day work. In addition, the tech leads of the product teams met on a regular basis and it was also my responsibility to speak on behalf of my team and their needs.

Teamwork

I collaborated with my former DevOps team to ensure that they understood any requirements my team had. Sometimes, that work was even done by my team, if there were capacity and timeline concerns. I learned to foster collaboration within my team as well. I regularly paired with developers on my team to give them feedback on their code and approach, before they submit it for a code review.

Being the most senior developer on the team, I also lead knowledge sharing sessions. I wanted to help my team better understand some of the things I’ve learned in my career and also the features that I contributed to on the team. These sessions also allowed me to explain the background of why things were designed a certain way and why we were changing them.

Time Management

Time management was also a skill that I learned in this role. Working with my product owner, I learned to break down my team’s work into smaller, manageable tasks, balancing customer value with technical limitations and implementation. I helped my product owner prioritize the work into an order of dependencies for a specific feature. As needed, I also pushed back and advocated for my team when my product owner tried to add more to our plate.

Not only did I exercise time management for the team, but I improved the skill for my own work as well. As the tech lead, I was in a lot of meetings as a technical representative for the team and the department. I needed to ensure that I was not overcommitting my own work and needed to ensure that I finish my committed work within the two-week sprint. Prioritizing things that unblock my teammates was also something I learned as a tech lead.

Self-Awareness

The skill of self-awareness doesn’t come naturally to many. This is a skill that can definitely be learned, and regular self-reflection really helped me develop this skill. I would ask myself some tough questions, trying to understand what my weaknesses are and areas I could improve upon.

Here are just some example questions that helped me:

  • What could I have done better today?
  • How could I have handled a situation better?
  • How could I have handled a conversation with another person or group of people better?
  • What could I have said differently in those situations?

For those struggling with self-awareness, seek feedback from others. I strongly endorse talk therapy as an effective method to gain awareness of your actions and words. Engaging with a third-party provides an objective perspective, facilitating discussions on various scenarios.

Emotional Intelligence

Emotional intelligence is another skill that can be learned. Building trust, having empathy, and fostering relationships are all important skills that contribute to being a great, emotional intelligent leader. Developing emotional intelligence is not a one-size-fits-all approach and looks different for everyone.

As I mentioned previously, I built relationships with my teammates, my product owner, and many stakeholders. I even built relationships with people outside of this circle of people. In doing so, it had given me the exposure to other areas of the business and has proven to be fruitful as I was recognized and given company-wide rewards for my efforts.

Cultivating these relationships establishes trust within the team and with stakeholders. Trust is a catalyst for a highly productive and efficient team, enabling the establishment of realistic expectations with stakeholders. I earned my team’s trust by demonstrating through my actions how to excel as engineers, not just through words. With stakeholders, trust was built by consistently delivering on promises and maintaining open communication, especially when deadlines were at risk of not being met.

I learned to empathize with people, and active listening played a crucial role. A good example is understanding the challenges our customers encounter. Communicating in a way that’s not too technical with stakeholders is also a form of empathy. It’s essential to be empathetic to my teammates, as everyone makes mistakes. Helping them solve a bug they caused without blaming them is a prime example of empathy.

Closing Thoughts

I hope sharing my story and how I learned soft skills shows that anyone can build these skills and be a great leader in software. Though I was nervous about becoming a tech lead, I’m thankful for the chance. I used to be shy, but this role helped me break out of my shell and grow as a leader.

While my story might not perfectly match yours, I hope you get some helpful ideas from this article. You don’t need a leadership title to be a great leader. At my job, they encourage everyone to “Lead From Where You Are,” and I believe it’s doable. I live by this every day, always seeking ways to grow as a person and leader.

Share this article:

Learn How to Lead as a Software Developer and Join my Community

My newsletter is dedicated to helping you as Software Developers implement Agile best practices and improve your leadership skills.

I have been a Software Engineer in many different roles in my career. I started in 2005 as a first hire into a small company and worked my way towards being a Software Developer Team Lead. I enjoy being an individual contributor and leading and creating high-performing software development teams. I also enjoy bass fishing as a hobby.