Monday, November 15, 2010

project management

I wanted to be a project manager. I'm the only real technical person on my team, comprised mostly of buyers and contract analysts, so when it came time for a raise, I had hit the ceiling of my job role - assigned as a "buyer", since my manager can't have other job roles assigned to him. To circumvent this bureaucratic idiocy, I was assigned a job role of "project manager", purely because the pay was better and that was the only other job role allowed. This meant that I know had to become a project manager, because you can apparently be assigned a job role if you actually qualify for it, or if you plan to qualify for it in the future. Yes, this is exactly like saying "I'm a certified astronaut because I'm applying for space camp."

I took the courses, and it seemed pretty neat at first. The whole idea of project management is that an hour of planning will save two in production. It's promoting efficiency and organization, two concepts high on my list. The courses went well, but one part of becoming a PM is that you have to be the manager on a project first (a little backwards as well, though not as much as the other example).

My team doesn't do projects, so I had absolutely no opportunity to be assigned to manage a project. Again, I'm not a PM so they won't assign me to a project, but since I'm labelled as a PM, I have to manage a project to be certified as a PM... yes, it is as stupid and circular as it sounds. But wait... there's more stupidity right around the corner...

I see an opportunity for a project, so I start to talk to some of my co-workers and manager to position myself as the PM. We go through a growth market supplier to develop a database and UI to store some of our supplier information. Development goes fairly well at first. It then becomes fairly obvious that the developers only have a loose grasp on the english language since once the bug reports start to come back it becomes impossible to communicate. Here is a (not really) made-up example:

Me: "So we're seeing an error on the second tab of the supplier input screen. Can this be fixed?"
Dev: "Mmmm.... yes?"
Me: "Is that a question? Can you fix it or not?"
Dev: "I think is possible."
Me: "Ok... so when do you think you can have it done by?"
Dev: "Is easy problem."
Me: "What does that mean? What about the existing records? Will they be fixed?"
Dev: "Mmm... may need agent. Maybe not so easy to fix."
Me: "So... do you have an estimate??"

This continues for 20-30 minutes, finally the dev tells me 2 days... in 2 days he sends a new version which doesn't fix anything at all. New errors pop up and my desk starts to make a sizable dent in my head. This whole process of bug reporting and semi-fixes continues for months until an executive takes interest in the project and it's decided that we should expand the application. Currently, it's a Lotus Notes database (yes, that just adds to the pain and misery of this whole saga), so we decide to make the data available to other apps by adding a DB2 backend.

Up until this point, this database was being served off of a workstation under someone's desk in Germany. Not exactly a standard practice for my company, but the whole dev process was contained within a group of 4-5 people so everything happened very quickly. Now that we needed the backend, we were required to serve this database off of a standard north american server. We also needed to connect to existing data warehouses and other such systems. This required an entirely new, officially sanctioned project. We were assigned a project manager (PM), a solutions project manager (SPM) a product delivery team leader (PDTL) and a few developers. We also are told that we'll be using the Agile project management method.

We have the first meeting and the PM describes Agile to us through a powerpoint lacking any type of detail whatsoever. It says Agile is a management method that is designed to work with a small team and produce results quickly. It uses sprints and planning poker and user stories and burndown charts. We'll be using some cool tools and everything should go smoothly the entire time. When I asked what planning poker was, what a burndown chart was and what a user story was... the PM said that he didn't really know and we'll be learning as we go along. I was new to this whole PM thing, especially in an official capacity, so I wasn't quite sure about how worried I should be. Is it really a big deal that the PM has never used the project management method before? Are we trying to drive a spaceship with someone who only has experience with gliders? Or is this trivial - like sending Bobby Flay into a indian curry throwdown... same cooking methods, different spices?

It's not trivial. We wasted 3 hours on the planning poker session our first meeting. The first part of an Agile project is to collect all of the user stories (fancy term for "requirements") and then have everyone estimate the difficulty of implementing each story. It's called planning poker because everyone has cards with numbers on them, the requirement pops up and everyone puts in the card that they think best represents the difficulty associated with the story. The first story was: "Develop an ETL between Notes and DB2". My cards are: 1, 5, 10, 20, 50, 100, Unknown. I ask, "What do these cards mean? Are these hours to complete? Days? Moon phases? How many trained monkeys with typewriters?" The response, "They're just subjective, enter in whichever one seems correct." I then ask, "So how the hell am I supposed to know how long an ETL takes to develop when I don't even know what ETL means?" The response, "Extract, transform, load. Just use your best guess." I click to submit the "Unknown" card. The others enter in anything from 1 to 100. No one has any fucking clue what is going on.

