Hi guys. I’m still very busy with other stuff right now. I’ve yearned to get back to my research, and sharing my findings on here. I’ve had to be patient and persistent. It’s going to be slow-going for a while.
I found this article on reddit, called Rental Car IT, by Neal Ford. It encapsulates what I think is going on in IT, in the large. That is, companies are unwittingly making their systems more complex, not less, and therefor less manageable as time passes, due to what he calls “accidental complexity”. The reason I’m covering this here is the mindset it illustrates in our industry applies just as well to the issues of software development.
Ford talks about customers he’s done business with, and how he tries to talk them into simplifying their systems. They seem to agree in principle with the idea, but when it comes down to making a decision they consistently choose the “less risky” option of buying off-the-shelf software, which ends up making their systems more complex and unweildy than they were before.
Ford also points out that customers frequently spend millions of dollars on pre-fabbed systems to solve simple IT problems.
He talks about something which has been a bone of contention for me. He describes an incident where he suggests to a senior IT guy that they talk to the users about what they want out of the system. The IT guy scoffs at the idea, saying the users should have no say in it, because, “We’ve tried talking to them–they don’t know what they want, so we have to define it for them.” Justin James talked about a related subject in a blog post called “Enterprise software is about data–not people”. I and Justin’s other readers had a good discussion on there about this. Ford says this attitude has the effect of creating cumbersome, complex systems that hinder important things like customer service. I agree users tend to not know what they want, but that doesn’t mean they should be totally ignored. All this attitude does is hinder productivity. The users are a part of the business operation. If a system is not working in a compatible fashion with the way they think and work, it creates inefficiency, because users are having to repeatedly take their minds off the real task they’re trying to accomplish so they can “deal with the machine”.
Some of the comments to Ford’s post were interesting, too. One said that it’s all about risk to the decision-makers, not to the company. If a project goes bad and they used a package from one of the major vendors, there are a lot of other people that can be blamed for the failure. Whereas if they try to develop the solution in-house and the project fails, then the IT executives themselves will be on the chopping block.
The sense I got from reading this is that increasingly enterprise IT development is being sequestered; moved, separated from the company, precisely because of past IT project failures. In other words, our ignorance about what we’re really doing is gradually discrediting IT development. People don’t want to take the risk anymore. I am reminded of a phrase which goes, “The biggest risk is not taking a risk at all.”
This attempt to remove risk and liability from internal IT is not necessarily serving companies well. What’s being missed is that a business’s computing systems should model the business. Companies such as the ones described in the article are attempting to fall back on an Industrial Age idea of solving a problem by acquiring standardized equipment (software systems) and making it interoperate with their existing equipment (software systems). In other words, take something that was designed by a group of engineers who have no idea what your business is about, and was designed with a particular purpose in mind, while at the same time it tries to allow some customization (it isn’t always flexible/generic enough to allow the customization you want), and attempt to make it model your business. Another name for it is “the data processing mindset”. Users are mere “operators” of this equipment, just as their industrial forebearers were. Their job is to learn how to operate it, and use it the way it was designed–without them in mind.
These businesses are trying to build their computing systems using Computer Engineering and Information Systems disciplines and infrastructure almost exclusively, avoiding what Computer Science and Software Engineering have to offer to the organization–sequestering it to the major software companies. They want to deal with pre-fabbed “boxes”, not code. The reason this doesn’t work well is they’re dealing with information, not widgets. They’re delivering a unique service, one where domain-specific information and semantics are key components. This is not a manufacturing process, and in the long run it cannot be dealt with effectively using this mindset.
—Mark Miller, https://tekkie.wordpress.com