Our journey through life is a pathway created through the decisions that we make.

Most non trivial decisions are costly and or impossible to revert. It is no wonder then that “undo” is a valued super power when working on complex software systems. The ability to reverse a decision completely (and without lingering side effects) in a given context is magical and godlike.

Undo makes users of a software system more confident in exploring new features and options, as “undo” always provides a lifeline.

Undo plays an important role for development teams as well. It allows their users to get unstuck when bugs are introduced in new software versions. The development team gets more time to understand and come up with a way to handle a hitherto unknown edge case.

Many software engineers imagine a front end editor when thinking about the “undo” feature; however, for back end use cases, it (undo) is encapsulated in the popular CRUD (Create, Read, Update, Delete) paradigm of restful web resources provided and managed by a given software platform.

More specifically, for hypertext protocol:

  1. POST /r1: create the resource r1
  2. PUT /r1: updates the resource r1
  3. GET /r1: fetches details on the resource r1
  4. DELETE /r1: removes the resource r1