For devs: When can I start teaching in abstracts?
Photo by Efe Kurnaz / Unsplash

For devs: When can I start teaching in abstracts?

webs
webs

My tech folks interested in learning & mentoring, this one's for you. A while back someone tweeted asking, “when do we introduce abstracts?” I explained a bit

Tackling the Abstract for Devs : 1
I was tagged in the tweet below and for good reason. I have feelings on the topic of learning how to software develop... Plugging my friend @weberswords who has great advice on the subject https://t.co/gLL6q8OJKb — Valerie Roske (@enginerdlinger) July 18, 2020 Full disclosure for those who

but now I have research to back it up.

In the article in Educational Psychology Review vol. 10, "Cognitive Architecture and Instructional Design," Sweller, van Merrienboer, & Paas (1998) examine the difference between novice & grandmaster chess players. When asked to re-create board configurations from previous games, chess grandmasters were able to do that easily. However, when asked to re-create random board configurations, chess grandmasters were no better at re-creating the configurations than novice players.

The reason the grandmasters could recreate previously experienced boards is because they were drawing from long term memory, not trying to reason abstractly like novices have to do because they are missing the experiences of playing thousands of games. The authors go on to say that "humans are particularly poor at complex reasoning unless most of the elements with which we reason have previously been stored in long-term memory". Therefore, "instructional designs that require learners to engage in complex reasoning processes involving combinations of unfamiliar elements are likely to be deficient." That's why when a new developer encounters lots of abstracts it's incredibly challenging & frustrating. They need concrete experiences to start from so that they can pull from those concrete experiences in order to understand the abstract.

What implications does this have?

Concepts like archetypes or patterns mean nothing if the dev hasn’t encountered examples. To build knowledge & confidence, when you’re working on something e.g. microservice point out “this uses the saga pattern to maintain data consistency.” Eventually the abstract concepts will be connected to concrete examples & the ability to process multiple abstract concepts will grow.