Wednesday, April 10, 2013

Top 10 Reasons Why Corporate IT Sucks

Before I started Doodlekit, I worked in Corporate America IT Departments as a software engineer and consultant for 12 years.  The politics, bureaucracy, and excessive poor management I was exposed to during that time has forever scared me.  Documents such as the Manifesto for Agile Software DevelopmentThe Mythical Man-Month, and Getting Real by 37Signals inspired me to finally break away from the corporate rat race and start thinking outside of the box (trap).  Today I am my own man... free at last of the nonsense and waste that plague larger IT companies.  I can express my opinions about Corporate IT without the fear of 'Big Brother' reprimanding me.  For this reason, I am finally able to voice what every other IT Developer around the world wants to say, but can't.  I post this article today for you, my fellow Software Engineers and IT Developers, so that your voices might be heard.

Top 10 Reasons Why Corporate IT Sucks

There are so many reasons why working for the 'IT Man' sucks. Badly managed companies have high turnover, low morale, and employees who hate their jobs. Obviously, many of the causes overlap, so this will be a living document, changing over time and with your feedback.
1. Vendor Kickbacks/Bribes - the purchase of software, consultants, and IT services to those NOT most qualified, but to those that provide the manager with tickets to games, vacations trips, potential new job opportunities, and other 'loop holes' in corporate policy. This can cost companies millions of dollars down the road on failed integration projects, extra contractors, and unneeded services and software.  I never thought much about this as a young developer, but as I advanced higher into the ranks as a senior developer, I would be invited to attend manager meetings for 'technical support'.  Here I would see Directors spinning products that were total crap and way over-priced.  Even though I would point out as much, these directors would still insist on pushing those products to the other managers in the room.  I was personally involved in a situation like this where my company was going through some layoffs.  They ended up laying off one of these directors who kept pushing products from company 'X'.  Any guesses as to who that director went to work for after he got laid off? 
2. The Hiring And Retaining Of Unqualified IT Employees- IT positions can pay very well.  Managers will skip over better qualified candidates in favor of giving them to non-technical friends and family members to increase those people's incomes. While their job description & title will say that they are a 'programmer', they will never write one line of code.  Inevitably, you end up with a situation where there are 10 unnecessary people 'supporting' 1 person who is actually a programmer.  Being the only person who ever does anything besides meetings will eventually wear down the programmer and they will leave for a better job. The others will dig in - hoping to keep their high paying jobs as long as possible, hoping no one realizes they don't have a clue as to what they are doing.  These people, of course, will eventually become IT Managers! What you end up with is a corporation that encourages its worst employees to stay, and its best employees to leave. Not only do the worst employees stay, they get promoted. 
3. Non-Technical Executives Managing IT - Large corporations don't understand that managing an IT shop is way different than managing any other shop.  There are executive management decisions that can only be wisely made by those who understand technology.  Let’s look at an analogy: 
If you were looking to have a home built for your family, who would you hire? 
  • Contractor A - Started out as a roofer, worked his way up to plumber, then electrician, then supervisor, then contractor. This person has been in the housing industry for 20 years.  
  • Contractor B - Been selling used cars for 20 years.  They have never worked on a house in their life, but they are really good with people and can get you some extra cash by discounting the next car you purchase. 
