WhizApp, the company I introduced Personas to a few years back, reached the business decision (due to financial & legal pressures) to replace a 3rd party engine in their DeskTop product-line with a similar, but entirely different engine from another provider. The project initially stirred all sorts of emotions and opportunities within the company:
- Marketing thought it a sad waste of money and energy to gain very little additional product or market features
- Product Management agreed with Marketing, while fearing the product would lose functionality
- Development thrilled at the idea of replacing an old, archaic piece of software with one that was more modern and more functional.
The company treated the engine replacement as a relatively pure development project. Take out the old and put in the new. Experts in the subject matter were hired to work on the project. Time and customizations from the new engine provider were part of the deal. Original estimates from development was for the team to finish the work in approximately 4 months. As anyone not directly involved in the project would suspect, the work was far more complicated than that.
The engine had UI responsibilities, database responsibilities, and middleware responsibilities. It touched and affected every part of the product – including a significant amount of documentation and example code. The old engine and the new engine wouldn’t connect the same way, wouldn’t have the same interface, wouldn’t run the same code. There would be changes. Additionally, the old engine had bugs, but the new engine had different bugs. Finally, the developers wanted to take this opportunity to do better – to do more – with the capabilities of the new engine. Where to start? How to get the job done? The lead developer emailed me a 6-page email of questions and concerns. Yikes.
I pulled up our market research on the percentage of users who said they used that engine regularly. The number was high - 70% if not higher. This was going to be further trouble, as Product Management and Development had believed that only a small number of people actually used the that part of the product.
We pulled the product experts (Product Management, including the founder and CTO) and the developers into a room to put together a game plan. First we discussed the usage data and concluded that everyone was right – always a good meeting conclusion :-) – and restated the facts: Most users used some part of the engine, but the majority of them used the functionality for relatively simple purposes. In fact, because we had excellent personas, we immediately recognized that the usage was split across the personas. That was good news.
DeskTop had a primary persona and a secondary persona. For discussion purposes, I’ll call them “Bonnie” and “Clyde” respectively. We knew Bonnie had far less technical prowess than Clyde and little ability to try a different route to solve their problem. In fact, we suspected Bonnie barely understood what she was doing when she made use of this engine.
Impressively, with less than 2 hours of discussion, we had a solid, small, set of persona-based guidelines that successfully guided the release priorities, the development and qa (and helped the marketing) of the engine replacement project for the duration of the project, while also addressing the tech lead's concerns.
The list looked like this:
Rule 1: Both Bonnie and Clyde use the product to reach a satisfactory outcome. (Duh.)
Rule 2: Since Bonnie would be thrown off her game by new or different outcome – even if that new result was actually a bit better, our development staff had to protect Bonnie by providing the same outcome as before for the functions that Bonnie used.
Rule 3: Since Clyde was thrilled by and skilled to handle complexities in his work and in our product, he would be thrilled with as much nuance, flexibility and capability as we could provide. Clyde would respect and be excited by better results and wouldn’t be troubled by a result that was essentially the same as before, even if it was presented differently. Therefore, our development staff was free to expose and make use of the capabilities of the new engine for Clyde’s use and enjoyment, so long as Bonnie was protected as stated above.
Corollary 1: We fix bugs whenever possible
These guidelines boiled down to the simple statement of “Feel free to wow Clyde but make sure you don’t break Bonnie.”
And with that, everyone was empowered. The subject matter expert developers were able to decide for themselves which functionality Bonnie needed to remain unchanged (or they could ask Product Management if they were unsure). The business and development priorities were clear and the developers were able to decide for themselves if there was time for a Clyde-wowing feature.
In the end, the project ended up taking 8-10 developers almost 2 years to reach the point of stability. But until personas were applied to the problem, the project had been unguided and at risk of spiraling out of control.
UPDATE: I re-read what I wrote hear based on Saeed Kahn's question. To paraphrase, Saeed asked "Isn't this a case of making sure the old functionality worked for the old users and new functionality would be available for the new and powerusers?" Here's my reply:
Our solution was different from "the old "stuff" has to work as before, or if it
is technically not possible, then an automated upgrade path so the old "stuff"
is upgraded with minimal user effort and works." Though this was my starting
position as well on the previous release of the product. Our product, including
this engine, had more subtle implications because it included continuous
compile, execute and document. We didn't have a datastore that would tell us the
previous output, and since we no longer had the previous engine, we couldn't
know what they'd used our software to create and couldn't automate an update.
(Clear as mud?)
Anyhow, this product - while still looking to grow - was
funded by the existing customer base which was millions strong. This engine
replacement was due to the collapse of a business relationship with the provider
of the previous engine. So we weren't replacing this engine with an eye to new
users. (Though we always wanted new users and did other work to gain
them.)
In this situation, the old results were very difficult to
duplicate and were in many ways sub-standard. What we needed to understand was:
- The combination of compiler instructions must give an end result
precisely as before. (Knowing that each of these was nearly impossible
to achieve, so it needed to be as small a collection and combination as
possible.
- The combinations of compiler instructions could work a new way.
It
turned out that our persona-based use model captured the situation perfectly.
One persona re-used existing work ad-infinitum (as a sort of robust, qa'd
template), so any re-work would affect too many existing projects. Plus that
persona was already over his head with the compiler and asking him to
re-implement differently would be disastrous to his work. Our other persona
tended to use our product The other persona used our product for unique work
each time. He just needed to learn a new way of working. And that persona
tended to be excited by new compiler, execution and documentation
opportunities.
We never did and never were able to make a complete list
or combination of compiler instructions that needed to work the old way. We
were forced to work on a "I'll know it when I see it" (aka pornography) basis.
Our developers and product managers made good decisions, and then our QA and
beta customers second-guessed those decisions until we had done the best we
could do.
An additional value of using the personas in this way is they
prevented the dev staff from speding all their time on the cool/sexy work they
wanted to do, helping them stay focused on the dull/necessary work of the
product.
- Bonnie