6 minute read

In this blog post, I’m diving into execution; arguably the most crucial skill in engineering management because it’s all about delivering the results that drive your company forward.

Throughout my career as an engineering manager, I’ve stumbled upon some game-changing ‘Aha Moments’ that totally shifted how I think about getting things done. These insights have not only simplified my approach to executing tasks and managing projects but have also made them more straightforward and effective.

In this post, I’m sharing these impactful lessons I’ve learned along the way, focusing on the nuances of engineering execution that weren’t initially obvious to me.

1. The execution focus is not static. Define it, align, revisit

When we think of software execution in a holistic fashion, we focus on two main areas: what we want to do (the product part of the process), and how we build and deliver it (the engineering part).

The first part, what we build in software revolves around ideation, discovery, feedback and then prioritization. Usually, we have an infinite list of ideas and feature requests, but we only need to select a few. So, how do we prioritize? Prioritization is driven by the business direction; the product focus. This focus is shaped by various factors including business strategy, user feedback, and competitive landscape.

However, we often overlook that the how part - the way we execute and deliver - is not only tactical; it also includes a strategic part: the engineering execution focus.

Engineering execution refers to the processes, engineering methodologies and practices that enable a team to deliver the product requirements effectively.

I used to think that execution is all about maximum speed and maximum code quality. But my experience as an engineering manager taught me that this isn’t always the case.

Speed and quality can impact each other, but even if you strike a balance and establish a quality baseline, your focus might need to shift. Here lies the first Aha Moment:

The execution focus, what you optimize for, is dynamic. It’s dictated by your company needs at any given time.

Example of engineering focus changing over time

So, if it’s dynamic, what do we optimize for when it comes to execution?

What we focus on, shifts periodically based on the engineering and business targets. Beyond speed and code quality, there are more dimensions to consider. For example:

  • We might prioritize knowledge sharing in scenarios like dealing with a bus factor or when onboarding new hires, even if it reduces throughput.
  • Sometimes, we optimize for throughput to meet urgent business needs or gain a competitive edge, potentially at the expense of knowledge transfer and stability.
  • At times, we focus on stability to address technical debt, which inhibits the current development speed.

An essential takeaway from this engineering execution principle is the need to continually define and align on your current focus. As a manager, it’s crucial to clarify these focuses with your team and integrate them into your execution strategies.

2. Don’t obsess about the maximum team utilization

As a new manager, one of the first concerns is often optimal team utilization in building product features. It’s a common belief that idle time is detrimental to the team.

Even though team utilization does relate to efficiency, striving for maximum utilization can be counterproductive and may restrict your team members. You might occasionally find that there are no refined product features ready for development. This leads us to the next aha moment:

Striving for maximum team utilization is not the goal; delivering results is. High utilization does not necessarily equate to high productivity.

Efficient workflows inevitably require some slack. This slack allows for addressing missed issues, managing unplanned blockers, and provides a chance to reflect and possibly rethink the process to improve overall flow. Without this built-in flexibility, bottlenecks can become more frequent, affecting not just projects but the team members as well. Some flexibility in schedules can greatly benefit productivity and enhance mental well-being.

Team Utilization VS Productivity

Furthermore, planning doesn’t always go smoothly. There may be times when you don’t have a product backlog ready for your team, not due to a lack of work but because of temporary blocks—perhaps due to dependencies or a sudden shift in focus.

If your engineers are not fully utilized on product development temporarily, see it as an opportunity. Invest time in their personal growth or other initiatives that contribute to the company’s success even if they don’t yield immediate results. A relaxed pace can sometimes be beneficial.

As one of my mentors often says, work will inevitably pick up, and pressure will come. Allow your team some downtime to recharge; they’ll need that energy later.

3. Fix your execution process, optimize everything else later

For managers, the most critical resource we manage is time. With an infinite number of tasks waiting to be tackled, it’s vital to choose wisely how we allocate our time.

But what happens when too many things start to go wrong? How do we decide what to prioritize?

