The Importance of Vision as a Developer
Tags: softwareengineering, leadership, vision
Published: 2022-02-18 19:27:43

Fixer Upper. We all love it. Even if you hate it… you still kinda love it.

If you are unfamiliar with the show (living under a rock?), Chip and Joanna Gaines help prospective homeowners build their dream homes by finding cheaper “fixer-upper” homes and remodeling them, saving the homebuyer’s money. The process is called [house-flipping](https://www.cnbc.com/2021/12/20/home-flipping-more-competitive-less-profitable.html), and it has become an enormous phenomenon - especially here in the US.

But how can someone take a house in shambles and turn it into a dream home? How do they avoid getting stuck while remodeling and throwing in the towel?

Many qualities are required; persistence, skill, sacrifice, etc.

But there is one quality that is neccesary. One thing that is the predictor for success or failure.

That difference is vision.

## What is Vision?
Simply put pision is the ability to see. In the creative context, vision is the ability to see how things could be. The ability to grasp a different perspective unique to everyone else. The ability to imagine a different world than the current reality.

This is why we call visionaries, well, visionary. They can envision things no one else can. And the household names we remember are the ones who had vision and the ability to bring it to fruition: Bell, Edison, Earheart, Jobs, etc.

But it all starts with vision.

## Why is Vision So Important?
Why is vision so important? Isn’t it just the same as having a goal or plan?

I’d argue that true vision comes before creating goals or laying out a plan. Vision is something more significant. A vision says, “We can do something different. We can change how the world works. We don’t have to accept the status quo.”

A strong vision is more immersive than a goal or a plan. It might be so grand that a single goal can’t contain it. It might be so hard to articulate that no plan seems to accommodate all of the complexity to make it happen. A vision is more like a guidebook, helping you choose plans, steps, and goals to realize the vision you have.

Many successful athletes and actors talk about picturing themselves getting the medal or landing the role. Climbers or runners describe what it will feel like to send the summit or cross the finish line. House-flippers and creatives can talk about the potential they see in an old house or a blank canvas in exquisite detail.

Vision like this acts as both a direction and a motivator. It sets the course for where you are going and provides enough tangibility to something distant in the future to keep you motivated.

## Vision in Development
If that sounds like a bit of mumble-jumbo self-help garbage to you, stay with me just a little bit longer. Vision isn’t just about achieving your dreams of changing the world. It’s also crucial for building anything significant or complex - like software.

Let’s go back to house-flipping for a second. If you bought a house with the goal of flipping it for profit, you might get stuck halfway confused about what to do, how to do it, and what direction to focus your energy. You might have been so focused on the goal of making money that you forgot to see what was possible - and if it would be profitable. Even if you did have a thought-out detailed plan, you might run into a roadblock and realize that your perfect plan wasn’t so perfect after all.

But vision is different. Bringing a vision to fruition can still be possible, even if the concrete plan changes frequently. In software, vision is critical for that exact reason: plans and goals can change quickly, but we still need a motivator for technical excellence and a direction to march towards.

An excellent technical vision describes how developers feel when writing code and the ease with which they can monitor their software. It explains how teams work together and the breadcrumbs they leave along the way to make the path clear for the next team. How people feel working on the engineering team and how they feel supported by management might be included too.

Vision can also be micro. A senior engineer might have a vision for how a particular codebase is organized. They might describe the reliability of their service or how easy it is to be on-call for that service because it rarely goes down. They might even discuss the throughput they think is possible to supercharge the business.

## Creating a Vision
If you’re still here, the next logical question is, of course: how do you create a vision?

While there is a lot to explore in the answer - much of which can’t be covered in this article - there are a few key things to cover. The most important aspect is found in answering two primary questions:

What will the future feel like when your vision is achieved?
How will things be different from today?
Be as detailed as possible. Don’t say, “Work will be easier.” Say, “Work will be easier to accomplish because our codebase is easy to understand, and we have tests to identify when we’ve broken functionality.”

When you have this level of detail, it paints a more vivid and clear picture of where you want to go. A stick-figure picture of a mountain is much less compelling than a painting of a mountain with color and dimension. Create the painting.

## Gaining Buy-in
The hardest part of a vision is articulating it to others to gain buy-in. You will likely need their support, especially in the world of software where teams own software and not individuals.

How do you gain that buy-in?

The power comes from being able to articulate the vision in your head in a compelling way to others. This is another reason why having an extremely clear vision is so important. The more detailed and clear your vision is, the easier it will be to describe to others.

Naturally, some will disagree with your vision. Others might hear it and be impartial; they don’t hate it, but they don’t like it either. But other will get it and buy-in. As more buy-in, it becomes easier to gain more since everyone wants to be part of a movement of some kind (even if it’s small).

Keep talking to your team or fellow leaders about how you think things can be different how your vision can take your team to the next level. Practice humility, of course, but don’t be shy either. As Andy Hunt and Dave Thomas remind us in [Pragmatic Programmers](https://pragprog.com/titles/tpp20/the-pragmatic-programmer-20th-anniversary-edition/), the best idea is worthless if no one knows about it.

---

Building great software and great teams requires a vision for the future. One that elevates the current reality into a better one. And while goals and plans are great, having a foundational vision of what that world looks like in the future will help you stay motivated, navigate changes, and create buy-in along the way.

If you are a leader (or becoming one) in your software team, take an inventory of the current work environment. Take a look at how teams operate and how work flows through your organization. Identify a few things that could be better and imagine what it would be like if none of those issues existed anymore. What would that world be like?

Write it down, make it abundantly clear, and start working towards it.

Happy coding!

_Cover photo by [Matt Noble](https://unsplash.com/@mcnoble?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText) on [Unsplash](https://unsplash.com/?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText)_