Jason Gorman writes an uncharacteristically strange article on his blog about SQL and relational databases. I take issue with this article on many many fronts and i think anyone that spends their time involved with business systems probably would. It’s just odd. There isn’t enough time to fully go into everything I have to say. Maybe a series of posts are needed.

At its heart is an issue that has been around for as long as I’ve been in the industry. The issue is that “software development” and “information systems” are in no way the same thing. Both require different methods, techniques and tools. Both often require different underlying technology. I would argue that both require a very different mindset and attitude on the part of the people involved. And, if I may say so, even a different outlook on life.

“Software development” is Photoshop. It’s iTunes. It’s Microsoft Office. It’s the latest game. It’s an app you downloaded onto your iPad. It’s also about scary things you rely on written by a section of the computer industry you never get to meet: Printer drivers. DLLs. Firmware in your Television.

That’s all “software”.

“Information Systems” on the other hand are quite different. They are about Business Systems. They are about managing business processes, running your organisation, and giving us competitive advantage and benefits of various kinds.

Thats not to say everything is different. But I don’t and never have regarded Information Systems development in the same light as Software development. They are not the same.

Having established that, It is certainly true that relational databases generally form a significant part of the underlying technology of business systems. Recording data but at the same time separating it from the applications that use and operate on it is a fundamental principle, and one that frankly, has served us well over the years and continues to do so. I don’t agree with Jason’s comments that this only leads somewhere bad, or is a practice to be avoided. For business systems, this is a demonstrably good thing.

But separating your data from your application has another big advantage that often gets overlooked. That is that the characteristics and behaviour of the data itself can help influence your design. In Jason’s “outside in” approach (to be fair, supplemented by the much of current thinking based around “user centred” design), people forget that data can take on a sort of life of is own. By doing proper data analysis, we can actually discover scenarios and behaviours we or the users would never have thought of. All of this comes BEFORE we design the external interface – or at least before we finalise it. We actually end up with a better, more rigorous, design as a result of using a database.

Back in the day, data-centred techniques were often criticised for being “slow” and “complicated” – people seemed to forget that the reason for the “slowness” was because the technique was helping you tease out some of the unglamorous obscurities of the system that you or you users might not have considered.

Therefore it’s time well spent.

Of course, you wouldn’t build a game, iTunes, or a printer driver that way, but that’s not the industry I or my fellow business systems people are in. It’s not “software”…..

« »