• I doubt our company would ever consider outsourcing, simply because of security concerns. However, the point about not upgrading because of application breaking needs to be addressed.

    Best practice is to be conservative in coding practice. Beyond the development staples of clear elegant code, lots of comments, etc, there is also a future-proofing consideration.

    Don't use things outside the core like third-party code addons. They give you short-term convenience at the cost of long-term pain. MS in particular is very very good about backward compatibility (thank God) so there's usually plenty of time if you have to work around deprecated features. There aren't that many and they don't happen that often.

    But stay conservative. After all, they call it "bleeding edge" for a reason...