"If nobody can make money from it, there will be no development and open source software quickly becomes outdated..."
As opposed to closed-source software which... quickly becomes outdated!! (Noticing a pattern here? How's that massive Vista upgrade plan looking?)
"As a programmer, if I can write good code, why should I give it away?"
Oh, gee, I don't know. Network Effect? Free Advertising? Growing the Market? Massive, massive consulting opportunities? Because you actually give a damn about good code??
I had this same argument with one of the resident contrarians over at MrCranky.com not too far back. The essence of my argument was that I do not get paid because I merely hold onto source code. That is entirely secondary. I get paid because I have the ability to create new code that solves my customer's current problem(s). It is the ability to design, create and engineer a new system or component to my customer's specs that gets me paid. NOT the simple reselling of another person's code labor.
Even though our current patent system is hopelessly broken, I'm still for limited intellectual property rights. I don't think anyone should have to share their source code if they don't want to. I hope, however that people would be smart enough to see that opening their source is a big win in the long run for both themselves and their customers.
The mechanical engineer does not get paid because he resells the same bridge plans over and over again. The electrical engineer does not keep his job because of circuits he designed before he was hired. And the software guy should not get paid just because he has some legacy source code lying around.
Technology has always been, and always will be, about innovation. Thinking you can sit back and just collect royalties your whole life without ever producing anything is the worst kind of parasitism.