The Direction of Development

Smit Shah
Product Coalition
Published in
4 min readJul 7, 2020

--

A usual two-week-long sprint. Users have posted a plethora of reviews on the Playstore and Appstore asking for a search feature. You the PM are extremely excited about delivering the much-awaited ‘search’ functionality this sprint. The story-boarding is done, the user story is ready and all the collaborators are in sync with the goal that the team is trying to achieve with the ‘search’ feature.

The heart-break

You are an optimistic PM. Half-way into the sprint, you observe that the things are going as smooth as silk and decide to inform those yearning users to stay tuned about the upcoming feature. But silk can turn to sandpaper pretty quickly in software development. A technical challenge, a major bug, health issues to a couple of teammates or a holiday due to incessant rainfall (especially if the office is in Mumbai) can derail the feature. Suddenly, a fear looms over not being able to deliver on the promise.

Let’s Construct

If this happens ever too often, the issue is with the ‘direction of developing’ the feature. Imagine this — a builder decides to build a lavish residential complex with 10 buildings in it. He manages to sell all those flats in advance and has promised to give possession in a year’s time.

Here, as you can see in the figure there is a vertical direction to construction and a horizontal one. Assuming that both the directions take the same time to complete, which direction will the builder choose?

Which direction will the builder choose?

An unprecedented situation arises after 6 months and the construction site remains shut for another 6 months.

In the Vertical approach, the builder first lays pillars for all 10 buildings, then proceeds with building floors for each building and so on. With this approach, the builder will be able to lay pillars for all 10 buildings and build a couple of floors in the first 6 months (when the site shuts down). This, in turn, means that after a year’s time (the promised duration) not even one of the 10 buildings is ready for possession. This will leave all the customers agitated and legal action may also be taken against the builder.

If you choose the vertical direction and are into the construction business, I am not purchasing a flat from you!

In case of the Horizontal approach, by the end of 6 months, although the work on 8 buildings wouldn’t have even started, 2 buildings would be completely ready for possession (before the site shuts due to an unprecedented situation).
The builder could give possession to owners of flats in those 2 completed buildings. This means lesser agitated customers. Also, the ones who did not receive possession would have some trust left in the builder.

The Construction and Agile Development analogy

Okay! So now that you have built your dream home, let us get back to software. The direction of development is paramount in agile software development as well. Have a look at the image below. The search feature has 3 major components: Search by Category, Predictive Search and Search by Image. Any type of search will finally take the user to the search result screen.

Image Courtesy: Myntra

We will again consider both the approaches and assume a situation wherein due to some major bug on the market build, developers are forced to shift focus halfway into the sprint.
Consequently, the feature wouldn’t be completed (Remember you had promised your users to deliver search in the next release).

Now you now which direction to choose!

Vertical Approach — UI for all three components was done. User interaction i.e Uploading the image from gallery in image search, the business logic behind the predictive search was also done. API integration for all 3 components was in progress when the developers had to shift focus to fix a major prod bug.

Horizontal Approach — But in case of Horizontal direction of development, the situation would sound like — Search by Category was completed i.e its UI, user Interaction, API and the Result Page done. The other two components were not even started when the developers had to shift focus to fix a major prod bug.

If you observe carefully, although the search functionality is not completed in both the cases, in the Horizontal approach, it is still deliverable! Users would at least be able to search by category and fetch results.

It is an independent testable child story of the main search user story. A child story that is deliverable. The users may not be overwhelmingly happy with it, but it will still satisfy a part of their need. They may still complain but at least won’t feel betrayed.

The entire development direction concept may seem to be very developer-oriented and not Product Manager-oriented but it is upon the PM to facilitate this. How? By writing User Stories that have independently testable child stories. Stories that give a very clear direction to various collaborators.
This way you may not land in trouble just because you are an over-optimistic PM!!!

--

--

I wish to be as aggressive as Steve Jobs, as audacious as Elon Musk, as patient as Jack Ma and as humble as Bill Gates