Some little while ago I was talking with a technical type person. This unfortunate soul has decided that he wants to be on the management track. While I respect everyone's right to do what they want so long as they don't hurt anyone else it's been my experience that managers, at least development managers, have a hard time not hurting anyone else. However that's not really the point here. (Note to self: You will now never be hired at a traditional company again. Might just as well put up drunken, naked photos on myspace and try to be an elementary school teacher.)
The folks were I work are pretty remarkable. At least in my experience. While the skill level per capita has probably gone down over the years it is the case that I haven't had to deal with anyone who wasn't, in my estimation, at least competent. Which, if you've been around for a while, know is not always the case when a company get's above a certain size (seems to be around 100 or so). Regardless, I do tend to brag about both the people I work with as well as the culture (I'm really sorry for using that word) I work in. You know, "everyone is smart", "I can go anywhere I want in the codebase", "no, really, I could not tell you who I report to". Like that. Maybe you don't.
Anyway, this sort of caused this poor soul on the path of good intentions to talk about his ideal person to have working for him. One of the these ideal traits was "head down. Doesn't complain". Ok two traits. I stopped him at that point and asked for a some clarification. What does "doesn't complain" mean? This means, apparently, overcomes the inevitable obstacles and "just gets it done".
I have to say, I think this sort of person makes just an awful developer. Given my choice between a complainer and a just-get-it-doner, I'd totally rather have a complaining-get-it-doner (Yes, I cheated a bit there). It's my opinion that pretty much all software sucks or will come to suck soon. I mean at the code level. It's too complicated, or obscure, or slow or whatever. Not through the fault of anyone mind you. It just happens, even to the smartest, bestest developers I've ever developed with. How could it not? You've got 15 things in your head and the consumer of the chunk of code you've just written is one of them. But still it's pretty hard, for me at least, to not infect the consumable bits of the code with my understanding of the implementation. You know, it'll-never-be-a-null-argument syndrome or it's-obvious-what-this-does-itis. You know.
So when I jam these gems of suckitude into the codebase, and believe me I do, I really, really want to know about it. Except for the embarrasment, I totally don't mind dealing with someone, anyone, telling me that such and so could be easier. Or asking my how come a null is allowed but gives weird results. (I've even had someone come up to me and say something like, ""Hey, that thing you did?" which evoked my eloquent "Yah?" leading to the entirely succinct, "It's pretty stupid". No kidding, I don't think work ever gets better than that.) And I don't mind dealing with whatever code changes this might entail despite the loud cursing of my own limitations. How else am I going to get better?
What I don't want is to deal with the hacks, jumped-through-hoops and let-me-justs that a get-it-doner seems to inevitably arrive at. "Oh, this argument can't be null? Let me just initialize this to an empty string". Later I, of course, decide that a null argument is allowed and I make it such that null means something different than the empty string. Run my handy-dandy unit tests. Pass. Checkin. Wham, I just broke 2 thousand tests I didn't even think to run and now have no idea why they broke. Which means spelunking into a place, at a time, I didn't plan on. All because someone didn't whine a simple, even gentle, "hey, this isn't right" whine.
Whining, sometimes called complaining, is a skill worth cultivating I think. Being whined to is also a worthy talent. If you are working for a manager I'd even go so far to say (sorry and) that if said manager prefers just-get-it-doners you might be not be in the best of places to write your best code. See remarkable above.
PS: Please put more effort into subjects/headlines/subheadlines of your posts. If my feedreader displays only six words and nothing else (for subject and body!) I'm not really encouraged to read the rest.
> I have to say, I think this sort of person makes just an > awful developer. Given my choice between a complainer and a > just-get-it-doner, I'd totally rather have a > complaining-get-it-doner
You should go into management. Seriously. I've recently come to the conclusion that the issues with IT and software (i'm assuming we all know what they are) all stem from poor management. The reason is that hardly anyone who really understands how development gets done wants to be a manager.