If you think that technical task is unneccessary, then yu're wrong. The thing is that your development goals may be very mch dffrent from developers understanding of what you need.
For example, a simple taks of making a feature of adding banners to main page can be completed in numerous ways.
Let's imagine, that a client gave developer exactly this task by saying: "Add a feature for admin to place banners on mainpage".
The developer did the following:
1. Admin is able to navigate to banners page in admin panel.
2. Admin is able to add one or several banners and display them in a slider.
3. Admin is able to switch sliding arrows on and off, if there are several images and they are displayed in a slider.
4. Admin is able to show/hide banner counter in slider, scroll banners with graphical numbers, dots, etc.
5. Admin is able to change sliding effect.
6. Autosliding of banners stops, once mouse cursor hovers over the slider.
But client also meant:
1. Ability to add text to banners.
2. Ability to strecth banners all over the page's width.
3. When banners slide until the last one, the first one should show up again.
4. Once mouse cursor hovers over the slider, sliding must not stop. Play/pause button is needed instead.
As we see, such a simple task had many extra features and as a result had many issues in completing.