Options and delivery

This is a bit of a change on my usual posts as my job over time has evolved into not just day to day coding but worrying about delivery as well. Something I’ve found out over time that is very easy to forget when estimating or explaining how a team is going to tackle a problem or delivering a feature is providing options.

Most software methodologies these days are aimed at one thing above everything else, deliver quickly. Some say you need to fail quick to know when you’re wrong and same approach when you’re doing well, but everyone agrees that whatever you do, you need to deliver as fast as you can. However, you need to also deliver on a sustainable rate. Enter options. When my team is looking at a new piece of work, one of the fundamental questions we always like to ask is have we given the stakeholders all the options they can have? Keep in mind, some of these options might not even be obvious, but there could be a huge potential win on them!

Imagine you work on a online retailer and you need to incorporate a new delivery courier to your checkout process. Now the obvious thing is to implement the backend API that speaks to your new delivery courier, wrap it all behind some form of facade (chances are you will have to add more) and make an endpoint for your application. So far, you don’t seem to have options. But maybe you do, do you need to implement the facade to talk to the courier API on every endpoint? Maybe you could go for the lowest smallest piece of integration (say only standard deliveries?). This is when options come in handy, as developers, we sometimes forget that when we are delivering a feature it usually responds to a business request and we might not be holding all the cards so options on how to build are always necessary and very important.

Right, we have a backend that might or might not implement all possible ways of doing a delivery, that’s the backend side done, what’s next? Well for the frontend, do you need to build a fully fledged UI showing options and such or can you not just go as simple as show a message when customers pick a product that uses this courier?

There is no recipe here and it all depends on which questions you ask yourself when you are planning, but it is an essential side of delivery that we ask the most fundamental question of all: Is this the absolute minimum that would give you some value? No? Slice as an option, trim the feature a bit more. This way is a fairly easy way to come up with some options every time we are planning what answer to give back to stakeholders and it’s a very good exercise for the whole team to do as you learn more and more about your product.