Friday, June 05, 2009

Put Out to Pasture

I can't help but feel a bit unwanted and put out to pasture... You see my development group has just been moved out of the building where the majority of our users work. While it comes as the result of another business unit demanding our office space (they're more important than us), it feels like just another step in what has been a long progression to outsourcing.

The History

At some point Management got hold of the term "core competency" and started to go wild with it. They figured that since their "core competency" was Oil and Gas, that they should outsource all other non-core functions. Since they didn't understand IT and didn't want to seek to understand, we became the obvious target.

Management's (evolving) Plan

Step one: get rid of all the technical people. If you were technical then there was no position for you as an employee. But that didn't quite work as expected because everyone just became an independent contractor. You had the same people doing the same work in the same offices. You officially reduced head count, but you were paying more for exactly the same service.

Step two: Put 3rd party companies between you and the independent contractors. You centralize the billing and satisfy some taxation laws (the people no longer look like employees) but you're still paying more because these 3rd party companies who really don't do much still have to make a buck.

Step three: Remove their ability to talk directly to the users. Insert a new group of "Business Analysts" between the technical people and the users. Now you got a nice buffer zone. The thinking goes something like this: These business analysts will be the liaison for the users and the technical people. They'll be able to speak both business-speak and techie-talk. Since we never really understood what those technical people were saying and suspect that they were always trying to bamboozle us, we'll trust the BAs to keep the techies in line.

Step four: Round up the techies. They were distributed all over the place before and were actually sitting with the business. Can't have that. Put them all together in one team where they can "learn from one another" and make sure that they have to get all requirements filtered through our BAs. The BAs are better at determining requirements anyway and write lots of nice impressive looking documents. This is looking good.

Step five: Move the techies somewhere else. The business people can still talk to the techies. Dammit! A couple floors and an elevator ride are not enough. Move them to the basement or even better another building!

Step six: Outsource. All techies are the same. Replacing them is easy now. The BAs are now in control and all those fabulous documents they create are wonderfully accurate and complete and easily implemented by some faceless drone somewhere else. Mission accomplished!

The Reality (before step six)

The BAs (for the most part) neither understand the business nor do they understand the technology. They were either the incompetent technical people or the incompetent business people that the company didn't know what to do with. Ahh perfect, make them BAs. Somehow they'll be good at that. At least they're blissfully unaware of their role in all this.

The technical people who do the actual work are unhappy. They feel marginalized and unappreciated. They want to use agile software development techniques and improve their craft. But with BAs who don't understand Agile and who more often than not run the projects (with a surprising lack of project management skills) that gets axed. Unit testing goes out the window, independent QA is curbed, and directly speaking with the users is prohibited. The requirements documentation is understandably flawed and incomplete. Communication is strained, scope is fixed and because they know better the BAs fix the timeline. Through individual heroics software gets pushed out the door but the bug counts are way up.

The users are frustrated and stuck with an unworkable process. Projects take forever, response time for fixes is slow, and they very rarely get what they need. Results are invariably poor but regardless of feedback to IT things don't seem to improve.

Upper management is seeing their vision implemented and are happy. They are blind to the pain their decisions have caused.

The Fix

Realize that IT is a part of doing business. You can't avoid it. Yes it's a frustratingly complex problem and a sometimes difficult-to-understand creative endeavor but it's necessary. Agile software development techniques have evolved out of decades of failed projects and painful experience. It is designed to address the communication problems and deliver working software in the most expedient way possible. Sure it has its problems too but adaptation and evolution of the process is the way forward. Tying things up in ever greater amounts of bureaucracy and politics despite your best intentions is ridiculous. Understand that IT is part of doing business and embrace it instead of trying to push it further away.