We can't get anywhere with free software if the developers don't do
design. They always did. It just sucked because they went with whatever
the first iteration was. The focal point changed and "we'll add some UI
later" is not design. Interaction with the software is key.
Design requires you to have a general idea about the interaction
upfront, but not everything. Once a general idea is out there an agreed
upon, the second part of the design process kicks in.
"Prototyping"
Prototypes help you see the flaws of a design more clearly, and missing
features can be added to accelerate the design/development of the
project. Frequent and agile iterations between visual designing &
prototyping is part of a healthy design process.
Since developers can write code they can also prototype, (as long as
they don't get attached to their code).
This talk is about how designers tricked a developer to be one of
them...