Search The Web

Today's Headlines

Tuesday, May 25, 2010

Yesterday Just Wasn't My Day!

You know how these things go: some days you are the windshield, and some days you are the bug. Yesterday, I was certainly the bug. And I hit the windshield square in the middle, it looks like!

It all began about 3 weeks back when the business users wanted an enhancement to a program we developed and support. The program is getting long in the teeth and has been patched up so many times it would be almost unrecognizable to the original authors. The problem is that the business process on the user side has changed so much in the years since it was written that the business process would be unrecognizable to the original authors of the program too. The patching followed along as the business process changed.

To accommodate the enhancement the users wanted, we needed new information from a mainframe program that produces the inputs for this program. We touched base with the mainframe support folks in IT and requested the new inputs. Now, there are two places this input could come from. The primary information is about objects that are then combined into super-objects, which inherit this piece of information. Our program only reads a file that contains the super-objects, so we asked the IT folks to put the information there.

The IT folks argued with us that the information does not logically belong there. It belongs with the objects themselves, and we should calculate it on our side for the super-objects from the individual objects. Makes perfect logical sense, but the problem is that our program does not read the individual objects (and does not really care about any other information that is part of the individual objects). To add a read routine for the objects, and then combine the information for use in the super-objects would take us 4 to 6 weeks.

The IT folks have access to files that contain information about both the objects and the super-objects. The analyst who had originally been assigned to the job gave us a time estimate of 2 weeks for him to read the objects file, calculate the information at the super-object level and embed it in the super-object file. So, we asked him to get started down that route.

But the project manager in charge of the mainframe program that produces our inputs suddenly had a change of mind, and started pushing us to make the changes inside our program to calculate the information from the individual objects. We acknowledged that the information resides logically in the objects, but we explained to him why it was difficult to go with that architecture because of the extra coding and testing that would require.

We went back and forth on it for 2 weeks (by this time, the entire project could have been completed if the analyst had been allowed to just get his work done, instead of being involved in a stupid, pointless, ideological argument). The program is run on a monthly schedule, and the users wanted this enhancement for the June run (that occurs around the middle of the month). All this delay was jeopardizing our ability to have this enhancement ready for the users by that date.

I finally gave up on the argument with the project manager on the IT side yesterday and wrote him an email. I explained it to him in as simple terms as I could muster. Here is the email I wrote him:


We have already acknowledged that it is a cleaner solution to implement it on our side. However, it makes the spaghetti code that our program already is, even more complicated and hard to follow. Moreover, the users are expecting this enhancement in place for the June run. Implementing this on our side will cause delays to that timeline because it will take us 4 weeks to do it. Your analyst indicates that it is doable on your side in 2 weeks, which will allow us to stick to the timeline expected by the users.

At this point, I would defer to the users. If they feel that they can manage without this enhancement for another month, then we will take it up on our side and implement it ourselves for the July run. But, if the users are looking forward to this enhancement for the July awards, I think it should be done on your side regardless of it being somewhat less clean than implementing it on our side.

I thought it was a pretty straight-forward argument. Either you do it so that we can stick to the timeline the users want, or we do it and the users can go pound sand for another month. There was really no need for all this theoretical, pedagogical arguing back and forth on what the "best" solution was. It was not as if we were coming up with the optimal, most theoretically correct solution to some academic problem. We were trying solve a user's problem in the most pragmatic, practical, time-effective manner. And I copied the users in on the email so that they could chime in with their needs.

The reaction from this project manager would make you think that I had suggested we go hunting for mountain gorillas in the Congo or something like that! Here is his email in response to mine:

Please note that I have removed the users from the address list. This is not a user issue. It is a technical/administrative issue. Those of us who have worked in maintenance for any length of time know it’s not always easy and it’s not always ‘pretty’. Still, we find ways to keep our systems running. It seems to me that you are saying your program is virtually unmaintainable and that you are unable or unwilling to make any significant changes. (That is a sad statement for a product that is only ten years old.) If that is your position, I will support making the changes on our side.

