DZone
Thanks for visiting DZone today,
Edit Profile
  • Manage Email Subscriptions
  • How to Post to DZone
  • Article Submission Guidelines
Sign Out View Profile
  • Post an Article
  • Manage My Drafts
Over 2 million developers have joined DZone.
Log In / Join
Refcards Trend Reports Events Over 2 million developers have joined DZone. Join Today! Thanks for visiting DZone today,
Edit Profile Manage Email Subscriptions Moderation Admin Console How to Post to DZone Article Submission Guidelines
View Profile
Sign Out
Refcards
Trend Reports
Events
Zones
Culture and Methodologies Agile Career Development Methodologies Team Management
Data Engineering AI/ML Big Data Data Databases IoT
Software Design and Architecture Cloud Architecture Containers Integration Microservices Performance Security
Coding Frameworks Java JavaScript Languages Tools
Testing, Deployment, and Maintenance Deployment DevOps and CI/CD Maintenance Monitoring and Observability Testing, Tools, and Frameworks
Partner Zones AWS Cloud
by AWS Developer Relations
Culture and Methodologies
Agile Career Development Methodologies Team Management
Data Engineering
AI/ML Big Data Data Databases IoT
Software Design and Architecture
Cloud Architecture Containers Integration Microservices Performance Security
Coding
Frameworks Java JavaScript Languages Tools
Testing, Deployment, and Maintenance
Deployment DevOps and CI/CD Maintenance Monitoring and Observability Testing, Tools, and Frameworks
Partner Zones
AWS Cloud
by AWS Developer Relations
  1. DZone
  2. Culture and Methodologies
  3. Agile
  4. Lean tools: Set-Based Development

Lean tools: Set-Based Development

Giorgio Sironi user avatar by
Giorgio Sironi
·
Apr. 24, 12 · Interview
Like (0)
Save
Tweet
Share
12.79K Views

Join the DZone community and get the full member experience.

Join For Free
Agreement over a decision can be reached either via point-based proposals or via set-based ones; in this context, the decision can be a design-related one like which database to use, with a list of proposals from different people and teams that everyone must agree upon.

Doodle

Doodle is an example of application using set-based development to schedule meetings. It works in the following steps:
  • the creator of a Doodle sets up a set of possible dates and times for the meeting.
  • Every invited participant chooses a subset of these dates that will suit their constraints.
  • A date can be finally selected where most (of all) of the involved people will be available.
The result is an agreement between N parties that fully utilizes the bandwidth of information exhanges: instead of a conversation where everyone proposes a single date and vetos or agree over the current one multiple times, we get everyone to only view the Doodle once.

Latency

The advantage of thinking in sets instead of points is to keep options open as long as possible: there is no reason to commit early to a decision when there are actually many options available that could suit other people better if only they could be selected in a further optimization phase.

Moreover, agreement between N parties always involve a relevant set of communications to be set up; set-based development tries to maximize the amount of information extracted by each party by making him specify his best 10 choices instead of just the best one.

As in the Doodle example, when every interaction has some latency (like the time to respond to an email or to have a physical meeting), the time spent to reach a decision is reduced from this interactions:

  • A: I prefer solution 1
  • B: I prefer solution 1 too
  • C: I can't work with solution 1
  • A: I prefer solution 2
  • B: I can't work with solution 2
  • A: I prefer solution 3
  • B: I prefer solution 3 too
  • C: I prefer solution 3 too

to the following:

  • A: I prefer solutions 1, 2 and 3
  • B: I prefer solutions 1 and 3
  • C: I prefer solutions 2 and 3

to reach the same agreement on 3 (the date of the meeting in our example). If you have never seen a discussion following the first pattern, raise your hand.

In fact, while it is still possible to schedule a meeting between two or three people via email, the approach does not scale to more participants and Doodle solves the problem via Set-Based development by minimizing the total latencies that an agreement has to wait.

Multiple options

Producing a single design does not guarantee it to be the best, both in programming and at an higher level of abstraction while deciding how a story should be implemented. In each stage of development we should be able to produce some options before making a decision: Set-Based Development tries to make everyone communicate its constraints so that the only possible decisions amerge from the total set of available ones. It originated from tangible object design, where sets of possible esthetic decision must not clash with sets of possible engineering or manufacturing ones: you shouldn't draw a chassis which reveals itself to be fragile in accidents or too costly to solder.

Even in an iterative model, which can rework design decisions late in development, set-based approaches drastically reduce the number of iterations needed to reach convergence to a decision that satisfy all constraints.

Here are some other examples of set-based approaches in computing:

  • a database abstraction layer let you work on multiple database at any time, multiplying your options and making only the necessary constraints (on functionality supported only by some vendors) emerge.
  • Mark Needham reports an example of concurrent tryouts of different types of dependency injection techniques in a particular container.
  • A/B testing is based on develop multiple solutions and propose them to disjunct user samples to measure their effectiveness. This approach is taken to the extreme in Lean modern companies where each feature has to be A/B tested before going into the trunk.

Conclusion

We will see more about options in the next articles of this series, which will explore the Lean philosophy of the last responsible moment. For now, we are happy with trying to find multiple solutions to each design problem to augment our options; then, we will try to gain not only an advantage in variability but also in time commitments.

Lean (proof assistant)

Opinions expressed by DZone contributors are their own.

Popular on DZone

  • How Chat GPT-3 Changed the Life of Young DevOps Engineers
  • File Uploads for the Web (2): Upload Files With JavaScript
  • Fixing Bottlenecks in Your Microservices App Flows
  • Best Navicat Alternative for Windows

Comments

Partner Resources

X

ABOUT US

  • About DZone
  • Send feedback
  • Careers
  • Sitemap

ADVERTISE

  • Advertise with DZone

CONTRIBUTE ON DZONE

  • Article Submission Guidelines
  • Become a Contributor
  • Visit the Writers' Zone

LEGAL

  • Terms of Service
  • Privacy Policy

CONTACT US

  • 600 Park Offices Drive
  • Suite 300
  • Durham, NC 27709
  • support@dzone.com
  • +1 (919) 678-0300

Let's be friends: