Learning programming in the XXI century
How to say goodbye to "Hello, world"
With DOM, software-defined architecture, advanced build tools, StackOverflow and ultra-high-level languages, main languages are still taught (and learned) via I/O operations, simple data structures, loops and switches, and little space to development and deployment environment advances and even algorithmic changes, like asynchronous running, that completely upend the way programming language, and programming, concepts should be assimilated. In this presentation I'd like to advocate for a multi-lingual, multi-paradigm, multi-tool approach to learning programming languages and how this could eventually be carried out.
The new century has seen an explosion of new ways of learning: through MOOCs, Webinars, bootcamps and incorporation of new technologies to learning. Still, syllabus of programming languages pretty much stays the same. There is enphasis in learning a single language (front end, back end, DSL) and a progress that goes from very simple input/output operations through some simple data structures to loops and other programming structures. This works usually well and the proof is all around us; besides, the ten first programming languages are the hardest, it is downhill from there. However, it could be much easier if we acknowledged the existence of this multi-environment (console, UI, web, embedded), multi-language (many languages in a single application, from data description to UI language), multi-tool (from simple compilation tools to deployment and monitoring tools) and organized our learning experience around it. And first we should use whatever we have on hand, like command-line interfaces (some of them with powerful languages) or even the browser itself, which always include a programmer mode. Also use visual languages like Scratch to teach more complicated concepts, as long as they are put into use with languages that can run the whole nine yards. In this lightning talk I will try to outline what would be the first basic steps in a course following these principles, and why I think this would lead to faster formation of programmers and the creation of a more adaptive mindset when tackling new careers or project in programming.
|Juan Julián Merelo|