Several years in the making, our unique technology is now at work in our first on-demand products. These products are just an initial part of our broader vision to redefine how powerful software can be in the hands of non-programmers.

We make building blocks to help you put the web to work

As you read this, somewhere in the world someone is probably writing code that's not necessary. The code that this person needs already exists, but even if they can find it, it's likely not in a form that fits the rest of their code. If you look at the software industry as a whole, it's constantly creating enormous amounts of one-off, non-reusable code. The industry does this because making software that fits together from parts requires a comprehensive engineering focus on reuse, which almost never happens.

We learned a lot of lessons about how to connect pieces of software together from doing enterprise-scale integration for several years. We took this experience, and invested several more years of experimentation and evolution to create the technology we have now. This will explain our philosophy and our vision for where we think we can take this technology.

Workshops vs Factories

We'll start by waxing metaphoric with two scenarios. In the first, you have a workshop where widgets are being made. The people working in the workshop organize their work around their skills, so the metal worker, let's say, does all the metal work for a widget in one sitting. Then the widget gets wheeled over to the paint shop where it gets polished and painted. Finally it goes over to the wiring shop where a big nasty tangle of widget wiring gets installed.

In the second scenario you have a factory making the same kind of widgets. Instead of skilled craftspeople making widgets one at a time, you have a flow of widgets moving down an automated production line. The process for making the widget is broken into lots of small steps, where machinery like stamping presses, laser cutting tools and welding robots are used.

In the workshop, the people can only apply their skills to one widget at a time. In the factory, the skills and knowledge are embedded in the plant and in the process. In the factory, the production steps are much smaller, and crucially, are organized by connecting together the inputs and outputs of the machinery. We'll come back to this concept in a moment.

But first, let's make an easy analogy: software is built on a model like that resembles the workshop much more than the factory. Ferrari's are built in small numbers on the workshop model too, while Toyotas are stamped out by the million on the factory model. That largely explains why a new Ferrari costs about twenty times as much as a new Toyota. It's not your imagination that custom software is expensive. When you hire people to write code, you are indeed paying for the software equivalent of a Ferrari.

Don't Make a Factory to Make Software. Make a Factory that is Software

Let's return to the idea that factory production connects together the inputs and outputs of plant machinery. We did actually cheat a little bit with our workshop vs factory illustration. You don't really make the same kinds of widgets in a workshop as you do in a factory. In fact, you tailor the design of factory-made products specifically to fit the production process. The art of modern process engineering is all about connecting together the right kinds of production machinery so that you can flexibly manufacture a variety of products.

What we have done with our technology is very analogous to this process. We have created an application engine that manages how lots of small software components connect together. Over time, we have evolved this application engine to the point that it joins together a limited range of component types but in an extremely flexible and powerful manner. We do not have a factory for making software. We have a factory that is software, and which can be reshaped into countless new forms without doing any conventional programming.

Our technology does not translate requirements into working code. It does not know what your intentions are when you are assembling an application, any more than a piece of lumber knows how to turn itself into a coffee table. But our technology does provide a large catalog of well-crafted building blocks, and largely automates the work of connecting them together.

Empowering People at the Edge

Look at the outer edge of the software industry, where the providers of software meet the people who buy and use it. Today, writing software requires a large and ongoing intellectual commitment. It is hard to be an expert on designing and delivering software, and also a genuine subject matter expert of any kind. People tend to naturally focus on one or the other, which means that to solve problems with software today you have to bridge different mindsets, and you have to manage a team process.

Our vision is that real users, the kind who know their business problems intimately, will be able to use our technology to assemble solutions themselves. By enormously reducing the cost threshold, and mixing in some social networking magic to help share ideas, we hope that we can unleash all kinds of tinkering networks. And maybe a force for change for the software industry.