Don't make my code compile!

time to read 2 min | 400 words

I’m working with a code generation tool right now, and it’s a pretty spiffy one at that. Integration with Vs.Net, wizards, forms and whatever else that strikes your fancy. I’m sure that I can even make it serve coffee and dance a jig, if I found the right buttons. The problem is that while it’s certainly a very smart tool, it’s not letting itself into an invalid state.

Is that a problem? I can hear you say; it’s a Good Thing that it doesn’t allow you to put it in an invalid state. Well, it’s good for the tool, but it’s bad for me. I don’t work like that. I’m not put together like a machine does, and I’m certainly going through stages where my code is invalid. Either it’s not compilable or it doesn’t make sense. Maybe there is someone out there that can get compilable code every time they move a line, but I can’t.

Forcing me to work in the proper way means that I’m going to get very frustrated at the tool. No, I wouldn’t think first about the query’s parameters before I wrote the query, and I wouldn’t like any advice whatsoever about the possibilities of improving my schema because then it would be more normalized. Yes, the tool is probably right, but there are more concerns than the ability to get 100% normalized data. I wrote a couple of tools for developers myself, and I tried to give as much information as possible while not limiting the user to the way I would like it to work with my tools. For instance, if you use NHiberante Query Analyzer, it will show a red icon if the current mapping document is not valid according to the schema, but it will let you continue.

For all other tool makers out there, try to make it as flexible as possible. I don’t think linearly, not nearly (pun intended). Don’t try to force me to do to do so; that way leads to very high levels of user frustration. I’m more than sure that the tool is excellent, and I can certainly appreciate the amount of time that was dedicated to making sure that there was no way to input bad data to the system. But the inability to work my way, and the inability to write code instead of working my way through dozens of GUI wizards are driving me crazy.