Today was demo day at work, but not demo as in demolition, a favorite of HGTV fans. (Though most software developers have worked in code bases they'd like to demolish.) Our demo is for demonstration, where we show what we've been working on to our customers. This release, on the surface, seems less interesting because so much of it was improvement toward the general robustness and durability of the app, but we also dedicated a ton of time to shoring up and revising one of our core features. The reaction from our customers was one of excitement, and dare I say joy. I can say after a lot of years in the business of making software, you don't get a lot of chances to see people be excited about what you built. Demo day is the day that job satisfaction goes up, and on a regular, two-week cadence.
The key to our success so far is pretty obvious, in that we solve the problems of our customers, and we try to do it really well. They're quite literally embedded in our process as stakeholders. What we've found is that customers will look for, and often find, ways to achieve what they want in unexpected ways. We work to understand those problems, and that's where we apply our creativity. The cleverness comes when the problem has been refined and we can act on it with something awesome.
I think too many organizations start with an idea where they thought of a solution to a problem that's so awesome that customers don't even know that they need it yet. How many apps (and especially mobile apps) are introduced year after year that never become viable businesses? Anecdotally, I'd say that it's most of them. It's arrogant to believe you have the answer to a question that no one is asking. Yes, sometimes there are unicorns that appear, backed by exceptional genius. I might even agree that experimentation is good because it's what moves us forward, even at the expense of mostly-failure. However, if your core interests are solving real problems that improve the lives of people encountering those problems, building a sustainable business, making something enduring... trying to be a unicorn is not the goal.
For part of the time I was working in the world's largest software company, I worked in a group that was dreaming up a product that they were certain people wanted. There was a focus group, and the group interestingly came up with some ideas that were tangents to the things our group was pitching. Our leaders decided that we were mostly going to stick to what we were thinking about anyway. At one point, I was directed to take a sub-feature and flesh it out as a wholly defined thing, and then pitch it in a meeting that would easily cost $3,000 in salary and benefits. I objected to this direction, and ended up doing what made sense to me: Define the basics, list the assumptions, and come up with a game plan to validate the assumptions and further refine the feature.
Many of the people in that meeting were dissatisfied with this, and my boss later explained I was going about it wrong. As he put it, it was our job to dream up all of this awesome stuff and get it to market without any of that refinement and validation that I was after. It was that conversation that I knew I had to get out of that group, when he said, "That's how you develop software."
That group never shipped anything.
Frustrating and unfortunate as that situation was, it was a blueprint for what not to do, and I've kept it in mind for much of the last six years since that conversation. These days, I'm reminded every two weeks that the extraordinary satisfaction I get from our customers happens because we apply our "genius" in response to that constant refinement and understanding of the problems we need to solve. Our collaborative team comes up with some really great solutions, but we're not arrogant enough to believe we know completely what they are ahead of time.