Most large corporations would hire Contractor B to build their house based on the way they hire executives for their IT department. For some reason, corporations seem to think charisma, people skills, and sales experience is all that is needed to manage an IT shop - that technical people have no communications skills and cannot fill such positions.  How wrong they are. I have known many excellent communicators with people skills that were technical. 
How demoralizing is it when your IT manager makes all the newbie mistakes that you learned not to do in your Software Development 101 class in college 10 years ago? This person is managing your IT Shop????
How is it that the guy who has a genuine interest in IT, reads a new book every month on the best ways to code, manage and deploy software, attends 2+ seminars every year on things like the SDLC or the Mythical Man-Month or Agile Web Development, and has worked in IT for over 10 years and gets passed up by Ralph from sales as the new IT Manager or Judy who just graduated from Harvard University with an MBA? 
4.  Salaries Geared Towards Quantity vs. Quality -In large corporations, managers for some idiotic reason think that a developer is a developer is a developer.  With that philosophy in mind, they recruit via interns and new graduates from local colleges to get the cheapest labor they can get. Of course, these people are all new, and make lots of mistakes, and take a long time to get up to speed.  So after about two years, once they finally start to contribute, what happens?  They leave.  Why would anyone stay around for the ridiculous 3-7% increase in salary when they can now jump to a new company and get a 30-60% increase in salary? So what does the manager do when this happens?  They hire more new graduate/interns (or under qualified IT employees that shouldn't be in IT - see Reason #2 above) to take their place ... and the cycle starts over again.  Total madness.  The reason they do this is simple - because a salary number is tangible and measurable.  What they don't consider, because it isn't so tangible, is the amount of money it costs to re-train, re-assimilate, and re-fix all the mistakes that newbies make in their first 2 years.  One good, well-seasoned IT employee (who knows what they are doing) is well worth 5-10 interns and can do much more.  Why not pay them a little more so they will stay? What most IT managers don't understand is the concept of the Mythical Man-Month (*see the book The Mythical Man-Month by Frederick P. Brooks). More is NOT better. All of this stems from Reason #3 listed above.  Which also brings up the point that they are incapable of finding good technical resources even if they wanted to because of Reason #3. 
5. IT Support Is Viewed As An Expense To Be Minimized- All IT shops are required to do support work to a certain degree - and it's a thankless job.  If you are a salesman for your company and you make a one time sale to a client for $1 million dollars, you would probably get something like a 5% sales commission ($50,000).  If you are a programmer in support and you find and fix a bug that saves the company $1 million dollars annually, your manager will give you a shard of glass mounted on a wood plaque that has the words 'team player of the month' etched in it.  Then at the end of the year you will get an 'average' review that materializes into a crappy 5% increase in salary for the next year (this has actually happened to me). Your manager, however, will probably get a big promotion. 
6. Focus On Process Rather Than Clients - Let me preface this with: Your IT Department needs to follow some sort of process. Unfortunately in large corporations, what happens is that the Reason #2 and Reason #3 employees end up being the ones that run your IT shop.  Since they really don't contribute much technically, they like to focus on 'Process'.  They try and set up processes to create an assembly line type of work environment where everything is predictably created and cranked out in an orderly fashion. And, of course, they try and do this because of Reason #3 - they do not understand that all IT project are unique and require flexibility  (thus the 'Agile' in Agile Software Development - but your manager won't know what that is anyway).  I have actually seen IT Departments that turn into 'machines' that blindly focus more on fulfilling the process rather than creating the appropriate software for their client's needs.  They spend more time on paperwork and checking checkboxes rather than designing a solution that works.  The sad truth is that the IT Department will mark this up as a 'success' because they followed the process 100% - while their client is stuck with a product that doesn't resolve or fix their problem.  The IT Department will even go so far as to base their employee’s annual reviews on how well they followed this process. 
7. Reactive vs. Proactive  - Most corporate IT managers have no vision or foresight – that’s because they know nothing about IT (Reason #3).  Allocation of resources up front for maintaining, updating, and replacing older systems is just too hard to justify to them. They are focused on future projects and deadlines. They will wait till the crap hits the fan, and THEN they will spend 10x the amount of money trying to fix a problem that could have easily been prevented.  A simple cost-benefits analysis would do the trick of justifying these resources, but we both know your manager probably doesn’t even know what a cost-benefits analysis is (Reason #3).  What they do know is that they have a budget, and if they come in under budget for the year, they get a big, fat bonus check.  Their motto: Don’t rock the boat, maintain the status quo, and stick your head in the sand - if you don't see a problem, then it doesn't exist.  
8. Assembly Line Software Development - The larger a company, the more they like to develop software this way.  The idea is that each department/group can focus on their primary skill and be able to contribute the max amount of knowledge for that skill to the development of a software application.  So you end up with different groups building the software - the Architect Department designs it, the Business Analyst Department gathers the requirements, the Developer Department develops it, the DBA Department sets up the database, the Testing Department tests the application, the Support Department rolls out the application, etc. Doesn’t sound too bad, right?  So then who exactly is responsible for the application? Nobody, that's who.  Each department does what the process tells them they need to do (see Reason #6) with no concern about the end product.  When something goes wrong with the application, or the application doesn't work for the client, everyone points fingers at each other.  No single group takes on the responsibility of the application as a whole - it turns into a 'blame-thrower' on-call nightmare when the crap hits the fan.  To make matters worse, most of these departments don't know what they are doing anyway because they have incompetent people in them to begin with (see Reason #2).  This defeats the whole reason to develop software this way to begin with!  You have Mainframe 'Java Architects' (who still thinks Java is a coffee drink) supposedly 'looking over' the Java framework used in an application.  You have Business Analyst that just write down word for word what the customer tells them when gathering requirements instead of trying to figure out what the customer actually needs.  You have testers that test out ONLY the most obvious scenarios that any good developer has already tested themselves.  And you have Support whose job it is to roll out applications to production, but they don't know how to do anything except follow a step-by-step instruction sheet created by the developer and they STILL mess it up 99% of the time, having to call the developer on-call anyway!  What a nightmare!  Hey.... why not assign projects to cohesive groups that always work together on every project?  Groups that have Managers that OWN a software application (hey, now we know where the buck stops!).  Now people have a sense of pride and ownership.... you now have groups that can jump right in and know exactly what to do when something goes wrong.  Wow, what an amazing idea, I should write a book (wait I forgot, only developers read IT books, not IT Managers... Dang!).  
9. Annual Reviews - What a joke.  Seriously, annual reviews have to be one of the most demoralizing and crippling tools that Corporate IT has in its coffers.  I once was called up to work with a group of outstanding individuals to pull our company out of a crisis situation.  The main system had shut down and no backups where in place - the company was hemorrhaging money by the thousands of dollars each minute.  We (the team) developed a complete backup system in just under a week to pull the company out of the fires of doom.  We ALL worked hard... 12-16 hour shifts each night.  Everyone in the group did an outstanding job.  We ALWAYS did an outstanding job. We were nominated for company awards and invited to breakfast with the CIO.  Cool.... or so I thought.  Annual review time comes up and POW!...  the new corporate review system states that each department must incorporate annual reviews on a 5 point scale where 10% of the people rate a 5, 20% a 4, 40% a 3, 20% a 2, and 10% a 1.  So even though our group was outstanding that year (each and every person) we were required by the system to have 3, 2, and 1 rated people... WHAT THE HELL???? The cherry on top was the way the review data was gathered.  The company had this horrid and elaborate system where you had to spend hoursexplaining why you were so great and to list all of the incredible stuff you did that year.  All this documentation would be used to determine your score.  Well... have you ever heard of the 80/20 rule?  Where 80% of the people do 20% of the work and 20% of the people do 80% of the work?  We were all one of the 20% doing 80% of the work and the people in our group where working overtime nearly every day putting out fires and solving problems.  We didn't have the time to spend on creating a masterpiece review... but the 80% of the people that did nothing had plenty of time and they all submitted 100 page essays on how great they where!  Incredible... I remember one guy in particular who worked on his review for a whole week straight through - and he was one of the worst developers I had ever met.  I would argue he wasn't even a developer.  I helped save the company from the fires of doom and from losing millions of dollars that year and he created an MS Access database for some Director that ran a report off an Excel spreadsheet.  Yeah... he got a better review than I did.  
10. 'The Man' Keeping You Down - Again, the larger the company, the more this is a reality.  Most executives that run larger companies are more interested in their personal short term gains than their company's long term survival.  They restructure and implement short term policies that provide immediate high returns so the can get big fat bonus checks at the end of the year.  A few years later, when these short term solutions start to backlash, they skip town - off to their next executive job to start the process over again. For those that stick around, they whine that it's not their fault. If the buck doesn't stop with them, then where does it stop? Isn't that what they get paid for? Company stock prices will plummet, employees will get laid off, but you won't see any executives giving up their 'Golden Parachutes' or bonuses to save the company that they drove into the ground.  These types of people promote everything on this list.  Just take a look at our current economic crisis and all the companies going bankrupt, products of greed and corruption produced by corporate leaders with no conscience. They promote favoritism in companies for kickbacks and special interests... all at the expense of company stockholders, and now, the everyday taxpayer.  With leaders like this, how can you ever expect a change?  Change requires that someone who actually cares about a company be placed in charge.  Change requires that the 'status quo' way of doing things be replaced with innovative thinking and managers who actually research and study what they manage.  Sorry to say I have little faith of that ever happening. Working for Corporate IT companies will forever suck.


No comments:

Post a Comment