This continues for an hour or so as we move through the other user stories. For every story, there is really only one person who has any knowledge of the development time or effort, yet we are ALL responding. I express my discontent (which develops into blinding rage/frustration/hatred) with the process by replying "Unknown" to everything except the few items that I actually know. In summary, this entire process is a waste of time and it only takes the PM 3 hours to realize this and throw out all of the results. He then asks the relevant people to respond with their best estimates and we move forward. As far as the other parts of Agile are concerned... let's just say that they all make sense when you have someone competent explaining them to you. In the absence of someone educated in Agile the entire process becomes drenched in irony.

Next item on the list is to have the database moved to a standard server. I ask the PM what we should do here, he says he has no idea. Head meets desk. He tries a couple of contacts, they send him to various databases to fill in questionnaires. The first set of questions is to classify our project so that we know which database to go to to fill in the second list of questions. None of the questions make any sense to me so I make the mistake of asking the PM/SPM/PDTL. They all respond with "I have no idea". No one has ever done this before. About a week later, we finally scrape together enough information to complete the first list. We move to the second, which is a list that we need to fill out to apply for access to the third database. I think it's easier to pass new laws. In case you were wondering, the third database contains a completely separate set of questions which is then submitted to a review board. If they approve it, then they move us on to ANOTHER review board.

In case you're confused, here's the process:

Questionnaire 1: to determine next questionnaire ----> Questionnaire 2: to apply for next questionnaire ---> Questionnaire 3: review board 1's questions ---> Review Board 1 meeting ----> Questionnaire 4: review board 2's questions ---> Review Board 2 meeting.

This entire process takes 2 months. Once we're in the final review board meeting, someone gives us an estimate of the cost of deploying our database on the standard servers. Apparently it's 30,000 to deploy, then 900/month in maintenance. Mind you, our database is around 200mb and has 100 users. It is currently being served off of a cable-modem connected desktop in Germany that probably cost all of $500 IN TOTAL. Now they're telling us 30k. I'm worried and pissed off... then someone asks, "Wait a second, why are you applying for enterprise application support?" I ask the PM, "Yes, explain to us why we need this enterprise support, only applicable to applications with more than 10,000 users?" He says, "Oops, I didn't know." The review board says, "If you don't need enterprise support, then you can just submit a request here, no review necessary, and it costs $5/month to deploy." I wish I was sitting across from the PM and his family so I could murder his entire family and stab him to death with the sharpened bones of his children... but that would probably lead to lengthy legal battle... so since this is just a conference call I beat the shit out of my wall.

I really wish that this project improved in some way, but it didn't. At all. Ever. Instead of continuing to explain everything in minute detail, let's just touch on some of the more interesting (read: idiotic and retarded) occurrences. All of our information is stored on DB2 server A, so the obviously the DBA decides to put the DB2 backend on DB2 server B, which cannot talk to or connect in any way to server A. Every time something goes wrong with a sprint (2 weeks used to complete one set of items), the extra work is moved to the next sprint... and if the last sprint before deployment is fucked, then the extra work just isn't done. If it comes time for deployment and there are any leftover bugs, then deployment has to stop immediately and you have to apply for an ENTIRELY NEW PROJECT BUDGET TO FIX IT ALL. If you have leftover development budget at the end (which should have been used to fix the bugs, but we couldn't fix the bugs because the project ended) you CANNOT use it to fix anything left over, because now that it's deployed you need a MAINTENANCE budget and team to fix the problems.

Now that we're in maintenance mode, we were assigned a completely new set of PMs, SPMs, AOs, PDTLs, FPOCs and WTFLOLBBQs. Guess what? None of them know what the fuck they're doing either. The development team has left the project without transferring any knowledge at all and we have an entirely new tool to submit CRs which no one knows how to use. Our application works... but the DB2 backend is completely useless because we have no way to join it to our other information. The leftover CRs will never be fixed because no one knows how to enter them into the tool and even if we do manage to figure it out, no one knows how the backend works to actually fix anything at all.

Summary: I do NOT want to be a project manager anymore. I would rather ram my head into my desk until it disintegrates into a pile of brain, bone and blood than spend another minute trying to sift through the massive shitpile of bureaucracy that is project management at my company. You could replace every single word that I've written here with HATE, written over and over, and it wouldn't even come close to adequately describing my feelings toward this demonic cesspit of flesh-dissolving acid and soul-devouring despair. I've just been informed that I'll be helping out on a new project in 2011. I want a shotgun to the face for christmas.

No comments:

Post a Comment