Minimal IT logo and link to home page
Research, training, consultancy and software to reduce IT costs
Home | About | Newsletter | Contact
Previous | Next Printer friendly
25 September 2012

One day all software will be built like this

By Andrew Clifford

Products that are developed in themselves are initially hard to work with but eventually become much more powerful than conventional products.

A colleague was explaining the differences he saw between our software, Metrici Advisor, and another product he uses. "In Advisor, every thing is the same. In [other product], we do development in Visual Studio, we configure the product in special admin screens, and the user uses a totally different set of screens. But in Advisor there is no distinction, you do all development, configuration and use in the same tool. It's not wrong, but it is different and it takes some getting used to."

Technically, Advisor is a homoiconic web platform built on an enhanced triple store. In simple terms, this means that it is an up-and-running service on the web, Advisor's functionality is written in Advisor itself, Advisor can hold any data, and there are no limits to what Advisor can do. This is particularly useful in our target market, of professional assessment products, where data structures and functionality differ subtly from one situation to the next.

Building a system this way has its challenges. The main challenge is needing to create all the functionality of the tool in the tool itself. Over the past year or so we have been "bootstrapping" Advisor, developing functionality to create questions and questionnaires, to manage assessments, and to analyse and report on results.

Although it is challenging, having a product written in itself gives us huge opportunities. We are dealing with only one set of technologies, not three. We can build development and configuration functionality which precisely meet the needs of specific solutions. As we develop new functionality in the tool, it becomes available to all parts of the tool, and enhances our ability to create yet more features. From a slow start, the capability of the platform and our development speed increases exponentially.

To give an example, we have recently been developing functionality to package and install products in client accounts. But because of the way Advisor is built, we can use this functionality elsewhere. To help our own development processes, we have used the new functionality to create "meta products", products for developing products. These include our latest features and best practices as a ready-to-use development environment, even including a skeleton for the product itself. Because of Advisor's structure, functionality to solve one problem (improving speed and reliability of commissioning accounts for clients) directly solves another (making development of new products easier and faster).

Advisor has a very specific combination of features: a full web platform (a ready-to-use service, not just some web tools), homoiconicity (the tool's functionality is defined in the same data structures that the tool itself maintains) and triple stores (able to hold any data in any structure). Using the tool every day, I am constantly amazed by the power of this approach. It is almost magic, and far exceeds our original design goal of building a more flexible assessment tool. I fully understand other people's scepticism, but based on my experience I think that tools built on these principles will inevitably overtake others because of their simplicity, flexibility and development speed. One day all software will be built like this.

Next: IT's ethos


To subscribe to the newlsetter, simply send an email to
Privacy policy

Subscribe to RSS feed

Latest newsletter:
Magical metadata

We use the term "metadata-driven" to describe IT solutions in which functionality is defined in data. Taking this to the extreme can provide unparalleled levels of speed, simplicity and versatility.
Read full newsletter

System governance

System governance helps you implement high-quality systems, manage existing systems proactively, and improve failing systems.

Try it for free!

Find out more