Wednesday, 30 March 2011

Design for the Lowest Common Denominator


Everything is a balancing act between perfection and pragmatism.

What I do not believe is that you are supposed to drop standards to the point where you correct the mistakes of users. Yes, suggest improvements or give warnings or give options to clean up but do not just assume and make the change.

I'm using an ORM called llblgen. It is the standard where I work. I'm not a massive fan but I'm currently more for consistency than purity so it will do for now.

One thing that llblgen insists on doing is assuming a table name ending in with an 's' is a plural. It then removes the trailing 's' when generating the equivalent data model class.

For example, my 'SomethingStatus' table will be represented by an equivalent model named 'SomethingStatu'. The developer has responded to my tweets of disdain and said that from his point of view, he can't assume that people will model their databases in a way that obeys conventions for not using plurals.

This bothers me because it makes me question the point at which we will go to cater for developers or users that may be doing something "wrong". Microsoft development environments and technology stack restrictions often have this in mind. Stop bad developers being sloppy by locking down the environment and denying options because bad choices cause bad code.

I disagree. I think bad developers write bad code. You shouldn't have to correct them. You don't need to baby your users. If you are going to cater for anyone then cater for the average user.

If the assumption is that the average user has a low statu then I'm simply saddened.

3 comments:

Frans Bouma said...

haha :)

Well, like I said on twitter, if we disable it by default, people will whine that it doesn't singularize names while 'the entity framework designer does that'. (this literally happened a couple of times). telling them that it's optional, it's documented how to enable it etc. has no effect, they don't even listen.

So we enabled it by default. And then people will, rightfully so, report that Status is singular and should stay that way. This clashes with the other group, who wants it to be this way. You're not the first who reports this btw, the first one had a table called Specimen which became the superhero entity Speciman :) Since then we called it the Speciman issue.

The only way to solve this is to offer a setting on the screen to singularize names and if unchecked leave them as-is. While this is perfectly doable, it's a sign you need to add settings on dialogs everywhere. Which bloats the UI, makes it complicated etc.

And while I don't agree with their opinion, there are actually a lot of people who pluralize table names because the table contains multiple instances of a type, 'Customers' contains more than 1 customer, they say. It's a point of view, and we have to deal with those too. That's part of being a tool developer :)

rob-nick said...

I agree with you Geek Diva. Its quite annoying as many of my tables end with S, and to have it removed automtically when they already have the strip-pattern feature is silly.

Sigh.

Mana said...

Rob-Nick, I hear you. It should be your choice.