Here are my two cents.
This experience comes not from a dev shop, which at some point I would like to start, but from a little grocery store I run when started college some (long) time ago already.
Two most important things I remember from that time by making mistakes on them, and luckily correcting them quickly enough, were:
1) it's all about the customers
2) control your costs, and make them as variable as you can
1) means, sometimes, you'll have to sacrifice things for the customer, like not playing with your favorite tool but those which are right for their job. In my grocery store, it was about doing daily re-provisioning instead of 2 or 3 times a week, to make sure customers found what they needed.
Also, make sure there's a Sales/MRK guy in there to transmit engine's energy to the surface! No matter how good your idea is, you need someone making it known, knowing your audience, develop a great segment and positioning strategy, etc.
2) is simple - make sure you can increase/decrease operation with minimal hassle financially speaking. That may mean e.g. get people to share gains & looses at least until the shop has enough financial buffer. (How possible is that today BTW? Is that an usual practice?)
And for a dev shop, I would add one - have a great partner. I don't know of statistics for this, but I'd bet that, most shops that succeed came from partners with great understanding, mutual support and, most important, trust. You need to be able to rebound ideas, trusting the judgment of the other person and trust on their execution.
BTW, this book is pretty decent on the subject, Eric Sink on the Business Of Software