In this article Mohammad Azam discuss how it is a job of a developer to estimate the time line on the feature and not the manager.
This is a common problem in the software industry which leads to application failure and technical debt. I remember that at one of my previous work I used to have meetings with the owner of the application/product. The owner had slight technical expertise but not enough to make decisions on the developers part. The meetings usually went something like this:
Owner: We need to add this functionality to add the totals for every person and then produce the correct result.
Developer: This is slightly complicated since in the last meeting we discussed that the total will not be per person. This will require change in the database schema, stored procedures and classes.
Owner: How is it difficult just add a total field in the database and add the total for the person.
I am sure you have also experience the same issues when non technical people decides to make technical decisions. There are several horror stories regarding this issue.
One of my friends told me that they had very small deadlines which were impossible to meet. I asked him who sets the deadlines and he replied, "Team Lead! but he is not a technical person". Set aside the fact that how can someone become a team lead without having technical expertise but also how a non technical person decide about the time line of the story/task/feature. The only person who is capable of deciding the time line is the developer.
I have seen and worked on many projects where the timeline was unreasonable and the only way to finish the project was write spaggeti code and work late hours. All of this could be avoided by letting the developer estimate the time for the task or removing extra features from the software application.
Just think you would never go to the doctor and tell him that removing kidney stone is so simple and should take 10 minutes would you?