Lately at SDP we’ve taken ownership of a number of projects developed by other individuals or companies. Most of these projects are in production or are near ready for production. When taking over a codebase we perform a short requirements session with the client to ensure we understand the whole of the project and then we perform a thorough code review. One of the things we’ve noticed is a lot of the projects we’ve taken ownership of have extra features that are not used by any of the clients users. These extra features can quickly add up to hundreds if not thousands of lines of code we end maintaining. Upon further investigation we’ve found in most cases that either the client or the previous developer decided these features would possibly be used so the features were included in the final product.
As software developers our goal should be to build the simplest feature set necessary to accomplish the goal, don’t code for what may be needed, keep all features as simple as possible while still meeting the clients need. Focusing on simplicity allows us to deliver what could be complex projects quickly and accurately. We’re not saying remove the all the killer features from a piece of software just to achieve simplicity, but do focus on making sure each and every feature provides some value to the entire project.
The next time you’re working through a requirements meeting continually ask yourself and the client “Is this feature absolutely necessary?”, “Does this feature provide value to all potential users? Or is there a single stakeholder we are trying to make happy?”. Making sure you focus on simplicity will make your chances of project success much higher and your client much happier.