High Agency in Software Engineering
Tags: career, learning, productivity
Published: 2024-05-22 06:06:53

Cross-posted: https://joedemoraes.com/2024/05/16/high-agency-in-software-engineering/

"If you were stuck in a third world prison and had to call one person to try and bust you out of there — who would you call?" — Jeff Bezos

High agency is essentially the art of overcoming obstacles. It’s the conviction that you have the power to shape your life and surroundings, rather than being shaped by them. With this mindset, you can push through any task, no matter how tough the conditions.

It’s also the mindset that enables software engineers to lead difficult projects, learn technologies quickly and be overall impactful.

## The Common Denominator

High agency is the common denominator of high-performing software engineers. These are the folks who come up with innovative solutions, take full responsibility for complex systems, and view every setback as a learning opportunity. They live by the mantra: “I am bigger than my problems”.

Take, for example, how often your superstar junior engineer often outperforms many seasoned seniors. The truth is, many of the problems in the real world of business don’t need advanced degrees in computer science to solve. While hard skills are important, it’s usually the sheer will to make things happen that sets the high performers apart.

## What Does it Often Look Like ?

| Low-Agency Engineer                                      | High-Agency Engineer                                      |
|----------------------------------------------------------|-----------------------------------------------------------|
| Needs detailed instructions for tasks                    | Requires minimal guidance                                 |
| Afraid to ask for help when stuck                        | Asks for help without hesitation when stuck               |
| Needs to be dragged to high-stakes projects              | Volunteers for high-stakes projects                       |
| Does the bare minimum                                    | Leaves the codebase better than they found it             |
| Avoids disagreeing with more experienced team members    | Speaks up, unafraid to disagree with anyone on the team   |
| Keeps postponing learning that new framework             | Learns that new framework in a heartbeat                  |
| Ignores bugs they find                                   | Fixes bugs immediately without asking permission          |
| Peers are unclear about their contributions in retrospectives | Peers praise them for “helping everyone, everywhere” |
| Never asks uncomfortable questions                       | Boldly asks uncomfortable questions like “Why are you leaving our team?” |


While some of those behaviours might not be considered optimal — like fixing an unrelated bug immediately, which can derail a task and delay deliver — the goal here is to highlight the high-agency mindset. Over time, high-agency engineers learn to prioritise effectively, deciding for example when it’s wiser to simply track a bug.

Also remember, not exhibiting all these behaviours doesn’t make you a bad engineer — [avoid all-or-nothing thinking](https://joedemoraes.com/2024/05/10/the-impact-of-all-or-nothing-thinking-in-software-engineering/). The point is to grasp the nature of the mindset that drives these actions.

## Improve It
Your current sense of agency is largely influenced by genetics and your upbringing. For instance, if you were encouraged to tackle things on your own as a child, you likely developed a robust ability to solve problems and a strong sense of self-efficacy. The great news is that **anyone can build and strengthen their agency**, regardless of their past.

### 1. Start with Awareness.

First, recognise where you currently stand. Reflect on times you’ve acted with low agency and identify high-agency developers you admire. Observe their actions closely, and if possible, work alongside them. Regularly write down your thoughts and experiences in a journal. This journaling practice will help you see agency everywhere and make you objectively conclude that your agency is something you can improve.

### 2. Find Your Inspiration.

Even with awareness, understanding your motivations is crucial. Often, a mix of cognitive biases, personal motivations, and personality traits hold us back. While this is a bigger topic that will not be covered here, moving the needle today can be achieved with a simple strategy: finding inspiration. For example, by reading biographies of high-agency individuals like Elon Musk or Jeff Bezos. Here is a powerful quote from Steve Jobs that resonates with me particularly:


"*[…] Everything around you that you call life was made up by people that were no smarter than you. And you can change it. You can influence it. You can build your own things that other people can use. And the minute that you understand that you can poke life; if you push in, something will pop out the other side; that you can change it. You can mold it. That’s maybe the most important thing is to shake off this erroneous notion that life is there and you’re just going to live in it, versus embrace it. Change it. Improve it. Make your mark upon it. I think that’s very important. And however you learn that, once you learn it, you’ll want to change life and make it better. Because it’s kind of messed up in a lot of ways. Once you learn that, you’ll never be the same again.*"

— Steve Jobs

[You can also watch it](https://www.youtube.com/watch?v=kYfNvmF0Bqw)

### 3. Take Action.

Use your newfound inspiration to take your first steps to **shift your agency skills upwards.**

![Agency in Software Engineering](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ovlk8lgr21wzf83yz7d8.png)

Explore concrete strategies to enhance your creative **problem-solving, resilience, and confidence**. Here are some tips:

**First Principles Thinking**: Break down complex problems into basic elements and reassemble them from the ground up.
**Hackathons**: Participate in hackathons to sharpen your problem-solving skills in a time-pressured environment.
**Journaling**: Keep a journal to reflect on what went wrong and how you can improve.
**Understand Cognitive Biases**: Learn to identify and mitigate biases like Status Quo and Negativity Bias. Recognizing these mental pitfalls can sharpen your decision-making and resilience.
Not all strategies will work for everyone, and there is no silver bullet. Find what works for you and then focus on incremental improvements. The good news is that enhancing your agency accelerates your learning across the board. With this mindset, no (hard or soft) skill will be beyond your reach.

As Steve said above, "_once you learn that, you’ll never be the same again_".