A good designer and a bad coder creates better output then a poor designer and a good coder.
A good coder will ignore poor design done by a poor designer. There does not exists a good coder that would not be at least an average designer, too. [Granted, if you have a good design done and no coder, you are closer to ready (in process, not necassarely in calendar time) than with no design and a good coder. Yes, poor design is same as no design.]
Open Design and Open Specification are far more important then Open Source.
I agree in theory. However, in practice, most of the time the only specification exact enough is the implementation. See hardware drivers for example: there's always some specifics that are not documented anywhere else but in the the driver source. Granted, it would be better if all those specifics would be defined in the hardware documentation but more often than not, the documentation is not detailed enough to cover all the cases. One could argue whether that is because the design is poor or because the design is not detailed enough, though.
All programming is, after all, just documenting the desired behavior in approriate detail for a simple calculator to be able to comprehend. Some software designers dream about the future where software can be dragged-and-dropped together from simple pieces. If you are trying to describe some process in great detail, would you rather use some language (like English, C++, Java) or would you like to drag images around with a mouse? I'd prefer using some language suitable for the problem. Do you believe that in the future coders do are not required?
I do both software design and coding.