Automation is usually a time consuming and requires lot of effort in order to get it working and also to enjoy the benefit of automation.
But, this can be optimized and result from automation can be reaped early. Teams get stuck in developing frameworks, utility files, where lot of time is spent and the same effort is not spent during actual automation. There are lot of features in the automation tools itself which is ignored by the users and they try to handle them in their framework, thus resulting in extra time and effort for developing the framework and also not the amount spent on the tool itself is not utilized since the in-built features are not used. Take for example QTP is having a good object recognizing technique and an object repository still the industry wants to build a framework with descriptive programming and avoiding object repository. I agree that in the initial version may be in QTP 3, 4.0 there were drawbacks in QTP object recognition and the users were forced to use descriptive programming, but now that is not the case, but we still follow the same approach.
Coming back to the framework, there are lot of open source framework which can be adopted and modified to our needs which will reduce the time required to build the framework, but we still try to build it from scratch.
I feel we need to use the tool features and try to use the utility functions, framework available in the net which will result in making automation easier and also faster.