Published
Tuesday, June 24, 2008 10:32 AM
by
martin
One of the things I find most interesting about software development is the people who do it. I think you can spot personality traits by reading people's code :-) A few years ago, I was introduced to the Myers-Briggs Type Indicator, and I was interested that it seems to categorize people according to 4 axes. I was a little dismissive of it at the time because, of course, a personality is more than 4-dimensional. But as time has passed, and I've met more software developers, and read more of their code, I've started to realize that there are common traits, and there probably are ways to categorize developers.
I should say, this is just idle chat. I am not suggesting that there's anything useful to be gained from this sort of analysis. I just find it interesting. In particular, I don't much care for the idea that an employer might try to assemble a team based on different types. But some days, a difference between types of developer hits me right between the eyes, and today is one such day.
Have you ever read some code and found a comment like "was getting unexpected exceptions here, but with this Sleep(500) it works ok". To my mind, the person who wrote this didn't feel in control of the machine. It's like "one man and his dog". I mean, the shepherd and his dog might consider themselves to be in control, but in reality the sheep have brains too. Ultimately it's their decision whether they walk into the little pen. I guess their thought process is something like "I might as well go where he wants, otherwise it's another 15 mins of being chased around the hillside".
But computers are even more stupid than sheep. You can try to coax it into doing what you want with little things like Sleep(500), but it has no concept of "you've been debugging me for hours now, I'll just give in". So coaxing and goading a computer into doing what you want is not an effective approach. You need to grab hold of it and make it do your bidding. Instead of the Sleep(500), when the exception happens, debug it. Find out exactly what's happening and then stop it happening. Master the machine.
So some developers are masters of the machine, while some are shepherds. In truth, I don't think it's a binary choice, it's more like a spectrum; master at one end, shepherd at the other. So...
M <------|------> S
...whereabouts would you put yourself on that spectrum?