Accidental paradigm
Necessity may be the mother of invention. But as any parent knows, sometimes your children surprise you.
Many years ago, we built a web-based tool for running surveys. We started out doing surveys of organisations’ IT systems. We also did some HR work such as employee surveys.
The tool was goodish, but customers wanted more. Different ways of asking questions, different ways to group surveys, different evaluation processes, different outputs. Although the tool had some customisation capability, it was too hard. It was taking so long to customise for each engagement we could not economically provide the service our customers wanted.
There were some good bits in the system. We had a rich questioning style and questions were defined in data so were easy to change, and could be versioned. We auto-generated survey pages, and could put survey answers into hierarchical groups. We had some customisation for processing answers into summary results. But we wanted these features applied in different ways. We wanted to apply groupings to questions, so we could easily find sets of questions for different surveys. We wanted easily customisable processes to generate surveys. We wanted to define different patterns of questions as easily as we could define individual questions.
We knew that if we wanted to make the system worthwhile, we had to do something.
We could have hired a bunch of programmers, but we didn’t have the resources to do that and didn’t want to complicate the business model by bringing in more people.
So we did some hard thinking. We looked at our data model, and could see that it contained all the features we needed, just not in the right places. If we could apply to the definition of surveys the hierarchies, soft-coding and processing that we applied to running surveys, we would have what we needed, and we could make these changes without a lot of development. So we came up with a design that combined the features of our current system in a different way.
As a parent, it always surprises me when my children learn skills that neither my wife nor I could imagine having - such as, say, playing the classical guitar.
In the same way, we didn’t imagine that the new system that we we had created would be able to do what it does. We wanted to create a survey system that could define any sort of question, and present that in any way, and in any structure, with any processing. But once you can deal with any data in any structure and any processing, you can apply that to anything, not just surveys.
We realised that what had been intended as a way of avoiding a costly development had stumbled across a whole new paradigm.
We were not looking for a new paradigm - we just needed to solve a problem. But once we realised what we had stumbled across, the whole focus of our business changed. We were no longer in the survey business. We had found a way of reducing development time for business applications, way beyond anything that can be achieved by other development tools. But next we needed to understand the paradigm better, and work out how to create a business around that.