As we build our proprietary web platform, Leverage, our goal is to build in features or functions as we build them custom for clients.
The rule, though, is that nothing gets added to the platform until it's been coded three different times for client sites.
This way, we have a chance to a) make the code more versatile, b) make the code more efficient, and c) truly vet it for necessity.
Sometimes it's hard to wait for three chances to code a feature, but waiting has always (literally always) paid off. It's how we keep our platform focused yet relevant and adaptive. It's how we truly save building time without sacrificing the final product or limiting anything.
In the end, custom websites will always be necessary, but one layer deep, just below the surface, a website should be full of shortcuts and time-saving helpers.
Everyone always says there's no reason to re-invent the wheel, but there are actually two reasons. The first is to make the wheel better, which is arguably impossible. The second is to make the wheel appear new or different, so that people stay interested.
Try not to re-invent the wheel, but don't get caught using that same old wheel for every car, bike and wagon you make.