The Big Idea

It is no secret that growth at a company breaks existing systems. But it always seems to catch us by surprise. “Why does the process we put in place 6 months ago no longer work?”. We often ascribe this to old habits. When the new process was put in place, everyone jumped on it and was really into it. But now it seems like old habits have crept back in and no one is following the process anymore. But what if the process was only going to work for the scenario from 6 months ago, but never for the situation you find yourself in today?

When we adopt a culture of continuously learning, we don’t spend hours pointing fingers at people, berating them, claiming that it’s there fault that it’s not working. Instead we simply look at the process of today, determine what the current failure points are, evolve it, and the hold the team accountable for delivering to the evolved process. Expend your energy on what matters and what moves you forward.

<aside> 💡 How often are you faced with, “you guys used to deliver really quickly and efficiently, but these days the code seems buggy and one fix you push breaks two other things in our system”.

</aside>

Nowhere in the world of CTO is this more prevalent than in delivering software to the organization. How often are you faced with, “you guys used to deliver really quickly and efficiently, but these days the code seems buggy and one fix you push breaks two other things in our system”. Let’s talk about this.

It is vital to establish a culture of delivery at your company. Why a “culture” of delivery? Well it is because the decisions you make today regarding delivery won’t always have an obvious benefit to the delivery challenges facing your team in the future.

The role that you’ll play in slowing things down in favor of longer term quality will feel like a lonely journey in some cases. The goal is to promote calm, focus and thoughtfulness in how software gets delivered. The contrary would look like an erratic, frenetic or discombobulated approach to the needs of the organization.

Delivery in an organization requires a thoughtful balance. While it's essential to establish a delivery framework early on, one must also consider the varying dynamics across different stages of a company. For a startup, the need for agility is often greater as developers rapidly respond to issues to strive for product-market fit. Hence, it's crucial not to adopt a rigid, "big company" mindset prematurely. The delivery process should flex and evolve, accommodating the complexities and unique challenges your company faces at each stage of its growth.

What is a Culture of Delivery?

A "culture of delivery" in an engineering organization refers to fostering an environment where the team consistently delivers software:

This culture prioritizes meeting commitments, delivering value to customers, and maintaining a steady, reliable pace of work. It's not about simply churning out code, but about ensuring that what's delivered aligns with business objectives and user needs. We want to be be “in the zone” day in and day out when it comes to delivery.

A culture of delivery places a strong emphasis on consistency, reliability, and results. It focuses on clearly defining what success looks like, setting achievable goals, and then working diligently and collaboratively to meet those goals. This involves not just coding, but also planning, testing, quality assurance, and regular reflection on what works and what doesn't.

In a culture of delivery, every team member understands their role and how it contributes to the overall objectives of the organization. They are empowered to make decisions and take actions that align with these goals. They are encouraged to communicate openly and proactively about their progress, challenges, and needs. And when they deviate out of “the zone” the team (and leadership) support them to get back into it.

<aside> 💡 A culture of delivery also embraces adaptability. Teams recognize and embrace that priorities can shift, requirements can change, and obstacles can arise. They are prepared to adjust their plans and tactics as needed to keep delivery on track by running scenarios to determine which scenario is most optimal to meet their goals.

</aside>

A culture of delivery is about accountability, collaboration, and continuous improvement. It's about making delivery a habitual part of the team's process and identity. In such an environment, everyone shares a collective responsibility for delivering quality work, on time, and on a consistent basis. It's a commitment to not just doing work, but to delivering value.

Components of an Effective Delivery Process

An effective engineering delivery process involves several key components, each playing a crucial role in ensuring timely and quality product releases. Here are some of the critical components:

  1. Clear Objectives and Requirements: The delivery process begins with a clear understanding of what needs to be achieved. Clear objectives and requirements reduce ambiguity and keep everyone on the same page. See Level 2 Product block.