Project managers will ask software developers how long implementing a new feature will take. One of the reasons it is difficult for the software developer to estimate is because only a fraction of the work is actually implementing the feature. A large portion of the request actually involves learning. When changing information systems something that is straightforward can be coded quickly but if learning is required it can take a lot longer. The nature of learning is that you are surprised.
Sometimes more time needs to be spent on defining and framing the problem or opportunity. The software developer will need to take time to learn how this is going to work. Sometimes the technology is unknown and it takes time to understand the API.
Learning is a part of the work though. Learning is very context-sensitive also. So sometimes when the result of the work might be dubbed “not reinventing the wheel”, then it still took time and energy to learn that or to learn how to frame the problem so that the wheel is not reinvented. Not reinventing the wheel is not always a production responsibility.