There are now two main cultures in computing: Most computer users treat software as a tool for getting tasks done, while programmers hold conversations with their software. One big challenge when teaching programming, no matter in what language, is getting students used to a conversation-oriented programmer culture, which is very different than a tool-oriented user culture.
The Two Cultures originally referred to the schism between the sciences and humanities. However, I’ve noticed a similar schism in computing between users and programmers, which makes it hard to teach programming to beginners.
In computer user culture, each piece of software is a tool for getting something done, like a virtual notepad or paintbrush. For example, Microsoft Word is for writing reports, Excel is for managing budgets, Spotify is for listening to music, and the iPhone Camera App is for taking selfies.