Keep an eye out for those features that you didn't know you'd created

Since I've been working in software development and specifically in a company which provides a SAAS (software as a service) product I've been bitten a few times by changes we've made to the product having unexpected customer effects. Bugs that we fixed actually changing the behaviour that customers expected and modifying areas of the product which we then realise customers are using in ways we never imagined.

Always striving towards as close to continuous delivery as we can, we roll out new features and improve on old ones constantly. This means that we get our software in front of real customers very early. This also means that customers will start learning and experimenting with how our new feature works and what it does very early on in the development cycle. You've got to remember that once something is out there it's out there.

Customers are inventive and if they really like the service that you provide they can also be very forgiving. They can soon start to use your product in ways that you never imagined. This means they might discover 'features' that you never intended to be a feature or may not have even realised were there. If toggling an option has a side effect elsewhere in the system you can be certain that someone somewhere has found it and is probably relying on it's behaviour. These unexpected or unplanned 'features' can be quite tricky to manage once they get in as you might not even realise they are there. You need to be very careful about how you change your solution as it develops because although you might believe you understand your system there's probably someone out there who is using those hidden 'features'. We can't always know how everyone is going to use our product and sometimes I guess we just don't understand our customers as well as I think we do! No-one could have imagined the way Africa has transformed the use of mobile phones to act as mobile wallets when they created the Nokia 3210 and yet it's widespread now.

The other characteristic I mentioned earlier was they they can be very forgiving. With bugs that you would imagine to be intolerable people can learn to work around or even adapt their own processes to take it into account. Again this means that when you finally get round to fixing that bug, some customers might not be as happy as you thought they were going to be. Others might not have even known it was a bug in the first place as your product may have been a better fit for their particular process with the bug in place.

Don't get me wrong. Moving fast is great. Customers love it when you move fast. One way we use to keep rolling out features fast is to make sure absolutely everything is feature toggled. This gives customers time to move over to the new way of working and explore new features without the latest kit disrupting their way of working. We can always undo something that we've done at the flick of a switch so that if you do disocover it's causing issues it's not a problem removing it. It also means that you can test using select groups in the live environment without having to roll it out for everyone.

You also need to be aware that when you're moving fast you need to be as transparent as possible. If you're making changes to your product all the time make sure that it's easy for anyone, especially customers, to find out exactly what is going into the product. After all if they don't know what's going into the product then how are they going to give you feedback?