Who Needs Vision?

image

I admit it—I don’t like Successories, the pretty pictures with inspiring sayings that don the walls of corporate America. In fact, my first purchase to decorate my team’s new space was the poster-sized Demotivator Calendar from despair.com. I (and virtually every good developer I’ve ever met) love these spoofs on the ever-present corporate décor.

You might think I enjoy mocking Successories because I believe the words they portray like Values, Vision, and Mission are meaningless corporate-speak meant to manipulate shallow-thinking cubical jockeys. If that is what you conclude from a “demotivator” on my wall, you would be dead-wrong. image

I despise Successories for just the opposite reason. I believe the concepts these pretty posters are meant to inspire employees with are vitally important–way too important to trivialize with a one-size-fits-all platitude and poster.

Over the years, I’ve seen so many leaders (in both the social and commercial sectors) that struggle with communicating concepts like values, vision, mission, and strategy. So, it’s no wonder that so many people have completely written off the words themselves. They now associate a word like vision with the vapid trivialization that is the meaningless poster. This is tragic.

What to Do About It

I have found that the confusion starts when we fail to define our terms. How does mission differ from vision, and is either really any different from strategy? What do we mean by values? If we cannot define the terms, we cannot think clearly about them, and we certainly cannot communicate them to our teams. We’re left simply resorting to something like “We are a company with an obligation to shareholders to make money. Bottom line: we need to make money.” While this is completely true, our people hear this as “We do anything for money.” We have some unpleasant names for people with this mission statement. No one wants to sign up for that. We must do better.

Defining Terms

Let’s start with some definitions…

Values articulate the core things we care about. Our values inspire our vision.

Vision is our picture of how the world could and should be. Our vision defines the end we strive for.

Mission is what we do every day. Mission is executable and it doesn’t change lightly.

Strategy lays out a plan for executing on our mission.

Goals are surfaced by our strategy.

Objectives are framed by our goals.

Tactics are driven by our objectives and determine how we spend our time and energy.

I see these concepts as layers of foundation, each one flowing from and building off of the lower layers. The lower layers are more abstract, simple, and unchanging. The upper layers are more concrete, detailed, and subject to changing circumstances.

Vision

Values

I believe much of our values are universal. We all have a drive to leave our mark on the world, to give more than we take, and to be competent. Software people add to this a strong desire to create. We find it deeply satisfying to solve real problems with elegant models formed in our imaginations and elegantly crafted in code. I am sure it is the same rush a painter gets as he translates the scene in his mind onto canvas to the delight of his audience. He comes to love the smell of paint the same way we come to love the sight of clean code.

Vision

Vision is seeing what isn’t, but could be. Vision isn’t about what we do, it’s about how we want things to to be. Vision creates an anticipation of a better future. That anticipation motivates. It overcomes the apprehension that comes with change and drives us out of our comfort zone.

SmallerEinstein

Having, believing, and communicating a compelling vision for my team is the most important thing I do as a leader. Everything else flows from it.

Lewis Carrol’s famous “If you don’t know where you are going, any road will get you there.” has become cliché, but only because it expresses “common sense” that we often miss.

My team creates solutions for service businesses with field workers, like HVAC install and repair, plumbing, pest control, cleaning services, and others. The work these companies do is critical to the quality of life we all enjoy. We believe the tools these people currently have to run these businesses could be so much better. We burn untold gallons of fossil fuels routing drivers inefficiently. So many hours are wasted annually because, not only are we scheduling, but the entire process is unpredictable.

Our vision is of a transformed service industry—quicker response times, tighter scheduling windows, more customers served, and less fuel consumed. In order for us to accomplish this, our solutions must be highly scalable and allow for high levels of developer productivity.

Mission

If values and vision answer the why question, mission answers the what question. My team’s mission is to deliver software solutions that bring about the transformation of field service business we envision. We can only accomplish this mission if we have simple yet scalable architectures and clean code.

Strategy

If vision answers why and mission answers what, then strategy answers how. My team is executing on its mission through several high-level strategies.

  • We use iterative development cycles and the other agile techniques to ensure that we are always working on the highest value features for our market.
  • We are building a distributed system of event-driven services that each follow the Single Responsibility Principle so we can scale the application as well as the development team(s).
  • We are always striving to improve our skill in writing clean code.
  • We follow test-driven development to keep our designs clean and our code reliable.

Goals, objectives, and tactics each successively further flesh out the details of how we plan to make our vision a reality. Maybe more on those in another article.

Conclusion

image

Putting Successories on the wall is a substitute for vision like a Lunchables is a substitute for a fine steak dinner.

image

The Effective Software Team

image

I’ve spent the last five years immersed in trying to answer two questions: how to build scalable software systems and how to get teams to perform at a high level and build those great systems that exceed expectations.

