On Thu, Jun 2, 2011 at 9:41 AM, Russell N. Nelson - rnnelson rnnelson@clarkson.edu wrote:
Well, see, here's the problem: programmers are artists. We'd prefer that they be able to be solely technicians or engineers, but we don't know how to do that. Consequently, you have situations where one programmer is ten times more productive than another equally experienced or qualified programmer. And given that programming is a creative environment, people need an environment free of pressure. Pressure shuts down creativity. It doesn't work for professionals, and it really REALLY doesn't work for volunteers.
Of course, that said, people need to do stuff that earns them a salary. Keeping those two opposing interests balanced is what makes managing programmers difficult, rewarding when done well, and, Alex, not easily summarized in your sarcastic sound bite. The reason Brandon sent out his email was to gently correct MZMcBride's management technique of "do this or you're fired". You then proposed the same thing, which is kinda... ironic.
Managing programmers is difficult. If you think you can do a better job than the professionals, you NEED to give it a try. You might be successful! Or you might learn from your failure.
This still just seems like a sense of entitlement. If programers want to be treated like artists, let them be. Have their pay be tied to output and quality. If they want to earn a salary, then it should be like the rest of the professional world with deadlines and repercussions for not meeting them (they don't necessarily have to be fired). But trying to have the best of both worlds sounds like a recipe for disaster. But I have a few friends and relatives who are programmers, one of them does work in a typical professional situation in a large company, with deadlines and such. She's been with the same company for years. None of the others have exhibited anything like this "I'll only work in a pressure-free environment" attitude. They treat it like engineering. There's design work involved, but the design is to achieve some specified function, not just design for art's sake.
I've never personally worked in a setting where the main activity is programming. I have worked for an architecture firm. Architects are expected to literally be artists and engineers. They have to design buildings that look good and meet some function. However, they often have strict deadlines and there can be serious penalties (for the firm at least) for not meeting them. Not once did I hear any of this sort of complaining about how enforcing a simple deadline makes people want to quit.
Could people be more creative if they have unlimited time? Probably. But "creative" does not always mean "productive." Sometimes it's better to just get something done than to find an innovative or elegant solution. Such as, when the people paying your salary are concerned that you're taking too long. Or when not doing some task because you don't like it or have more interesting things to do (code review) negatively affects the final product (loss of volunteer contributions).
-- Alex Z.