Skip to content
By Victor Hazbun

How to craft a feature the right way

The problem

There are two key processes that developers often struggle with when implementing project features: Planning and Deliverables.


Before touching the codebase, it is important to create a development plan since this will be our guide to developing the feature. This plan should contain any notes as well as an approach for solving each feature section.

Let's plan a feature together

Say our client is asking us to implement multi-tenancy into a brand new application where we need to be able to register, login and use a dashboard.

Multi-tenancy is an architecture in which a single instance of a software application serves multiple customers or accounts. Each customer or account is called a tenant.

Slack is a great example of multi-tenancy. Each account has its own subdomain which you use to register, login and scope the data for each account.

Multi-tenancy is quite complex, so we need to split this requirement into multiple features (stories) and create an epic.

We will need to make the registration feature, the login feature and the rest of our app to work in this fashion.

  • EPIC: Multi-tenancy
    • Story: Registration
    • Story: Login
    • Story: Dashboard

Let's write the details for each story (feature):

Registration feature


  1. As a user I should be able to register using my account name, full name, email and password.
  2. Each account should have it's own sub-domain.
  3. After submitting the registration form I should receive a confirmation email.
  4. By clicking the confirmation link my account should be confirmed and I should be asked to login before being able to use the application.

In this example, there is a list of tasks that could take some time to implement. I highly recommend you to convert these tasks into new stories for example points 2 and 4 are great candidates. Here is why:

From the client perspective it allows them to see some progress instead of waiting for the whole registration feature to be fully completed.

From the developer perspective it allows you to deliver results sooner, but also helps you in thinking how to refactor the code you just implemented at the next opportunity. It also helps while reviewing the feature pull request. Because there is less code to review, it becomes easy to spot mistakes and write fixes.

Login feature

  1. As a user I should be able to login as a registered user using my account name, email and password.
  2. After submitting the login form I should be redirected to my account dashboard.

Dashboard feature

  1. As a user in session I should be able to see the account dashboard by default.
  2. My account dashboard should include the account subdomain in the URL.
  3. My account dashboard should display my account data.

Point 3 looks like a new story since we need to know what data will be displayed, also we need to plan how to scope this data by the account. This will take some time.


We could say each of the stories is a deliverable so, right after merging and deploying our story, the client will be able to see your changes in action.

Ideally you should deliver as much as possible per day. The better you plan, the quicker you can deliver.

Keep in mind that a deliverable is something the client can actually test. So make sure you let the client know how to test the deliverable, you can also test the deliverable with the client and guide them through the feature.

Tips and advice

Knowing how to code is not enough anymore. To be a successful engineer, you also need planning skills among others. Work on those skills to become more productive for your team.

Divide and conquer: Split a requirement into multiple steps to easily achieve the goal.

Final thoughts and next steps

You can apply this technique to your life and tackle big problems. I encourage you to give it a try and share the results.

Popular Articles by Our Team

Our expert team of designers and developers love what the do and enjoy sharing their knowledge with the world.

We Hire Only the Best

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.

Free Community Workshops

We created the Ruby on Rails InstallFest and Ruby on Rails Development Hub to help introduce new people to software development and to help existing developers hone their skills. These workshops provide invaluable mentorship to train developers, addressing key skills shortages in the industry. Software development is a great career choice for all ages and these events help you get started and skilled up.

  • Webinars


    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.

    Learn more about webinars

  • Installfest


    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.

    Learn more about Installfest

  • Development Hub

    Development Hub

    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.

    Learn more about Development Hub

Get the “reinteractive Review” Monthly Email