I’m going to be zinging Microsoft here, as the most obvious target, but they aren’t the only one. It’s a general point.
In the most recent MSDN Magazine, there’s an article about how to work with WCF and WF4 (they can’t call it WWF4 for legal purposes), and I have no opinion about the content in general. But I want to focus on this one thing:
“In this article, I will explain how to combine several features of WCF and WF that were introduced in the .NET Framework 4 to model a long-running, durable and instrumented mortgage-approval process for a real estate company, without having to write code.”
Anyone with any sense will know where I’m going with this.
There is no such thing as ‘without having to write code.’ Code will be written, somewhere, somehow.
I understand the ideal, at least on some level. Business end users want to be able to get things done. IT is usually required to get those things done. If the business end users can get those things done without having to go through IT, the ideal says this is a good thing.
End of trying to understand the ideal.
If something goes wrong with the business end users trying to get things done without having to go through IT, it will ALWAYS be IT that has to fix it. Indeed, whether it is WF4 or anything else, it is always some IT process that actually gets the things done. WF4 is a pretty interface on top of code. Code is always required. No pretty interface (at least in my lifetime) will ever change this.
While soapbox ranting is always fun, here’s a very real world case of what can happen:
“A pricing error costs Zappos.com sister site 6pm.com more than $1.6 million”
Here’s the fun quote:
““We have a pricing engine that runs and sets prices according to the rules it is given by business owners,” wrote Hsieh. “Unfortunately, the way to input new rules into the current version of our pricing engine requires near-programmer skills to manipulate, and a few symbols were missed in the coding of a new rule, which resulted in items that were sold exclusively on 6pm.com to have a maximum price of $49.95.””
The ‘without having to write code’ folks will argue that the system was flawed, that they shouldn’t have to have ‘near-programmer skills’ (digression: what does that mean exactly? That they don’t shower a lot?), but what is really flawed is the idea that you can build a system that lets business owners do this sort of thing.
I mean, I’m not against building systems that allow non-IT people set rules. IT people often tend not to understand enough about the business they are supporting (digression: this is a large topic, so I’m avoiding discussing it here), and you want to allow the business users to set fundamental rules, including about pricing.
But you don’t let them do it straight into production. This is similar to the constant desire of people to allow business end users to have the ability to query production data through some magical query tool, and then you have situations where your entire production system comes to a halt because some business end user managed to query the Cartesian Product of the transaction table against itself.
How to avoid these sorts of things
Here’s where I punt a bit, because this is an actual real world problem that has no obvious answer. How do you free up business end users to implement the real world needs that they have, but without also ‘allowing’ them to completely f%^k things up?
A $1.6 million dollar mistake suggests that this is a question that needs answering.