We have a developer, I will call him Rob, who writes many utility programs and rarely works on the main product with the other developers. One of the utility programs needs a new feature to allow our customers to see, modify, remove, and add items to a list. Rob shows all the data in a grid, and needs to allow customers to add items to the grid. This could be done in two hours by placing an add button on the form. But Rob wants to use the add feature built into the databound grid.
We all agree that the utility will look better if the add is done in the grid instead of a using a button, but we also estimate five days instead of two hours to get it to work. This means Rob will not be able to work on a few other features for the release. However, Rob is likely to hold a grudge for years if not allowed to write the code using databinding to get the aesthetic look he desires.
Should we allow Rob to take the extra time to write the code that will be more pleasing to the customers, and to Rob; or should we require Rob to write the code more simply so that additional customer requested features can be included? If we choose the better user interface, we must leave some features out of the release.
If we choose more features, we risk questions from our customers like, “Why didn’t you just allow us to do the add in the grid”, and we also risk displeasing Rob.
Should our decision favor the needs and desires of our customers, or the needs and desires of our developers?