Which of these two boardwalks is more difficult to navigate?

Mountain biking on a tall skinny feature Mountain biking on a boardwalk

Of course, the one on the left is more difficult to navigate. But why would the height matter? It’s a similar width and material and is even straighter than the one on the right.

It’s easier when it’s safe to fail. If there is no tolerance for error, the task is more demanding.

High-Consequence is High Cost

The bigger the potential harm, the more care we need to take. For instance, if the lever in your car that activates the windshield wipers on was a multi-function lever that popped the wheels off when pushed, you would think twice before turning on your wipers. It’s easy to remember to pull and not to push, but you would not pull without due care, especially when you’re zipping down the highway. You may even choose to go without your windshield wipers if your windshield was only slightly obstructed — better not risk it.

High-Consequence Software Workflows

As we create software, we face many low-key hazards. I say “low-key” because we’re not losing our wheels at highway speeds or falling 10 feet into spikey branches. When I am talking here about hazards, I’m talking about the danger or risk of something undesirable happening — something that we want to avoid.

Examples of workflow hazards

These are listed in no particular order. Some are major (they can cause production outages with significant financial cost to the business and customers) and some are minor (they can cause some lost time). All adversely impact our stress and productivity.

Adrenaline-seeking Software Developers

In mountain biking, we intentionally build hazardous features for the thrill of riding them. The goal is to make them epic and to push our limits.

At work, we sometimes run into folks who revel in complexity. They have the memory for the process steps, the skill to make the most of each expensive feedback loop, and the experience to avoid connecting to the production environment by accident. Like the mountain biker ripping down the double black diamond with a GoPro on their chest, these highly skilled software developers navigate hazards with great satisfaction.

Low-hazard work environments

We can reduce the hazards in our workplace so that we apply the full force of our skill and experience to building value for our customers and our business. Instead of devoting part of our mental processes to mitigating hazards, we can form our tools and processes to avoid them entirely.

Examples of hazard-reducing changes

  1. Limit our access to production to read-only, with a high-friction escalation process to get elevated access
  2. Apply the principle of least privilege: limit scripts to the minimal permissions they need to do their work
    • e.g., with AWS, create a new IAM role for your script with zero permissions. As you develop the script, every time you get an “insufficient permissions” error, add those permissions to the IAM role. By the time you have written your script, you will also have a bare-minimum permission set for that script to do what it needs to do.
  3. Script your manual processes
    • if you always invoke a command with similar arguments, wrap it in a zero-argument script that provides those arguments
    • if you often invoke multiple commands in sequence, write a script that invokes those commands one after the other
  4. Work in small chunks to reduce the risk of throwing away your work because of a mistake, a loss of focus, or an assumption-changing feedback
    • small units of code (high cohesion, low coupling)
    • small commits (as soon as the code is better and no worse, commit)
    • small slices of functionality delivered to customers for feedback
  5. Make a tool self-documenting
    • throw a descriptive error if a required input is missing
    • catch common errors and print a helpful instruction instead (translate cryptic errors into concrete advice)
    • change script and parameter names to clarify intent

Objections and challenges

To do this, you’ll likely have to get more comfortable with Bash, PowerShell, AWS IAM, your build pipeline tool’s specific syntax, and other unglamorous technologies. These are the things that many people choose not to put first on their résumés. They are the things that are tempting to ignore.

The outcome of not reducing hazards

If you choose not to address your scripting, permissions management, and other hazard-reducing technologies, you are likely to create systems and processes that feel more like double black diamond mountain biking trails, and less like peaceful cross-country bike rides. To change those systems, you’ll have to allocate some of your creative energy to paying attention to — and mitigating — hazards while you work. This gives the feeling that if you slip up, something bad will happen.

The joy of a low-hazard workplace

When we identify and mitigate hazards, we create an environment where we can fully focus on our creative work. Whereas a hazardous environment requires vigilance, a low-hazard environment allows for safely pausing at almost any time. In a low-hazard environment, mistakes are less common and less costly, increasing that satisfying feeling of success. The reduced cost of error makes it cheaper to experiment, which accelerates learning. It’s good for productivity, and it’s good for our mental health. Win-win!

Steps to reduce hazards in your process

You can make incremental improvements in this area by paying attention to how you feel about your work, identifying hazards, and taking steps to mitigate them.

Pay attention to how you feel while working

It can be hard to identify hazards like this because we get used to working around them. Here are some indicators that you may have a process hazard:

Identify hazards

When your feelings indicate a potential hazard, pause and reflect or discuss with teammates.

While you’re working, you can say things like:

During a retrospective, you can say things like:

Mitigate the risks

Just like a construction worker doesn’t call their boss to ask permission to put on a hard hat, you can make your work safer without escalating up your chain of command. Many hazards can be reduced in a single small step. If you take single small steps towards reducing hazards each day, you’ll find you’re facing fewer and fewer hazards in your day.

Some examples:

All these changes are small, atomic improvements that compound over time. If you want to eliminate all the hazards, that’s probably a sizeable project that would require budget approval. On the other hand, if you’re trying to marginally reduce one specific hazard, that’s as lighweight as putting on a hard hat, and can be done as part of your regular work. You can start today!