- Focus on customer's interaction with your product over technology being used. Nobody cares about which language/framework/... you use, as long as your solution works for your customers.
- Sharpen your tools/skills before you cut the code. If you are comfortable with a piece of technology, and productive with a stack, stick with it. Ignore the thrill of building new stuff in a language to impress your peers.
- Never use new technology/framework/... - many of them will die before they will become useful - Exception is if the technology is going to improve your value proposition. In that case, you should try to improve it to fit you needs - If this is an Open Source project - share it back with the community, it is a true win-win for everyone.
- Keep the whole software architecture modular and replaceable. You will be paying it forward and it will save you money in the future.
- Keep the server processing to the bare minimum needed - this will help you scale efficiently. With AJAX on browser and powerful mobile devices you can do much of the hard work on clients rather than on the server. The only bottleneck is the overflow of data being sent over the wire, but its a small price to pay.
- Optimize only when you need to scale - only fix what is broken.
This is a living document, and might change over time. Much of the learning presented here has been from our own experience running start-ups, helping other start-ups and businesses.