Sunday, July 17, 2005

Simple things that are really very complicated

I love reading Raymond Chen's blog. He knows (or has access to) so many fascinating facts about how Windows really works.

His current article explains a reall cool (or horrible, depending on your perspective) hack they had to put into Windows versions from '95 onwards to support long file names. I hadn't even considered this problem until now.

I find this story very interesting. Objectively, having metadata "quarks" hanging around the place to allow you to patch up after applications have recreated a file but not fixed everything up properly is one of those things that just feels "wrong". But I'm inclined to believe him that it was the only way to crow-bar long file name support onto a legacy platform in any kind of useful fashion.

Larry Osterman's blog often talks about these kinds of tradeoffs too. In his case, he shows a deep grasp of the business issues facing a software company. If something has to be done --- or your product will fail in the marketplace --- then you must swallow your pride, hold your nose, implement the hack (as best you can) and manage the consequences as they inevitably come along and bite you.

I see less of this in the products I work on. However, I'm not clear whether that's good or bad. It's certainly a better sales pitch to clients who don't need the XYZ feature - we have a well-architected solution that won't surprise you. And it's certainly better for our development teams - they undoubtedly would have less "junk" hanging around the code base. But does it mean we're missing out on opportunities that we really shouldn't be?

I wonder... I can think of one REALLY cool feature that lots of my clients clamour for but which we simply don't offer them in our Business Integration products. Indeed, the developers I've spoken to are quite aggressive in their insistence that the request is bone-headed. Yet - I (and my clients) know full well that the request does make sense in certain limited cases and would be enormously useful. It's just that implementing it would be so difficult, result in so many hacks and present the users with multiple limitations that it doesn't seem like a good idea to do. And yet....

No comments: