A Small Matter of Programming says programmers start from top and code down from a high level goal.

In contrast, users tend to build from the bottom up, from experimentation, for example in spreadsheets.

It is this top down vs bottom up orientation that is challenging to develop in would-be programmers.

How can you design your system for bottom-up emergence?