You wouldn't start coding something before you'd fleshed out a design, right? So why would you start designing something before you identified the market for it?
Marketing is the social component of design, and you need brilliant marketing before you can create that brilliant product.
Not start coding before you fleshed out the design? Not design until you've identified a market? Sounds like a recipe for never getting anything done. That might be the proper way to tackle things when you have a big upfront costs, but generally for software you can just start coding on things you find useful and interesting. If others are interested, great, you've got a company. If not you just have a useful product and then you can move onto something else.
I'd agree with that. The one piece of software that I have written that people choose to use (as opposed to being forced to because the code is embedded in the widget they just bought)has got to be the most trivial thing I have ever done - a multicast bridge that I hacked together one afternoon. It has some trace that is very useful for the proprietary multicast protocol that we use.
That stupid bridge, that I wrote because I needed it one day, is now in regular use in three different companies (mine plus two parteners). I get support emails for it to add features or fix bugs about once a month.
If you find it useful, chances are that others will find it useful too.
That said, I think that the Y-Combinator crowd should probably pay more attention to resolving non-programming needs. Most programming tasks already have good tools these days, because if a programmer sees a need, she can code it herself straight away, and programming tasks have lots of programmers identifying programming needs.
For example, I put together a stupid little app a few weeks ago that took a pdf document from Paris Town Hall that lists the addresses of all handcapped parking spaces in Paris. The app reads the list, sends the addresses to yahoo maps to get the long/lat, and then puts the results in a .gpx file for loading into gs devices. Yet another dumb app, but I've had more than 200 downloads of that .gpx file in only a couple of weeks. It's popular because there are apparently few programmers trying to solve problems in the handicapped problem space.
I would say you don't need brilliant marketing before you can make a product. Brilliant marketing can maximize the money you make off an idea, but you can make a great product with a small market. 37signals is a great example. They build products for them, since they know what they want.
Of course, this doesn't work in a lot of situations. People who don't know how to write software need software too. To start a startup though, all you need is an idea that some people might think is ok. If it really is good, marketing and business will come later, after you've developed the product.
I think that 37signals is the wrong example to pick here, they are where they are because of great marketing. There are loads of sites that do ajaxified to-do lists, a good hacker could probably code up their ta-da lists in a weekend. The reason they are popular is because they have attitide and great marketing skill. Just look at the number of submissions to YC news from their blog.
And no ROR has nothing to do with this - you could implement their site in Cobol if you wanted to and the average customer wouldn't know the difference.
I agree that a lot of their success has to do with great marketing, and I've never said that marketing isn't important. I believe, however, that 37Signals did very little market research when they started. They made products and then figured out how to get users, not the other way around. Now they're successful and can use that success to grow even faster.
You bootstrap with great products, not great marketing.
Marketing is the social component of design, and you need brilliant marketing before you can create that brilliant product.