Reminds me of the SICP lecture[0] where Hal Abelson introduces the concept of linguistic abstraction (or Stratified Design[1]) as an alternative to the approach of decomposing a program into a tree of well-specified sub-components/tasks, which ultimately fails to capture the essence of the problem being solved.