http://www.joelonsoftware.com/items/2009/09/23.html puts some perspective to coding which puts the software first or code which puts the product it supports first.