Linus Torvalds (right) is coming under criticism today for disparaging specifications (specs) as tight guidelines in developing software.
As is usually the case in situations like these, he's both right and wrong. Specifications are something like a business plan. You need them. But if you tie yourself too closely to them then you are going to fail.
The fact is there is both art and science to software design. It has to be organized. But there has to be room for insights, for "ah-ha" moments, which will change the design, sometimes radically. You also have to be open to people on the outside, to users (Microsoft calls such people "customers"), to related projects (Microsoft calls these "competitors") and to the community (Microsoft calls this "the market".)
The point of the parentheses above is simply to illustrate that even free, open source code needs to respond to what others might call market mechanisms. There are additional problems in open source development as well. People problems. You can't fire someone who's not working for you.
But for people like Linus Torvalds, and hundreds of thousands of others, these are opportunities. They're opportunities to follow your own muse, to try things, to take detours, to "smell the flowers" of code as it were.
I'm sorry if many companies, and some journalists, don't understand that. Do you?