"The thing is, Bob, it's not that I'm lazy, it's that I just don't care. It's a problem of motivation. If I work my ass off and Initech ships a few extra units, I don't see another dime, so where's the motivation?" - Office Space
Earlier this year, I left my corporate IT job of 4+ years to take a sabbatical and reassess what I want to do. The problem with corporate jobs has been well analyzed by startup guru Paul Graham. His essays, particularly How to Make Wealth and You Weren't Meant to Have a Boss, were a big inspiration to leave the corporate life. From my personal Office Space experience, these were the biggest pain points for me.
There is very little creative brain power required for coporate IT. Big companies buy most of their software off the shelf, so there is little to do except install it, configure it, and the worst part maintain it. And we are talking about some pretty awful enterprise software. How corporations pay so much for that crap is beyond me. In addition, there are usually several teams involved in every project, so your tiny contribution doesn't feel like anything special. I can't think of a single accomplishment from my job that I am really proud of and would want to tell someone about.
Procedures are a necessary evil in corporate IT to keep things organized, but they often get more attention than the actual task at hand. You end up focusing more on clawing your way through the procedure than building what the client needs. Another problem is that they try to use one common procedure for too many things, and they err on the side of being more careful and going slower. It feels like trying to push a square shaped project through a circle shaped procedure. There are so many things you end up doing that make no sense and just waste time. Every project is unique and needs some flexibility to get it done in a way that makes sense.
There is so much red tape around every little thing. Making changes and trying new things turns into an interrogation. There is always this sense of fear of breaking something instead of trusting that good people can handle themselves. You're only allowed to touch things that your specialized role allows you to, which is not much. Everything else requires a formal request, which takes who knows how long and just makes it a hassle to get anything done.
The theory is that IT can be set up assembly line style, using standard, repeatable procedures to churn out software solutions. Developers are just commodities, so it makes no difference where they are located. Not only is this a boring, miserable way of doing things, it doesn't work. It can work for certain things that have extremely specific instructions and won't require any changes, but it absolutely does not work for software solutions. It takes more time to fill out the forms and pass them down through all the layers than it would to just build it by yourself. Then when the client inevitably needs something changed, you have to go through all the layers again to get it updated.
Navigating the corporate hierarchy is mostly a social political game. Working hard and outperforming your colleagues does not reap any rewards by itself. You have to be able to sell it to the right person. Usually this means schmoozing with managers and making slide decks with a lot of buzz words and cool looking charts. For me, I don't like the political games. I prefer to focus on personal productivity and creating value, and let my work speak for itself.
But I'm not bitter or anything. I started as a clueless college graduate and learned a lot from the experience. There's no way I could have understood any of this without experiencing it first hand. I now know what to avoid going forward. I am a programmer. I like to code on modern platforms. Somewhere along the way, I lost sight of that, but eventually the pain of corporate life put it back into focus. My advice to anyone considering corporate IT work, especially college grads: avoid if possible, but if you have to, smaller is better. Avoid the really big companies.