| 2 comments ]

Here are some thoughts I shared with my development teams yesterday. ( I work in a software services firm based out of Chandigarh, India). Some of these might be unique to my organisation, but some are definitely very common in the Indian services industry, specially the first one.

These few thoughts, to me, are the undercurrents beneath a number of issues and problems that we keep getting into at work.

Does this sound familiar ?

The customer is better than us: (also known as the customer is happy with this)

To me, there really is no basis for this, other than perhaps that we are giving the customer what they have done in the past, or what they are happy with. But there are lots of pitfalls in that reasoning. The badly designed code supplied by the customer could have been written by a fired employee/contractor. It could have been written by employees new to the technology when they wrote it. Current team at the customer could be replaced by people who know better. Any customers expect us to be masters of our technologies. At , we have had a customer who knew nothing about junit, so there we no requirements to write junit tests. But he heard about it in a conference, and was rather angry at us for not having suggested its use ourselves. This customer had been very happy till then!

Ultimately, in todays world, most often, most ideas can be argued. And with google, you can also add references to support your position!


2. Everyone here does it this way, so this is right: (also known as: in all my jobs, everyone has done it this way): Your universe is too small here. Try google to find a bigger universe.

A lot of this is also related to #1: most places that you have worked at probably also suffer by number 1, specially as most work in India is maintenance/support work, where you live with what you get.


3. The app already has it this way, so we should continue doing it the same way: Consistency of implementation is important, but not in all situations. Think through whether consistency brings you some advantage beyond just consistency. In most cases, it does not, specially if the existing approach is just bad. Having a consistent style of braces is useful, because it is only a matter of style. But eating up exceptions is plain wrong. I can present other reasons, but I think this should be enough.

4. Ctrl-C Ctrl V, (also known as: Ill copy this design without understanding its context): Sort of self explanatory. We look at a design/implementation approach at one place, and copy it blindly into other contexts. When confronted with a why?, we often only have the answer that this is being used at place x. Thats no answer. If you agree with its use at place x, AND you can argue that x and your place are similar, ONLY then is it a valid answer, otherwise not.

5. Google does not exist (also known as: we cant look for other opinions/ head in the sand/ how do I validate this): Fortunately, google does exist.

6. The problem will go away if I ignore it (also known as: no one else will notice it): unfortunately, someone always does!


2 comments

Ankur said... @ 11:33 AM

point 2 and 6 are real acute problems,,,,People want to just run away and ignore problems till it hits them in the face,,,,

The example of Junit is also v relevant,,i remember when u were pushing it,,that time it was not that popular,,but now almost all r going on for it...

Anonymous said... @ 1:33 PM

Couldnt have agreed more with your take on the first point.

This issue i believe, becomes even more critical when the client is a novice in IT issues and/or is not aware of the latest best practices in the related domain. I say that because such clients cannot forumlate and/or foresee their finer and long term requirements. All they would be interested in would be to meet their clear and present specs. However, once they move up the value chain, they would certainly realise the limitations and/or shortcomings that arise because of legacy imposed on them by your software. I believe that it is this one thing which can have a serious impact on whether the client chooses to get their next project done from you or someone else.

Post a Comment