Sunday, April 15th, 2007

Setting Standards

Even though it’s a long time ago, I will never forget my disappointment after buying the SGML standard. That’s right, I had to pay for it. In those days the standard was king, users were its servants. Anyway, I wanted to master this technology and started studying. My forehead developed deep wrinkles, ending up looking like the bellows of an accordion, but to no avail. I had to conclude that the standard was impossible to understand.

I was shocked to discover that something may be completely correct and still nearly useless. The SGML standard is probably  both correct and complete, but it solves an unnecessarily generic problem. It defines a formalism without committing to a syntax. Much later XML arrived, nailed down a single syntax, and conquered the world like SGML never did.

ODBC is a classical standard for database programming in C. It is also probably correct and complete. The most horrendous database interactions are managed by ODBC. The catch is that even a simple query becomes a painful exercise. ODBC was more or less washed away by JDBC, its Java counterpart. Today no relational database system lacks JDBC. ODBC never enjoyed that widespread use. Database programming is filled with many complications. JDBC took care of them instead of pushing them back to the user.

This is not a finger-pointing exercise. If you are a system developer you often get into the situation of defining interfaces. Interfaces are like standards that many other developers have to adapt to. If you are responsible for an interface you will sense the threefold temptation: to be king, to solve the completely generic problem, and to dump complications back on the user.

In that situation you have to consider who serves whom. A good interface solves problems for its users. Make sure it is founded on real use cases, simple ones as well as complicated ones. If you notice you have difficulties describing the interface, it’s a hint that the interface may need some redesign. Your reward will be many users and that you soon will find yourself toiling over version 2.0.

Comments are closed.