Developer Agency: a key factor for thriving software teams
Mar 28, 2024 • 6 Minute Read
Stop me if you’ve heard this one before:
You’re an engineering leader, and you’re worried. Your company is feeling the macroeconomic climate, and one phrase is repeated a thousand times: “Do more with less.” Maybe inside of your engineering organization, you hear that tech debt is piling up, and delivery is slowing down. You wonder, “What can I do? Maybe we’re struggling with remote work.” So you institute some changes: stricter expectations for when engineers will be at their keyboards, and your managers start keeping track of this. For a while, you see the activity inside of your engineering function increase dramatically.
But is this really productivity?
Over years of research as a social scientist studying developer teams, I’ve heard engineering leaders describe this exact scenario again and again. When we want to drive big changes, it can be tempting to grab for the things we feel the most control over, like enforcing sweeping mandates about how people work.
Often, what you see next looks like this: even if activity remains high, you start to realize people aren’t working on the right things. Perhaps you start to wonder why you’re hearing less from the tech leads and senior engineers in meetings. And soon enough you’ve got a new problem–a disengaged engineering organization that’s not really telling you what they’re thinking. As a social scientist of developer teams, I can promise that this problem will show up in how people feel (they’ll feel lower trust, and potentially even leave your organization) and in the quality of your code.
Why does this happen? One reason is that you’ve missed something truly important inside your engineering organization: Developer Agency.
Developer Agency is a term for an important social cognitive factor in our environments, a lever that changes how we think about our workplaces and teams. Agency refers to whether or not developers feel like they are actively involved in how their success is defined, have power to take action over their environment and circumstances, and are able to voice their perspective and disagreements. And this isn’t just a cultural “nice to have”-- it’s actually a key part of maintaining a problem-solving culture inside of your engineering organization.
More Developer Agency means more productive teams.
At the Developer Success Lab, we study how the most innovative software teams work, learn and thrive. Our empirical research has found important evidence for the impact of Developer Agency. In our recent research project with over 1200+ full-time developers, we asked a series of questions about how teams were doing on four key sociocognitive factors, a framework that we’ve developed to measure Developer Thriving. One of those key factors was agency. Developers rated their teams on examples like, “When I disagree with something that my team is measuring, I can speak up about it” or “I have a voice in how we are defining success.” Developer Agency was a statistically significant predictor of how productive those teams were.
We also heard about the vital importance of Developer Agency in qualitative interviews and focus groups. One developer told us,
An environment where you know [speaking up is] encouraged makes you want to chime in if you're anticipating something, or think that maybe another direction [should be explored].
Many engineers shared that knowing they have power over how they work gave them the flexibility to unlock better focus and problem-solving, reducing thrashing.
And Agency doesn’t just benefit individual problem-solving.
When developers know there will be structured avenues for sharing their opinion, they stay motivated not only in the highly complex work of writing code, but also are able to find ways to share insights upward with managers.
This makes sense because it echoes what we have learned across decades of research on how human beings learn and collaborate. Agency is important to everyone, not just developers. In education, whether or not students feel agency in their classrooms or in their skill development has been predictive of long-term motivation and wellbeing.
Finally, Developer Agency is also a way to boost collaborative learning on a team. I once interviewed a junior developer about their most important “learning moments” in software engineering. He shared a story about a time that he watched a senior tech lead disagree with their manager. Rather than shutting down the conversation, the manager made time in her meeting agenda to hear the senior tech lead’s concerns and discuss them in front of the team. The junior developer told me that this taught him more than anything “planned” could have: “I learned that ideas could be important, no matter where they came from.” An environment that encourages high agency on our teams is also an environment that will be open to new, good experiences we couldn’t have planned for. This is exactly where creativity and innovation starts.
Increasing Developer Agency
At the Developer Success Lab, we think that Developer Agency should matter to engineering leaders. Not only is it a strong signal for important positive cycles around creativity and innovation, it’s also a particularly important thing for leaders to care about because disruptions in agency can be a serious red flag. In a low agency environment, developers may fall silent. Engineering leaders have told us, “conversations are really important for building trust” and “providing information to leaders about what’s going on [in engineering work] is critical.”
Developers are our most accurate source of information about what is really happening in engineering work. For that reason, a culture of high agency creates important protection and feedback loops for software teams. Slippage between what we are really doing and what we say we are doing happens to all people, but a culture of agency will mean we catch slippage sooner rather than later, and small slippage turns into a learning cycle instead of a big failure.
So how can teams improve their Developer Agency? In our research, developers shared examples of times their voices and initiatives were rewarded, such as engineering organizations giving time and credit for “code cleanup” competitions that were developer-led, and designated meeting space for their voices. Internal events that allow people the freedom to safely experiment with new skillsets and identities may also increase feelings of agency, such as internal team hackathons and rotational projects.
We’ve also learned that Agency can be key inside of manager and direct report relationships. One engineering leader in our research shared that “every developer is different” and that allowing space for their direct reports to share their way of thinking, perspective on problems, and unique needs is a critical part of successful management.
Developers also shared things that lower their overall sense of agency within a team. Feeling constrained by workplace policies that didn’t understand how they worked was one. Frequent disruptions and changes of plans that come from outside of software teams was another factor that exacted a significant penalty on developers’ sense of agency. And when developers put significant time and effort into solving a particular problem, and then felt that effort has no impact on the product or business, we found that this also dampened developers’ motivation to continue solving problems in code.
There are many places to start with this important concept, but one big place for leaders to start is with signaling that they understand and care about the voices of their developers. Developer Agency might be the difference between a disengaged engineering culture that mostly only gives you status updates, versus having a culture of real, depthful conversations with your teams about what they’re experiencing.