Consider this scenario: You join a new team that’s in disarray—there’s no documentation, knowledge is hoarded by specific individuals, the release process is sluggish, and there’s no clear goal-setting framework in place. Where do you begin?

✨ Prioritize fixing your execution process before anything else. You can always optimize later

If your team lacks a streamlined execution process that includes clear goal alignment, prioritization, and an efficient delivery workflow, don’t get sidetracked by goal setting, performance management, or career development just yet. The immediate priority is to ensure your team can deliver results effectively—this is what keeps your company running and what you are ultimately accountable for.

By focusing on establishing a solid execution foundation first, you ensure that all other aspects of management and team development can be built upon it. Once you have this foundation, you can then look to refine other areas.

Remember, as long as you deliver the expected results, you can sustain and gradually improve. There will always be opportunities to optimize other areas later on.

4. Ensure Stability first, then optimize for throughput

When it comes to execution, most of us immediately think about throughput: How quickly and how frequently can we deliver features to the end-user?

Yet, we often overlook a crucial dimension that enables effective throughput: stability. If your team is constantly flooded by a stream of incoming bugs that disrupt your normal workflow, and if troubleshooting and resolving issues take excessively long, then your execution flow has a significant problem.

Focus on stability first, then concentrate on optimizing the throughput with other technical and workflow techniques.

Stability is the foundation that supports throughput, and in turn, effective throughput can contribute to better stability. The key metrics to focus on are time to recovery and failure rate per release. By minimizing critical issues and resolving them quickly when they do occur, you can maintain a continuous flow of feature delivery without frequent interruptions.

By establishing a robust and stable system, you not only improve the immediate working environment but also set the stage for more efficient and higher-quality outputs in the long run. Once you have a stable process, you can then look to increase the pace and volume of your output, leveraging stability to achieve greater throughput.

5. Execution is not just about the software development lifecycle (SDLC)

Usually, when we discuss execution, we focus on processes like workflow management, planning, and prioritization. However, one of my key realizations, or ‘Aha Moments,’ as an engineering manager was:

✨ Execution is not just about the Software Development Lifecycle (SDLC). It encompasses several dimensions including organizational structure, technical methodologies, and people management

The way you structure your organization can significantly impact how you execute tasks. Organizational structure influences communication efficiency and the overall culture of your teams, which can either optimize or inhibit execution. The literature on organizational structure, such as Team Topologies1, provides extensive insights into the pros and cons of various configurations. It offers strategies for managing the dynamic nature of team structures and adapting them to enhance execution.

Additionally, the choice of technical design and methodologies plays a crucial role. As highlighted in Accelerate2, the decisions you make about architecture and continuous delivery principles can have profound effects on organizational performance.

Moreover, people management is an integral component of execution. High-leverage activities such as performance management, training, and motivation, along with setting clear expectations, are essential for effective execution. These elements ensure that your teams are not only capable but also motivated to deliver their best work.

Conclusion

Throughout this blog post, we’ve explored several principles that have shaped my approach to engineering management. These invaluable insights come from my own experience, advice from my mentors, discussions with colleagues, and literature.

To recap:

  • Adaptability in Focus: Execution focus must be dynamic, aligning with the changing needs of your business.
  • Team Utilization VS Productivity: Strive for effective results rather than maximum team utilization.
  • Execution Foundation First: Establish a solid execution process before tackling enhancements.
  • Stability Before Throughput: Ensure system stability to support sustained throughput.
  • Execution spans beyond SDLC: Execution encompasses organizational structure, technical methodologies, people management and other high-leverage activities.

These principles, while straightforward at a glance, are not always apparent in the daily grind of management.

I hope these lessons resonate with you and inspire you to refine your execution strategies. Remember, the goal is not just to execute tasks but to do so in a way that aligns with broader organizational objectives and nurtures your team’s growth.

Now, let’s go out there and execute with purpose! 🚀

References

  1. Team topologies by Matthew Skelton and Manuel Pais, Book 

  2. Accelerate: The Science of Lean Software and Devops: Building and Scaling High Performing Technology Organizations, Book 

Leave a comment