Over those years, I’ve learned from varied sources: blogs, books, podcasts, colleagues, and my own experience. I will be cataloging my favorite ideas and resources for building, nurturing, facilitating, and leading effective software teams. High level topics will include:

  • Hiring
  • Training
  • Leading
  • Processes
  • Collaboration
  • Self-organization

I will post at least one article per week for the the next year (or more). I will address topics as they hit me. I’ll catalog and index them later.

TDD and the Power of Habit

“Champions don’t do extraordinary things. They do ordinary things, but they do them without thinking, too fast for the other team to react. They follow the habits they’ve learned.” –Tony Dungyimage

The quote above comes from The Power of Habit: Why We Do What We Do in Life and Business by Charles Duhigg. This book is a fascinating look at habits—what they are, how they form, how they affect us, and how can we choose our habits.

The Habit Loop

Most of us are barely aware of the habits that make up so much of what we do, but psychology and neuroscience researchers have made great progress in understanding how habits form.

image

At the core of this research is what Duhigg calls the habit loop. We usually have no trouble identifying the routine, which is what we think of as the habit itself. The value comes from identification of the two other elements of the habit loop.

The first insight comes in realizing that habits are driven by some kind of reward. The reward could be virtually anything–relief from boredom, sense of completion, etc.image As our behaviors result in the reward we seek repeatedly, our brains literally restructure themselves. Our brains move the instructions for performing the actions needed to invoke the reward to areas that can operate without our conscience thought. Our habits become become so deeply encoded that they become almost impossible to separate from who we are.

The second insight comes in recognizing that there are particular cues that trigger the routine in pursuit of the reward. Cues could be just about anything as well–a feeling of boredom, the sight of a particular object, the presence of a particular person, etc.  Identifying these cues are key to understanding and changing our habits, but you’ll have to read the book for that.

Keystone Habits

Studies have documented that families who habitually eat dinner together seem to raise children with better homework skills, higher grades, greater emotional control, and more confidence. Making your bed every morning is correlated with better productivity, a greater sense of well-being, and stronger skills at sticking with a budget. It’s not that a family meal or a tidy bed causes better grades or less frivolous spending. But somehow those initial shifts start chain reactions that help other good habits take hold. If you focus on changing or cultivating keystone habits, you can cause widespread shifts. However, identifying keystone habits is tricky. To find them, you have to know where to look. Detecting keystone habits means searching out certain characteristics. Keystone habits offer what is known within academic literature as “small wins.” They help other habits to flourish by creating new structures, and they establish cultures where change becomes contagious.

Keystone habits are the drivers that lead to other habits. For example, studies have shown that people who adopt the habit of regular exercise find that seemingly unrelated areas of their lives change for the better (being more productive at work, smoking less, being more patient with their kids, etc.).

Small Wins

Small wins are exactly what they sound like, and are part of how keystone habits create widespread changes. A huge body of research has shown that small wins have enormous power, an influence disproportionate to the accomplishments of the victories themselves. “Small wins are a steady application of a small advantage,” one Cornell professor wrote in 1984. “Once a small win has been accomplished, forces are set in motion that favor another small win.” Small wins fuel transformative changes by leveraging tiny advantages into patterns that convince people that bigger achievements are within reach.

Small wins are those sure steps in the right direction that separate high performers from everyone else.

TDD: Keystone Habit of Great Developers

image

The agile software movement centers around incremental and iterative steps with feedback mechanisms that allow for lots of small adjustments to bring the project to success. So, when I hear Duhigg talk about small wins, it resonates with what we’ve found in building software.

Test-Driven Development (TDD) is the most central of agile practices. It fits Duhigg’s definition of a keystone habit.

TDD and Small Wins

The demands on software developers get bigger and more more ambitious all the time. We presented with complex problems that we generally don’t know how to solve. It is easy to become overwhelmed by the magnitude and get bogged down trying to boil the ocean with code.

The discipline of TDD forces us to methodically break problems down into small chunks. Each passing test is a win and one small step closer to the system the customer needs.

The Cue is obvious: a customer needs a new feature.

The Routine is the well documented (but seldom practiced) red-green-refactor loop.

The Reward is the passing test and a thoroughly executed unit of responsibility completed.

The cycle continues, with small wins coming one after another until the feature is complete.

TDD as Keystone Habit

The TDD habit has many follow-on benefits beyond completed, tested software. Every time we write a test before we write the code, we remind ourselves of several truths:

  • If the software is worth creating, it is worth ensuring that it works.
  • Each unit of functionality must have a single responsibility and its dependencies must be loosely coupled.
  • Keeping the code clean is vital. Keeping it clean is made possible by the protection provided by a comprehensive suite of tests.
  • Writing only enough to make the test pass keeps our focus on the customer’s requirement and not a speculative future feature.

I’ve found a common idea emerging among the colleagues that I respect most: we would rather hire a developer that practices TDD and does not have experience in the primary programming language our shop uses than hire a developer with that programming language experience that does not practice TDD.

Language syntax and style is relatively easy to learn. TDD is a keystone habit of great software developers.