At Atomic, our managing partners do most of our official pre-project consulting (sales) work. As a developer, I’m dedicated full-time to a client project. So I’m typically not involved in meeting new clients, and I wasn’t aware of how projects and clients come to Atomic.
This past quarter, I made it a goal to learn more about the upfront pre-project consulting process. I sat in on some sales meetings and interviewed some folks involved in pre-project consulting. I even got involved a bit in creating some artifacts—a statement of work and a budget model estimate for a real project.
The experience taught me a lot of skills that are also relevant to development.
1. Focus on the Big Picture
I learned that a big part of the sales process is understanding the overall complexity level of a project. We use this estimate of complexity to develop a budget that gives the project team enough time to find success and deliver high-quality software, but also keeps the project lean and focused without wasting money. Balancing these two concerns is imperative in setting an appropriate budget.
As I was trying to create a budget model estimate for a project, I found it interesting to think about how smaller details played into the bigger functionality of the software system I was considering. But I didn’t need to understand all of the details to estimate the complexity level of a given project. These details will come out as the project team implements features.
Ironing out implementation details is not a part of the pre-project process. It’s more important to think about complexity through a variety of lenses so that you can be accurate, but not necessarily precise. For example, considering comparable projects, the big-picture goal, and potential obstacles can help you foresee issues and feel more confident in estimates.
In terms of development, this idea helps me keep my clients’ goals front-of-mind. When implementing a feature, it can be tempting to waste time on details that no one but you will ever notice. By keeping the bigger picture in mind instead, you can use time more responsibly.
2. Ask Questions to Confirm Assumptions & Convey Understanding
When I was a kid, I went through a phase where my parents’ favorite joke was that I was from the “I Know” family. Whatever they would say, my response was the same: “I know.”
With time I’ve learned that often, I don’t know. In the sales process, in particular, there are many unfamiliar business domains with new terminology. There have been many times when I thought I understood but soon realized that I had a misconception.
John Fisher, a managing partner in my office, suggested that I ask questions that call out and state assumptions. For example, in one sales meeting, it seemed the client had two goals for their engagement with Atomic:
- Getting the software made
- Teaching their organization about Atomic’s Agile software processes
I asked about this and learned, much to my surprise, that making the software was much less strategically important to this client than adopting an Agile approach into their organization. I would not have realized this without taking a step back and considering my assumptions.
3. Embrace Uncertainty with Curiosity
Uncertainty in software is inevitable. There are no blueprints or cookie-cutter solutions for what we’re trying to build. If there were, custom software probably wouldn’t be the right solution.
When dealing with this uncertainty, it’s important to cultivate a thoughtful curiosity, listen, and share your expertise. Ask questions about goals and make others feel welcome to share their hopes and fears for the project.
Of the three skills, this one is most easily applied to development work. Being curious and working through the areas of most uncertainty first can help reduce risk early on in a project.
Overall, learning about sales has been informative and surprising. A lot of the sentiments and frameworks are applicable to my current work and have given me a more holistic understanding of what it means to be a consultant. I’d encourage anyone to give it a try, and share what surprises you.