I've been forcing myself to consider the business of software rather than the technical aspects. I've come to the same conclusion from a couple different angles. Small companies should leverage infrastructure and existing software frameworks, either commercial or Open Source, and not develop entire applications from the ground up. Since small firms have constrained resources, it is better to think as an integrator rather than a developer.
That might seem like an obvious statement, but it is difficult to think that way as a software developer, because developing software is what we do. It is also best to choose platforms not purely on technical merit or one's religious beliefs, but on the leverage they provide. If you don't, the competition will, and they will win.