Replace This Engine: A Persona Story
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

Hi Bonnie,
First time reading your blog. Came through a referral posting on Steve Johnson's site.
Don't take this the wrong way, but I honestly don't see how the personas helped reach the conclusion, because, to be honest, that's the only conclusion that could be reached.
i.e. old "stuff" still has to work the same for existing users, but new capabilities (of the new engine) can be exposed for new and power users.
There simply is no other choice really. I've been through this before, and it was simply a given conclusion with the dev team. Rip out the internals, replace with something better, but 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.
Can you elaborate on why WhizApp needed to use personas to convince them of something that sound like a no brainer? Again, please don't take this the wrong way.
Saeed
Posted by: Saeed Khan | January 20, 2008 at 10:34 PM
In this case it sounds like the real benefit to having the two personas was in your last paragraph:
"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."
It gave your discussion a framework for understanding that both things were needed and that the dull stuff was, in fact, necessary.
Posted by: Bruce McCarthy | February 08, 2008 at 06:14 PM