I was recently asked as part of a recruitment conversation with someone in the talent team of a tech company, “Your CV says you foster a culture of you build it, you run it. What is your approach to building that culture?”

I thought it was a great question and wanted to share my thoughts on this topic.

You build it, you run it culture is all about giving engineering teams the autonomy and responsibility to own the systems they build and the agency to make decisions about how to evolve it. This level of ownership doesn’t come automatically by just telling engineering teams what to do. It requires a deliberate approach. This is what I call a High-agency team/culture.

Inexperienced leaders might straight up think that hiring high-agency individuals and putting them in a team is what creates this culture. That is not really the case.

So how would I build high agency teams?

If I were to lay a framework for building an organisation that has high agency software engineering culture, I would focus on the following areas:

  • the hiring process
  • platform and enablement
  • psychological safety
  • stewardship and accountability

The Hiring Process

Hiring a software engineer is a lot like hiring anyone for any particular job. You want the person with the right skill set and mindset.

When starting to build an organisation the first thing you should focus on is how to create a hiring system that consistently gets the right people in. You also want to make this process as objective as possible to avoid interview feedback sessions where people say things like “They seem like a nice guy”, “She could be more confident”.

Your interview Rubric should be clear and objective.

You do not instantly have to build a hiring interview process like Google or any of the FAANG companies. But you should ensure that there are specific rounds of interviews that evaluate specific aspects of the candidate:

  • Technical knowledge and problem-solving skills - covered through coding interviews, system design interviews, and architecture discussions
  • Behaviour in a collaborative environment - covered through behavioural interviews, team exercises, and situational judgement tests
  • Leadership and decision-making skills - covered through leadership interviews, case studies, and scenario-based questions

Ensure you have two interviewers for each round to help get a wider perspective and reduce bias. Most importantly train the interviewers to hire objectively, this is crucial.

You will also need to hire people across various experience levels, so tailor your interview questions accordingly when creating the rubrics.

The other side of this hiring process is compensation - ensure that you have a process in place to regularly review compensation against the market. Else you will just lose your team faster than you can hire them.

What should you look for in a high agency software engineer?

The following is what I consider the basics that I look for in a high agency software engineer:

  • The curiosity to dig into a problem and work out a solution
  • The ability to persevere through challenges and setbacks
  • The humility to seek help and learn from others and give credit where it is due and a growth mindset to continuously improve themselves and their work
  • The willingness to teach others and share what they know and have learned
  • The pragmatism to determine when to optimise further and when to ship the solution at hand

What should I look for in a high agency engineering leader?

This is not an exhaustive list, but some of the qualities I would look for in a high agency engineering leader are:

  • A keen interest in developing other leaders
  • The ability to create a safe space for their team to experiment and learn from mistakes
  • The ability to provide clear direction and set expectations while allowing autonomy
  • The ability to own the outcomes of their team’s work and be accountable for their decisions
  • A collaborative mindset to work with other stakeholders and teams to solve the right problems
  • The wisdom to make trade-offs between short-term and long-term goals and to balance competing priorities
  • The ability to disagree respectfully to peers, stakeholders and senior leadership and willing to disagree and commit to a decision once it is made

I don’t intend to make this post entirely about hiring, so this isn’t a full blown framework for hiring but a compass to develop your hiring process.

Platform and Enablement

When software engineering teams are building applications and systems, their focus must be on software design patterns and software architecture and building expertise in the domain.

You must create an environment where they do not have to be overburdened with the operational aspects of the systems they build.

You shouldn’t expect a software engineer to be an expert in cloud infrastructure. If you try to spread someone that thin, they will be less effective in their core area of expertise. This is where you must focus on creating a platform engineering team that focuses on enabling software engineers to effectively productionise their software. They take ownership of creating systems that enable software engineers to deploy, monitor, and operate their software in production and other environments.

Platform teams help bake in the best practices for software teams to follow and provide the right tooling with security and compliance all baked in. This frees up software engineers to focus on what they do best, which is to build solutions to the problems that the business is trying to solve. This gives them the head space to be creative and innovate their solutions.

But that is just one aspect of enablement.

The other side is to ensure that as an engineering leader, you do not overburden them with unreasonable deadlines and expectations. This is crucial because, software engineers are problem solvers and they work based on the incentives. If the incentives are skewed towards delivering something that just about works, they will do just that. So as an engineering leader, your role is to create an environment where software engineers can provide their estimated efforts for the problem they are asked to solve, without feeling guilty about estimating reasonably. Servant leadership has a lot to do with this. You are the leader and the enabler, not the dictator.

Psychological Safety

Psychological safety is a term that has been around for a while and is often used in the context of team dynamics. It refers to the belief that one will not be punished or humiliated for speaking up with ideas, questions, concerns, or mistakes. In a psychologically safe environment, team members feel comfortable taking risks and being vulnerable in front of each other. This creates an environments where team members are able to disagree and challenge one another without worrying about negatively impacting their relationships in the team. This is where engineering leaders have to be the glue of the team. Enable the team to have healthy interactions - debates and discussions, disagreement with good arguments. I have had to run workshops to help introverted team members to open up and mix better with the rest of the team. You may have to take an active role in ensuring that everyone gets their voice heard in the team.

Building such safety starts with trust and openness. You lead by setting an example and that should fuel others following it. When leaders actively seek feedback, the team follows.

Some techniques I’ve used to build this

  • run a team readme session where everyone shares their working style, what they like and dislike, how they like to be communicated with, etc. This helps the team understand each other better and build empathy.
  • organise team socials where people get to play or work on non-work related activities together
  • encourage a culture of mobbing or pairing so team members can not just code, but actively converse while solving a problem.
  • create rotas for running team meetings, encouraging the shy/quieter members to take centre stage
  • run retrospective sessions to create a safe space for the team to admit mistakes and shout out each other for good work.
  • run paper game days or incident simulations to help the team learn how to work together in high pressure situations.

Stewardship and Accountability

A lot of companies create platform teams and put systems in place for software engineering teams to deploy and operate software easily. But that isn’t enough.

You must ensure that software engineering teams are accountable for the services that they deploy on the cloud. This means, the teams must be able to tell you:

  • what services they own
  • what resources they need to run their systems
  • what environments have they deployed their applications to
  • what those services amount to in terms of cost to the business

So when someone says observability, ensure that teams have the ability to not just look at the ingress and egress of the systems they build, but have a full understanding of what it costs to run the solution for the business.

The advantages of providing this are:

  • This will help the team understand the impact of their work on the business
  • The cost of running their services is for everyone to see - we can spot spikes in real-time!
  • It will also help them make better decisions about how to optimise their systems and reduce costs.

Some leaders have argued that putting cost at the forefront of engineering teams can kill innovation and engineers might feel that they aren’t allowed to try out new things.

NO.

It is your job as a leader to ensure that your teams understand that these dashboards are a decision making tool. It is also a great way to highlight the impact of the team’s work on the business.

Also constraints always bring out creativity. It doesn’t limit innovation, it encourages it.

Conclusion

So building high agency teams, is not just about hiring a bunch of Ivy League grads and putting them in a team. It is like building a garden. You have to create the right environment for the plants to grow. You have to nurture your plants, prune them, and protect them from pests at the right time. And you have to be patient and let them grow at their own pace. Creating systems that enable this, is how you create a high agency culture.