As much as I want to agree that engineers shouldn’t waste time, the reality is we still have to waste time because almost every company I worked with have their own sets of design standards, software architecture, and what they want to achieve that is unique and different from any other company.
Also coupled with the fact that only very few privileged companies participate or collaborate in open source projects or developers community to discuss standards, conventions, or something that will reduce the problem of duplicating or recreating a solved problem.
Most of the time I code to achieve specific goals. I don’t really like to waste time coding for coding’s sake. Although it’s fun sometimes to solve a non-practical coding problem with the right environment and peers.