Do you ever get that feeling like no matter how hard you work, you just can’t keep up?
This isn’t a problem uniquely faced by modern knowledge workers. It’s also a characteristic of certain software systems. This state — of being perpetually behind on intended work-in-progress — can fall naturally out of the data structures used to design a software system. Perhaps by learning something about these data structures, we can learn something about the nature of work itself.
Let’s start with the basics. In computer science, one of the most essential data structures is the stack. Here’s the definition from Wikipedia:
… a stack is a data type that serves as a collection of elements, with two principal operations: (1) “push”, which adds an element to the collection; and (2) “pop”, which removes the most recently added element that was not yet removed. The order in which elements come off [is known as] LIFO, [or last in, first out]. Additionally, a “peek” operation may give access to the top without modifying the stack.
From here on out, we’ll use the computer science (mathematical) function call notation,
f(), whenever we reference one of the operations supported by a given data structure. So, for example, to refer to the “push” operation described above, we’ll notate it as
I remember learning the definition of a stack in college and being a little surprised at “LIFO” behavior. That is, if you
push() three items onto a stack — 1, 2, and 3 — when you
pop() the stack, you’ll get the last item you added — in this case, 3. This means the last item, 3, is the first one
pop()‘ed off the stack. Put another way, the first item you put on the stack, 1, only gets processed once you
pop() all the other items — 3, 2 — off the stack, and then
pop() once more to (finally) remove item 1.
Practically speaking, this seems like a “frenetic” or “unfair” way to do work — you’re basically saying that the last item always gets first service, and so, if items are
push()’ed onto the stack faster than they are
pop()’ed, some items will never be serviced (like poor item 1, above).