Monday, June 1, 2009

The Rotting Stink of Corporate IT


My friend Lisa has a prejudice against those lip glosses that come in a little jar. The kind you dip your finger in and rub on your lips? She calls them little petri dishes, with all the bacteria and germs from your fingers just living in there waiting for their next home.


I see many similarities between lip gloss germ factories and corporate IT. There are good bacteria, and there are bad bacteria, but what they have in common is that they fester. The good developers fester in frustration, the frustration of change request forms. The frustration of knowing the right thing to do, and not being able to do it until four months later when the "budget is there." The bad programmers are festering in sloth, in the fact that their work goes largely unnoticed and as long as their tie matches their shirt we can ignore the fact that their classes go on for days, and their code is illegible, and their methods are bloated. In these environments you are taught that to care is to waste time, and the only thing that is important is that it GETS DONE, not if it is done right. A culture of apathy and wanton disregard for standards is all that is being enforced.


The biggest issue here is not the bad programmers, it's not the suffocated good programmers, as they say "A fish rots from the head." Management is who decides what the priorities are. If the priority is to "get it done so it works for now and ship it out" you will get exactly what you asked for. It starts at the top, when the CTO puts pressure on the IT Directors who put pressure on the Department Managers who in turn flip on their coders and turn the screws that bind them. Some symptoms of this are projects that are constantly coming back for work, deadlines that are constantly pushed, and the blame game from QA to the developers to the testers.


Can a large corporation have a healthy team? Yes. I didn't used to think so, but I have kept my eyes and ears open. I haven't experienced it, but I have met people that have shared their good experiences. The friends I have that are in corporate IT that are also happy have always had one thing in common: small teams. When you break up a big group into small teams, and hold the leaders of those teams personally responsible for the health of the team it succeeds. When you give them the tools they need for success, when you make it about who is contributing the best, when managers take the time to examine who is touching the code and IF what they are doing is the best solution, that's when you can succeed. When you allow for enough time and budget to make sure that things only need to be done once, and changes can be easily made, that's when you can succeed. The Five Dysfunctions book is a great place to start if you are looking to do so. I can imagine it's hard work, but when you look at companies like Microsoft and Google the reward is obviously worth it.



7 comments:

  1. As one who has spent almost his whole career in corporate IT, I can tell you that you're half right. This fish rots from both ends, and in order to stop it someone has to take a stand. Usually that has to be a developer or developer lead, and it's something I've made my career on so to speak.
    It's a rough road to hoe however, given the entitlement and predisposition toward inertia that typically accompanies American corporate hierarchy.
    Given that larger corporations are typically responsible for the software that most impacts society, however, it's a battle worth fighting.

    ReplyDelete
  2. While I've generally worked for smaller teams in corporate IT, I think it can swing both ways. When I did move to in-house coding from a software development shop, I was rather relieved to be able to slow down a bit and have more time to write code that was maintainable. At the dev shop, there was constant pressure to crank out code as fast as possible. Who cares if it was a mess? The client doesn't care about clean code they just want their software delivered!
    And some of the lousiest code I've seen has come from contractors.
    So anyway, I guess my point is that a developer inclined to write nice code will probably try to write nice code in whatever setting he ends up in. Someone with a just get it done attitude will probably work that way anywhere, barring pressure from boss/client/teammates.

    ReplyDelete
  3. I've worked in corporate IT for most of my life, and I agree with the point you're making here. The key in my experience has always been small teams that ARE HELD ACCOUNTABLE. Accountability is the key. I have seen shops where punch-the-clock syndrome rules, and there was not even a nod toward results oriented work.
    I'm lucky enough now to work for a manager that trusts my decisions, and is more interested in the results and hitting deadlines with workable products than micromanaging day to day efforts.

    ReplyDelete
  4. Who Moved Their Cheese?June 30, 2010 at 6:27 AM

    I have worked in corporate IT departments as the only .NET developer for many years. The majority of the developers that I've worked with have been old-school RPG guys. sarcasm I've learned not to offer my opinions on development because compared to the RPG guys, what to I know? They are much better programmers than me because they can differentiate between: SDLWKER, SLQWEKR, ANDKQER, DKWLRKR, WLEKRKW, WLEKRJR. Where my brain would prefer to call them OrderNumber or ItemNumber. /sarcasm
    I have seen people get reported to upper management for insubordination for actually pleasing customers. Stop making them happy you are making the rest of us look bad.
    I can't help but imagine there are IT organizations out there that value the good programmers and that can bring out the best in them. Good luck all you good programmers out there in finding one.

    ReplyDelete
  5. I have had a continuum of Corporate IT - old school (when it was called Management Information Systems), a more reasonable corporate IT environment, and now, an environment where I am the IT department, but Corporate is there to totally screw things up.
    My biggest hurdle is there is not one single person (other than my former co-worker who has been turned into a contractor) who understands one IOTA about what I do. I report to the manager who manages Health and Safety, Continual Improvement, the Cafeteria, and IT (me). Because no one understands I have to fight and scream to get anything. I just had to have a hissy fit to get training to support a system that I got assigned to support TWO YEARS AGO! And when I have a problem with being on call all the time and having to come into support Finance on holidays (closing stops for no one), I get no comp. time (even though Finance does - different manager).
    I'm at wit's end there and I have been trying to escape, but to no avail. I think that Corporate IT is alot like bacteria, but too often it makes something really foul smelling and disgusting, instead of something useful, like cheese or yogurt.

    ReplyDelete
  6. It all depends on the people involved really. My personal experiences with corporate IT are horrible. Long story short, I quit, couldn't handle the artificially created stress that was supposed to keep us on our toes ...
    On the other hand a good friend of mine is working in IT in a multinational pharmaceutical corp and he runs the best team I've ever seen. They are quick, smart and efficient, plus treat each other as friends. What more can one want from a workplace ?

    ReplyDelete