Axioms are self-evident truths. The axioms of Software Development isolate key basics underpinning successful software development. Knowing and using them helps resolve the problems associated with coordinating developers, time and resources, ensuring your software project will be successful and provide a return on your investment.
In parts 1 and 2 of this series, I discussed Axiom 1: Desired features ALWAYS exceed available budget and Axiom 2: Communication is King. If you haven’t had a chance to read these, I urge you to. These axioms build on each other and understanding the first axiom will aid your understanding of the subsequent ones.
Here is the next axiom:
3. Always consider the return
This axiom is key when working out which features should you develop and in what sequence. This is closely related to the first axiom: required features will ALWAYS exceed available budget. A return can be considered a profit from an investment, be that time, money or goodwill.
In our earlier example, if the feature is created to allow a customer to edit the line-item, then that's a feature that brings a return. We then have to ask what the return will be for each feature: how much better is the application if it's a pop-up or an inline edit, thus avoiding a page reload? 50% better or only 1% better?
Just say it works out to only be a 10th of 1% better. Is that worth spending two days building it? The answer is obviously “no”. So, let's move on and pick the next feature and examine the return it will bring.
As you do this, you’ll find you will start concentrating on the things that really matter in your application. For example, an ecommerce solution is useless without a way to checkout. It’s even more useless if you can’t see a list of products for sale and below that it’s basically worthless if you can not even display a product! So prioritising a smooth checkout flow before you have delivered viewing a product on the site would be out of sequence and detrimental to the project’s success.
While it is an extreme example, ending up with an ecommerce application with the world’s most intuitive, mobile friendly, super fast, high conversion checkout flow, but no way to view and add a product to a cart because you ran out of time or budget, would be a pretty useless ecommerce solution.
As your application becomes more and more feature complete, the incremental return on each new feature will reduce to the point where you are looking at building features that might only make the app one 10th of 1% better. But this is fine, because over time more and more people should be using the application and this 10th of 1% would represent quite a large return from an expanded user base.
Deciding what feature to develop next
In deciding which feature to develop next, you should keep this formula in mind: The Return Value is equal to the Benefit Gained multiplied by the Volume of Use with the Cost to Implement subtracted, or:
RV = (B x V) - C
While it might be possible to plug in actual numbers and rank a feature backlog precisely, usually there is no need. Just look at your list of features and scan down them and assign each of them a Return Value (tiny, small, medium, large, huge). Then rank these by their return value and you will instantly have the key features you need to deliver first.
This “correct sequence” thinking in terms of return on investment is critical to how you get a project delivered on time and on budget.
Sometimes though, you really want this special feature. It’s going to add some pizzazz to your application, setting it apart from the competition and you are heavily invested in it.
Even in this case, it is still best to put it off until after all the critical features are done first. You don’t have to launch immediately once all the critical features are done. But you CAN.
This is an important distinction.
Being in a situation where your app is ready to launch and you are polishing it with any remaining budget of time and money is a much better space to be in than the budget running out with key features barely started.
Every feature of your minimum viable product must be evaluated based on its return and development must be prioritised on those features that deliver the highest return first.
This may seem pretty obvious but you would be surprised how often it doesn't happen and you end up with zombie projects that are draining everyone’s will to live.
The Axioms of Software Development - Part 7
The Axioms of Software Development - Part 6
How to Redirect a Rails Application to a new Domain Name
reinteractive is Australia’s largest dedicated Ruby on Rails development company. We don’t cut corners and we know what we are doing.
We are an organisation made up of amazing individuals and we take pride in our team. We are 100% remote work enabling us to choose the best talent no matter which part of the country they live in. reinteractive is dedicated to making it a great place for any developer to work.
Webinars are our online portal for tips, tricks and lessons learned in everything we do. Make the most of this free resource to help you become a better developer.
The Ruby on Rails Installfest includes a full setup of your development environment and step-by-step instructions on how to build your first app hosted on Heroku. Over 1,800 attendees to date and counting.
The Ruby on Rails Development Hub is a monthly event where you will get the chance to spend time with our team and others in the community to improve and hone your Ruby on Rails skills.