Defining Value in Software Development

Introduction to the Lean Software Development Series

This article marks the beginning of a series on applying Lean practices to software development. These articles will cover:

  1. Defining Value
  2. Mapping the Value Stream
  3. Creating Flow
  4. Establishing Pull
  5. Pursuit of Excellence

Through this series, we aim to explore how adhering to Lean principles can significantly enhance efficiency and effectiveness in delivering software solutions. Our focus in this article is on the first practice: Defining Value.

Understanding Beyond Requirements

It is vital to look beyond the customer’s requirements and understand the problem they are trying to solve.

At the heart of value definition is a deep understanding of the customer’s problems and needs. This understanding is essential for delivering solutions that yield better outcomes and more value. The first step in our process is to thoroughly understand the problem or opportunity being addressed. Aligning software development with an understanding of the problem, focusses efforts on solving the problem and is more likely to deliver value.

It’s vital to look beyond the requirements presented by customers and end users. Analysts must delve into the underlying reasons behind these requirements and capture this understanding for the entire development team. Once the problem is thoroughly understood, analysts apply lateral thinking to either validate the customer’s request or identify more effective and efficient solutions. This might involve challenging the initial request if it does not truly solve the problem, exploring existing solutions, or discovering novel approaches that offer greater value.

Analysts with direct exposure to the customer’s industry and organisational functions, enhance understanding of the problem and opportunity.

User Stories as a Tool for Value Definition

Effective user stories shift the focus from designing and coding to delivering value to end users.

Writing effective user stories is a vital step in defining value. User stories help shift the focus from designing and coding to delivering real value to end users, stakeholders, and the business in general. Effective User Stories define the benefits the solution will deliver, who will benefit and why i.e., “As a [type of user], I want [an action] so that [a benefit/a value].” They are crafted to fit the INVEST criteria outlined by Bill Wake:

  • Independent: the feature can be implemented on its own without dependence on any other story.
  • Negotiable: freedom for developers to discuss and decide on solution specifics during development. The extent of flexibility or ‘wiggle room’ an analyst provides to a developer is an indication of the User Story’s negotiability. Instead of rigid design specifications, stories emphasize desired business outcomes. User Stories are meant to guide rather than act as exhaustive specifications.
  • Valuable: each User Story offers a distinct value proposition to the end-users.
  • Estimable: it’s quite easy to estimate how much time the development of a User Story will take.
  • Small: User Stories should be deliverable within a single iteration. In the context of our weekly release cycle, stories not larger than 20-hours development effort are ideal.
  • Testable: requirements should be objective and measurable for use as acceptance criteria in determining completeness.

Requirements Traceability: Ensuring Alignment with High-Level Goals

In the realm of requirements engineering, traceability is about how high-level requirements – objectives, goals, aims, aspirations, expectations, business needs – are transformed into development ready requirements. In software development, traceability is crucial to ensuring the development team focuses solely on value-adding features. It is important to review User Stories and requirements for traceability, discerning those that address the problem statement and discarding those that don’t.

Minimum Viable Solutions: The Art of Maximising the Amount of Work not Done

Building on the concept of value refinement through requirements traceability, we turn to Minimum Viable Solutions (MVS). MVS is strategic minimisation centred on finding the simplest yet complete solution that effectively addresses the problem. By stripping away unnecessary complexities, we concentrate on the core components that are essential to the solution’s effectiveness. MVS enables quick deployment and iteration, allowing for immediate user feedback. This real-world input is crucial for continuous refinement of value, offering insights that a requirements analysis process alone cannot.

With an understanding of the problem, effective user stories, traceability and a mindset of minimum viable solutions, we can focus our efforts on the work that matters most.

Prioritisation: Assessing Value in the Product Backlog

Not all items in the product backlog are created equal; some will inherently add more value than others. A robust framework is needed to determine the relative priority of each item, ensuring focus on tasks that offer the most value. Analysts who are familiar with the customer’s business, their problems and the opportunities are more effective at prioritising.

In defining value, it is crucial to regularly re-evaluate the priority of items in the backlog to ensure efforts are not wasted on low-value tasks. This process should be iterative, reflecting changes in the business context or user needs. Avoid the sunk cost fallacy, a cognitive bias where decisions are influenced by the time and effort that has already gone into a work item rather than its current value. It’s never too late to give up; persisting with a low-value tasks robs the team of time that could be spent on more relevant and valuable tasks.

Connection and Empathy through Support

Customer support personnel stand at the forefront of understanding user challenges and preferences.

The role of customer support personnel is integral to defining value. Their direct interactions with end-users provide a wealth of insights. These individuals stand at the forefront of understanding user challenges and preferences, making them an invaluable feedback source to the development team. Strong connections to end-users, their industry and their organisational function promotes a greater understanding of the problems and opportunities and a heightened sense of empathy with the end users. The empathy developed informs more user-centric solutions, ensuring that software features are closely aligned with user needs.

Conclusion: Emphasising Value in Software Development

To maximise value, you must first understand what is of most value to the customer.

This article has laid the groundwork for applying Lean principles to software development. Defining value is the foundation upon which effective Lean software development is built. With a focus on understanding customer needs, ensuring requirements traceability, identifying Minimum Viable Solutions, and prioritising value, we set the stage for an effective and efficient software development process. In our next article, we will explore the second practice of the Lean methodology: Mapping the Value Stream.

Scroll to Top