Szymon works at the Scala 3 Compiler Team at VirtusLab, Scala Center, and EPFL. He leads the Scala Toolkit project and regularly contributes to the Scala 3 compiler and Scala documentation. His interest lies in making programming languages accessible and comfortable to work with. The organizer of the Kraków Scala User Group.
This talk aims to show the cognitive perspective on the programming process and how to apply it practically when designing languages, APIs, or just writing code at one's job. I will show a cognitive model explaining how the programmer's brain works with the code. This model is based on the current research, but is also tailored to the programmer’s practical perspective. Based on this model, I will derive rules and perspectives that help design and write better code. Some of them, such as immutability in programming or Cognitive Dimensions in UX research, are already being applied in the industry. Nevertheless, I will shine a new light on them. I will also present the Scala Toolkit and how it aims to improve the Scala developers’ experience.
A regular programmer may find a new and interesting perspective on writing good functional code every day. Language designers may get a broader context on approaching the developer experience (DX) side of their job. And everyone curious about how the world around us works can learn something about the interesting, new findings in the area of the human brain in the context of programming.
Programming languages are the tools that we use to communicate with machines. Regrettably, the human side of this interaction is not as well understood as the computer's perspective. How does the brain comprehend code? Given the human cognitive model, how to determine if a library or a functional programming language is well-designed? The Scala Toolkit is an initiative by Scala Center and VirtusLab designed with these issues in mind. Its goal is to make the Scala language batteries-included and well-suited for newcomers and simple problems. In this talk, we will dive into the state of research on the neurocognitive perspective on programming. This insight helped us design the Scala Toolkit and decide its future steps. It can be surprisingly helpful and refreshing when designing new languages, building APIs, and just trying to write better code at your job. Moreover, it can deepen one's understanding of the good practices in the programming world.