A Real World Analogy to Software Development and Design

Atul Agrawal
4 min readDec 16, 2021

The purpose of this article is to provide an analogy to software development and architecture using a real world example.

Let’s consider a real life scenario when someone gives following as the high level requirements:

As a user, I need a high quality, comfortable chair.

The one-liner requirement “a high quality, comfortable chair” sounds very simple and straight forward. Right?

The similar thought patterns might come to the mind when developers are asked to build a Mobile or Web Apps for Payment, E-Commence etc. Right?

However, the real fun starts when we start looking into the options for building the product and then we gets bombarded with options.

So how do we do to figure out what can be done next?

The method that we are going to use here can also be used for figuring out the high level details for building software products.

Method

Identify “Who”, “What”, “Why” and “Where” for the Product.

  1. Identify who is actually going to use the chair
  2. Identify what customers expects from the chair
  3. Identify why customers wants to use the chair
  4. Identify where customers are going to use the chair

The next sections covers the above mentioned method in more detail.

Identify Who

who helps in giving the details about the user of product or services. This contextual information will help in selecting and customizing the product that offers best experience for them.

In this case, a chair can be used by different types of the users:

  • Babies
  • Old age parent
  • Employee
  • Barber Shop Customers
  • Diners

Once we knows who is going to use the chair we will get high level idea about user needs.

It is also very important to consider and include other important stakeholders who use the product indirectly

  • Parents and Baby Sitters for the chair used by Babies
  • Care Taker for the chair used by Old age Parent
  • Employer for chair used by Employee
  • Barber for Barber shop customers
  • Restaurant owner for Diners

This is very important because these stakeholders may have different expectation from product.

The same approach can be applied for software development where it’s important to identify the different Persona and Stakeholders to fully understand the needs from Product.

E-Commerce app might have Buyer, Seller, Shipper as users, and Organization and Developers as key stakeholders.

Identify What

What does users and other stakeholders expects from the product.

User’s Expectation

  • Chair for Baby should have Safety belt, Space for serving food and Toys
  • Chair for Old Age Parent should have Space for medicine, Water and should be movable from one place to another place.
  • Chair for Employee should have Adjustable height (few inches), Reclining, Rotatable.
  • Barber Shop Customers should have Adjustable height (0–2 feet) and leg rest.
  • Chair for Diners should have Comfortable seat.

Stakeholder’s Expectation

  • Mother or Baby Sitter might want to have a fold-able chair.
  • Care Taker might wants to have a large compartment to keep things.
  • Employer might wants to have professional chair that can be comfortably used for many hours.
  • Barber might expect the non sticky chair with placeholders to keep different tools.
  • Restaurant owner might expect to have chair with easily replaceable covers for maintaining cleanliness.

These stakeholder might impose other constraints such as budget, timelines etc.

A buyer might expect to return faulty product, quickest delivery or cheapest price. A seller might want to package samples for cross-sale the products.

Identify Why

Identify and ask “Why users and stakeholders wants to use or are interested in the product.”

This helps in figuring the real purpose for using the product and you may recommend ideas for adding X factor to the overall Product.

User’s Why

  • Chair for babies is needed so that they can dine together with family and parents can assist them with feeding. (X-Factor : You may want to add space for baby bibs, wipes etc.)
  • Chair for Old Age Parents is needed care taking and for moving them from one place to another place. (X-Factor : You may want to add bell or buzzers for calling the assistant or care taker)
  • Chair for Employee is needed so that they can do development (X-Factor : You may want to add a placeholder for laptop)
  • Chair for Barber shop customer is needed during hair cut (X-Factor : You may want to add space for keeping eye glasses, wallet etc.)
  • Chair for Diners is needed when customer’s are having dinner (X-Factor : You may want to keep something for keeping ladies purse)

A buyer wants to conveniently get a product (X-Factor : Wish list). Sellers wants to increase sales and increase revenue (X-Factor : Sales Event)

Where

Where gives the context in which in Product is going to be used and helps in providing important details for designing usable product.

I find the following quote very useful.

“Always design a thing by considering it in its next larger context — a chair in a room, a room in a house, a house in an environment, environment in a city plan.” — Eliel Saarinen [1]

Context

  • Chair for baby should be white color so that it fits well with dining table.
  • Chair for old age parents should be of size : x width and y height so that can easily pass through the main door and lift doors.
  • Chair for employee needs to be black and professional looking as it fits with office environment.
  • Chair for Barber shop should be adjustable using the legs as hands won’t be free.
  • Chair for Diner needs to be wooden as dining table is also wooden.

Buyer might use the product via Mobile Phone or via Laptop or in Kiosk. Seller might use the web portal for listing the products.

The simple approach to identifying “Who”, “What”, “Why” and “Where” for chair helps in identifying the most suitable chair.

Similarly, the same approach can be used for identifying the important “functional” and “non functional” requirements for the software products.

--

--