I used to think I could figure out the perfect process. A few years into my journey as a web developer, I wrote a 30-page tome explaining precisely how to build great products on the web. Over the next year, with each new project, I tweaked and tweaked sometimes feeling like I was running in circles. That’s because I was. I was learning the hard way that no two customers are the same. No two teams, problems, industries, timelines, budgets… You get the idea.
Shortly thereafter, I gave up on process.
I started telling our customers that we just put smart people in a room and let them figure it out. And, for a season, that wasn’t far from the truth. But letting go of process completely left us with a different kind of challenge. We weren’t approaching our work with confidence. While we were still delivering great products, it was taking us too long to find a clear direction. It was a frustrating time for me. It seemed that I was a man of extremes, either all in or all out on process.
Over the last few years, we’ve settled into the best of both worlds. We have flexibility to adapt to the kinds of processes our customers need. And we stay clear of prescriptive, all-or-nothing approaches.
Finding the Right Process
One of the key ways that we find the right process for each customer is what we call a discovery project. A discovery project helps us find value in the act of planning, even though we know the plan is likely to adapt. It helps us identify a vision for the project and a framework for getting there. And, because it’s not something we do alone, but with our client, we build rapport with the people we’ll be working alongside. In this way, when things change, we have the foundation necessary to work through the change instead of being deterred by it. I’ve long believed that our work lives and dies by the people involved, not the tech, the tools, or the process. Taking time early on to truly understand the problems we’re trying to solve and getting to know the people who deal with the problems on a day-to-day basis sets us up for success.
If the idea of a discovery project is new to you, check out Rob’s recent post describing them in great detail. I thought it could be helpful to step back a bit and try to understand why we really find so much value in these discovery efforts. Here’s what we try to accomplish:
Understand what problems we are trying to solve first, and then what process will work to solve them
Understand the humans who have these problems first, and then what process might serve them best
Let’s face it, most of us got into this business because we like to solve problems. When someone is interested in working with us it’s almost always because they are trying to solve a problem. As crazy as it seems, we have repeatedly found that the problem a customer thinks they need to solve isn’t always the most pressing problem they actually need to solve first. Couple this with the human tendency to jump into solving any problem we see, and we have the ingredients for even a well-run project to mis-deliver value. There are always problems everywhere! Taking the time to understand which ones are the right ones to work on means we stay focused and moving in the right direction.
Specifically, discovery projects address this by removing the assumption that we and our client start out knowing precisely what problem should be solved. Instead, we work together to try to figure this out. This requires massive amounts of humility. It requires us to listen before we speak. It requires us to ask more questions than we answer. Drew recently shared about this in the context of a very specific project—our redesign of the Shoes for Crews website—which may help make these ideas more concrete. Even with a discovery process, it’s still a challenge to keep folks from immediately beginning to solve a problem instead of focusing on which problems are the right ones. This takes discipline. Discipline and some very specific roles we employ to keep the discovery process moving. (You can read more about these roles in the article I mentioned earlier from Rob).
A large part of our discovery process is spent simply talking with people. Anyone who will be impacted by the larger project is a potential stakeholder. We try to interview these folks on their own to understand why this project is important (or not) to them. We’re keenly listening for consistent ideas to emerge in these conversations, but we’re also noting when there are wide variations in project expectations. Making time to hear what is important to each individual gives us a clear understanding of the upcoming challenges. It also encourages our customers to be more engaged—to be willing to get into the trenches with us when it’s needed. At its core, this discovery effort is about establishing trust. The software design and development process can be tough. Having a real relationship with your customer that can withstand challenging situations gives you a much better shot at being successful.
It’s Worth the Effort
Discovery projects have changed the way I think about our work. I still believe process cannot be pre-defined. But asking questions that give us an understanding of the constraints we face allows us to put into place a process that addresses those constraints and takes into account the needs of the various humans involved. And doing all of this with our clients allows us to lay the groundwork for a successful working relationship. We’re approaching our work with more confidence, and we’re more efficient in that work mostly because of our discovery projects. In addition, our clients have greater confidence in the process we suggest because they’ve been part of the conversations that lead to that suggestion. It’s this rhythm of collaboration that serves as a foundation for every decision we’ll make together moving forward.
If you’re not doing some form of discovery, I’d absolutely recommend it. And, if you have another approach working for you, I’d love to hear more!