Saturday, July 21, 2007

Strategic approach my foot!

I am pissed, I am furious, and I just don’t get it.

Those of you who have read my rantings on various topics before, know that I’m not the most patient person on the planet. My friends know me to be short tempered and impulsive. However, I don’t think I’m wrong every single time. I work in the IT field…as do 80% or more Indians, who work here on a visa. Just as most Mexicans are associated with certain jobs, we Indians are associated to the IT field by default.

Getting back to my anger! A few months back, I joined a new project. I was not too keen on taking this project, but I figured why not. It’s definitely better than waiting around for the perfect project at the best company with the best team, which by the way never happens to me. The project is a regular finance project where you load data, do some processing, run some batch processes, and finally generate some reports. In my experience in this field, the one thing that I have learnt the hard way is that that reinventing the wheel (software processes, services or modules) is not only a financial suicide, but it also reflects on what kind of an organization you are, and how good your management is. I have been trying to convey parts of this message since I have been here, because I have seen nothing which remotely resembles what is called as a Software or Systems Development Life Cycle akaSDLC . But, the only thing that people are bothered about is getting the work done no matter how much time, money, and resources you waste doing the same thing again…and again…and again.

So a few weeks back, I was asked to create a process to generate some extracts out of the DB. I started working on that, and two days later I came to know from another team member that he has also been asked to create a process to generate some other extracts (talk about team communication). So we both discussed what was similar in both our processes, and excluding some specific business logic there wasn ’t much difference. So, I created a flow diagram for a generic extract process, and took it to my manager for discussion. He saw the diagram and gave me the “who the hell do you think you are” kind of look. He then challenged me with some questions on how the generic process will work in different scenarios, and what will we have to do if we want to create a new extract, etc. I was happy that at least he is thinking about it. Finally, he tells me with the same look as before that "right now we do not have the resources or the time to do this kind of thing". I told him that I and the other guy working on the extract can try to finish it in the given time frame, and even if it takes some extra time now, in future it will make things easier. But that did not work…after a few minutes of convincing, I felt like I was talking to a rock because the dude was blank and expressionless. A few days later, my team member and I were done creating our extract processes in Java and Perl respectively. Both of us created our processes using different configuration files, to which my manager tells us…”I think you both should use a common config file instead of having your own”. I was shocked by that statement. You ask us to create similar processes separately, but you advice us to use a common configuration file…now isn’t that genius?

Why is it that most managers take our suggestions or inputs as an advice of how they should be doing their jobs? Why do they perceive that we are always after their jobs or positions? And no offense, but one thing I have seen common in many Indian project managers is that they think any Indian developer working under them “has” to listen to them and “has” to agree with them no matter what the case. Did I mention that my manager is also an Indian :-( Anyway, I have heard of and experienced many such situations so I wanted to vent out what I thought. I agree, I might not be right in all the situations, and in many situations my managers (Indian or not) have given me good reasons on why they do or do not agree with me. But would it hurt the IT managers to think strategically, keep the future of the organization ahead of their individual goals, and for once not bother about performance appraisal?

Wouldn't you want to be known as the person who started a good practice once you have moved on to another organization? I would, and that's why I get angry when people tell me to create throw away code, or give me vague reasons for not adhering to the re usability standards.