I find the « Starting for the Right Reasons » discussion very useful : it's so easy to be wrong on this.
Here is an extract :
Most developers want to build software products for the wrong reasons.
Reason #1 : Having a Product Idea
If you have an idea for a product, odds are high that you have a product/project confusion.
A project is a software application you build as a fun side project.
A product is a project that people will pay money for. In other words, it's a project that has a market (a group of people who want to buy it). Without a market, a software application is just a project.
Most developers who come up with an idea know exactly how they will build it, but no idea how they will reach potential customers. They think a link on TechCrunch will drive hundreds, if not thousands, of sales.
On rare occasions the product-first approach works, but for the most part it's a recipe for failure.