Sunday, February 08, 2009

Root Cause of Poor Software Design

Been a while since I posted, and of all things, I'm going to rant about software.

I was discussing a software issue with a few folks the other day, and we started talking about how such a seemingly small fix could make the lives of so many users easier. Having spent part of my life programming for a living, I think most were shocked when I said it wasn' the fault of the programmer, but internal political BS that kept progress from being made. So sad, but unfortunately true.

I spent the better part of 3 weeks on the road in the late 90's traveling all over the Southern part of the country, as well as the Eastern seaboard talking to users of an order entry system we had rolled out, asking how to make it better, easier, and more acceptable to how they did their jobs. Most users were supportive of the system if we could make improvements, make certain tweeks here and there. I was young and foolish enough to believe the company would actually do what we were telling folks our mission was about. 2 other teams did the same thing in different parts of the country. I was pumped up about making the system better for everyone.

Some suggestions were crap, people who just wanted to moan about changing to a new system vs. an old system they had used for more than a decade (on mainframe terminals no less). These people would still be cranking their cars to start them if they had their way. But for the people who were showing what the systems potential was, and were documenting issues were the ones we were most excited to work with because they had embraced the change and wanted the same thing we did.

OK,a month later, after endless miles on the road, probably no less than $100,000.00 (I'm probably underestimating this number) it's time to meet with all the division heads to present the results, prioritize, and start making the progress we just told the end users about.

First off, pricing feels threatened because of some of the changes we want to make. They can't wield the kind of control over sales and manufacturing they previously had, so they dig in and kill every attempt to change how we do things concerning pricing. Next, manufacturing does the same thing. If we can automate some of these processes, jobs are probably going to be cut, or people may have to move to other areas of the company. No, manufacturing isn't going to be helpful about this at all. It's now time for sales to chime in, and they're pissed off the most. We have made the old manual pricing and order placement system they have manipulated for years into an automated system with pricing that is fair across the board. No longer can they shop their work to our plants, or subcontractors just to put more money in their pocket, the system routes work to the correct plant at the correct price. This won't do for them either. How are they going to buy a new Mercedes next year if the can't manipulate the list price of their orders and put the money in their pockets? My god, don't these computer people know how much a Mercedes costs?

So what has happened to this multi-million dollar system the company has spent the past few years working on? It's a mediocre piece of shit that had the potential to have a significant impact with proven cost savings that could have helped the company thrive instead of being on the edge of oblivion. It will never be more than a glorified order taker.

So, the next time you think about how poorly something works, just remember that someone probably has had a good intention of fixing it, but the political atmosphere is preventing it from happening. Most programmers want their code to work, but don't stand a chance against the managers and directors of the people that actually use the systems. They are the real obstacles with software design and implementation.

Maybe that's why open source systems work so well. Makes you really think.

No comments: