It's a relatively well studied area of programming pedagogy, numerous studies have shown students struggle with those concepts:
https://student.brighton.ac.uk/mod_docs/cmis/past%20papers/c...
Thank you for the link.
You wrote students, while I meant professional programmers. It's not because some people have a tougher time learning those things (whatever the reason can be) that they have no change to get them by the moment they are active professionals.
This said, if I tried to apply your grouping to the people I have been interviewing last year, I would have approximately 100% of them in one category, hence my comment.
Indeed, I haven't met any programmer who couldn't understand recursion when explained in clear terms, same goes for indirect referencing.
If I had to divide the programmers who really understand algorithmic reasoning into two categories, those would be
- A: those who program because it's their job,
- B: those who program because it's their passion.
I believe this grouping is more helpful to explain differences.