Helping, sometimes at the expense of others

Microsoft has a really great site where developers can make suggestions for features that should be added to the next rev of Visual Studio. You can also vote on existing suggestions. So far, two of the ten that I voted for, have been added. It is a great idea and pretty satisfying.

If you are a senior developer, I highly recommend that you take the time to read the first 10-15 pages of suggestions and vote on a few of them.

As you read through them, you will get some interesting insight into how other shops and dev teams operate. I recall reading some of the suggestions and thinking “does anybody actually care about stuff like that”. Then I would see that the idea had five votes or five hundred. Then I would think “Yeah, that’s what I figured” or “gosh, really? That suggestion seemed batty, but maybe I should reconsider”.

As I read further down the list, I noticed a few ideas that really bothered me. The worst one was “get rid of the Regions feature in Visual Studio”. When I read it, I thought, “Oh no! I use that feature all of the time. Please don’t get rid of it!”.

I don’t need it, neither do you

On several occasions, I have worked with contractors/developers who (not only) do-not use regions, they actually stripped the regions out of the code that had been written. I was surprised by this behavior. I could understand if a person did not understand the usefulness of a feature, and therefore did not use it. However, when a person knowingly removes something that was being used by others, well there ought to be a strong reason for doing it. Only crazy people go around changing code for no good reason.

Each time I encountered this odd behavior, I asked the culprit about it. I usually received one of these answers:
– I don’t use regions and therefore don’t like them
– They get in the way
– I am accustomed-to leafing through pages of code to find something. When some code is inside of a collapsed region, I tend to overlook it. It is a hassle to simply expand all of the regions. So I feel completely justified in inconveniencing everyone who does use regions, and I feel that I am doing a good thing (somehow) by removing all regions.
The summary of these is: I don’t use them, so neither should you.

I have heard one other explanation: “if your code is so big, that you need to use a region to collapse areas of it, then your code is probably too big and you should consider refactoring it”. Okay, now perhaps this argument actually makes sense.

Even so, I don’t think the best solution is to banish regions, outright. I think a better solution would be to use regions as a sort of bait, to help detect when a file is too big and needs to be refactored.

It reminds me of the time that I worked with a programmer who was removing all comments from source code, because he believed that comments were an anti-pattern. I know it is unprofessional to grab a person by the collar and toss them, but that guy came pretty close to “winning free flying lessons” from me. I think that guy’s antics has to be at the top of “the list of wackiest things I’ve ever seen a programmer do”.

I know the programming world is full of people who want you to do things “the right way” or “a better way”, but I can’t see the sense in banishing useful tools or features. Removing stuff (that people are using) from source-code or removing features from a product, should earn you some kind of unpleasant reward. Walking-you-to-the-door just doesn’t seem like a great-enough reward for that kind of “helpfulness”.


About Tim Golisch

I'm a geek. I do geeky things.
This entry was posted in IT Horror Stories, IT Psychology and tagged . Bookmark the permalink.

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s