I used to get teased at work for always responding to questions like "X client just requested this, can we do it?" with the following:
Anything is possible, but why?
It first came out in sort of a joking tone, however it is meant sincerely.
Essentially the idea I was trying to put out there was that likely any suggestion from a client we could implement, but does adding it to our platform make sense?
A few baseline questions I like to ask are:
- Is this a feature that can benefit more than just this client? If so, roughly what %?
- Will this feature require us to refactor existing systems?
- What does maintaining this feature for a year look like? Three years?
- Are there opportunities that wouldn't otherwise be available because of this feature?
- Are there additional costs on our end to implement and maintain this?
Generally by going through the above list you can determine the overall value prop for the request.
It might seem harmless to add all these features that come in. Some of them are really great ideas! But over time as you keep adding these one off requests without fully thinking it through, pretty soon you end up with a Frankenstein of a product that lost sight of your original vision and has all these fragmented features that need maintaining and are used by only a minute number of clients.
Another guideline you can follow is how Basecamp describes in their book "Getting Real" on turning down all incoming requests immediately:
The secret to building half a product instead of a half-ass product is saying no.
And a bit more on this as well in their book "Shape Up" on not keeping a backlog of features:
You also may get clients either offering to pay for features, or when you're getting contracts that include feature requests they'd like before committing to your software.
It can seem enticing when you have money being dangled in front of your face to just add these things to your platform, but I encourage you to still follow up with due diligence going through the above questions before signing the client. Lots of times you can implement workarounds with your existing system to fit their needs, or they are just fishing for nice-to-haves and the contracts move forward without the requests anyway.
YMMV but this is from my experience maintaining a platform that had six-figure contracts that drastically screwed up our platform just for a single client that ultimately ended up burning us with many future clients.