It was rude and totally unprofessional. And his assertion that it was not a user issue was patently false. I had already agreed to do the changes on my side if the user did not mind waiting. So, to me, it was nothing but a user issue. And I certainly did not want to hear about how great a project manager he was for keeping his systems running, and how incompetent I was for trying to support a patched-up program that I was not willing to make major changes to. I have no idea how people with such abrasive communication styles make it to the higher echelons of an organization, but sadly, it does happen and the rest of us have to put up with these supercilious, ignorant boors.

Not wanting to incense him any further, I forwarded the email to my manager, asking him for advice, and also hoping for some soothing words. Instead, this is what my manager sends back to me:

Put yourself in his shoes to try and understand where he is coming from. He probably also did not appreciate your including the business team into the last email --- puts him in a difficult spot. It's probably best if you could meet with him to discuss in person (take one analyst with you, but not more as it will look like you're "ganging up" on him).

Way to go! I have been involved in a useless, absurd argument with this person for 2 weeks running, and now I am at fault for pointing out the obvious fact that we all exist only to satisfy the users, not our own egos or our ideas of theoretical perfection. It is like the wife being blamed for the abuse she suffered because she complained that the husband drinks too much and abuses her!

And my including of the users in the email puts him in a difficult spot, probably because he has to climb down, off his ivory tower, and walk amongst us dirty, filthy, unwashed masses! And I have to behave like a medieval knight and challenge him to an one-on-one duel to settle the issue, not "gang up on him" by taking more than one of my analysts with me to explain the situation to him more fully and concretely!!

My manager is out of town, attending a conference, so I just let his email slide. There was no point in trying to argue with him over email, and anything I say would only make me sound whiny and defensive. My manager has never been good at supporting his people when it comes to these kinds of situations involving disagreements with folks from other departments. In particular, he insists on us bending over backwards and letting the IT department walk all over us repeatedly. So, his email is really par for the course for him. As far as I am concerned, it is OK to turn the other cheek if your opponent notices it, and is willing to be shamed into changing his behavior. It is not a good option when your opponent is enjoying slapping you around just for the fun of it, and thinks that you are enjoying being slapped around too!

And to top it all off, I got another email from another counterpart in IT about a meeting we have scheduled as a weekly repeating meeting to coordinate with them about a very important project we are working on together. For the past 6 or 8 weeks (I have honestly lost track of it), the IT team has always found some excuse or another for not attending this meeting. They are either too busy, or they are booked in a different meeting, or they are having production problems, or whatever. The actual excuse really did not matter. They would just call me to cancel the meeting a few minutes before the meeting.

Repeated emails to them asking for them to attend the meeting had no effect on this behavior. I offered to let them set up the meeting so that they could choose a time when they were better able to attend the meeting. I offered to shorten the meeting so that they could be in and out quickly. All to no avail.

But the email I got yesterday was quite terse: it said we would have to attend that meeting the next day because they had something important to discuss. No please, no thank you, no nothing. Just an order that we show up for a meeting they have not deigned to attend for over 2 months now! And no, I did not forward this to my manager for his comments!! I can only put up with so much sympathy in one day, and the irony of this email would probably escape my manager altogether anyways!!!

Yesterday was yesterday, and today is a new day. Things have been pretty quiet on the email front so far. Hopefully, they will stay that way for the next few days. But then, you never know. After all, I might just be a bug enjoying the nice balmy spring weather without realizing that a windshield is headed my way at 60 mph! Everything is quiet, and then ... SPLAT!!!

No comments:

Visitors Country Map

Free counters!

Content From

In the News

Article of the Day

This Day in History

Today's Birthday

Quote of the Day

Word of the Day

Match Up
Match each word in the left column with its synonym on the right. When finished, click Answer to see the results. Good luck!



Spelling Bee
difficulty level:
score: -
please wait...
spell the word:

Search The Web