We are all born with the innate ability to count and to learn languages. Sadly, the same cannot be said for programming. What's more, neither linguistic nor math prowess seem to translate into coding skills. Similarly, just because you are an expert in C++ concurrency doesn't mean you won't have a hard time deciphering a textbook Haskell program. So what is it that makes us adept at reading, writing and reasoning about code? Crucially, can the journey on the path to become a better programmer be facilitated?
In this talk we will try to answer this question by exploring the cognitive processes involved in reading, producing and reasoning about code. We will discuss the role of short- and long-term memory, and introduce terms such as cognitive load, beacons and chunks. Enriched with live experiments and illustrated with examples in C++, we will see how these concepts interplay with our programming abilities. Finally, we will discuss how we can use this knowledge to write better code, grow as programmers, facilitate collaboration between developers of different levels, or improve the onboarding of new team members.
I'm a computer engineer and a passionate teacher with over 25 years of programming experience. I have co-evolved together with various languages including Basic, Turbo Pascal and 8051 assembly to finally settle in the land of C++ (with occasional visits to Python, C# and a few others). I teach at a university of applied sciences in the Netherlands, where I try to convert new generations of programmers to use modern C++. My professional interests focus on the design and evolution of programming languages and paradigms. In my spare time I read, climb, hike, cycle or write code.