Customers won't pay for the analysis. Customers won't pay for the design. Customers would drop dead if they heard what the actual solution to their problem would cost to be implemented, so providers cripple the solution further (which in most cases is crippled already by a close to non-existing analysis and design), by making an offer for a partial solution. Programmers only get the time to implement that crippled something, which besides being restrained in functionality, is often broken in design, due to the lack of proper analysis. Testing never gets allocated enough time, even worse, the customer won't pay for testers to be able to test in an environment properly replicating the production environment.
It's like customers expecting programmers to create products of many times the complexity of highly complicated mechanical or electrical artifacts, with costs not tens but thousands and tens of thousands of times smaller.
Or maybe customers do think that somebody usually wearing XXL T-shirts can cope with an M T-shirt as well. I'd like to see these customers wearing shoes half the size they need for time spans comparable to software life cycles. Something like that is what they are doing to their employees. Then they wonder why software doesn't have the expected effects.
However, IMO the fact that customers are not willing to pay as much as it takes for custom software development illustrates their attitude towards their own business: the most important parts are manufacturing and sales (maybe with some PR added to the mix, most often only sales and marketing count, even manufacturing is neglected), management is just an unavoidable hassle which adds no value to the process.
Picture this: we do a pretty nifty project management program - I know it's good because we also use it internally, and already got rid of all things we were annoyed of, and implemented most of the things we found useful (that's what's called "eat your own dogfood", and it's a very poewrful method of improving your software). One of our salespeople went to show the program to a company manager. This guy had no idea what a gantt chart or a timesheet is, although he was on his way to buy a project management tool for his company. You could have sold him any crap in this world, he had no idea what a project management tool is good for. What do you expect from customers, if this is the management they have?
So I think the problem is more a management crisis than a software development crisis - a management crisis on the customer's side. Right now, most software companies live of cheating their customers into buying software which won't help them (I can think of a very big office suite provider here - the last three versions didn't bring any really useful new features, but still sold well). If customers do enjoy spending money for at best not getting anything, and don't want to spend money for real solutions, why not take this money from them? It's not like anybody forces them to do so? |