  Blocks-based programming has become the lingua franca for introductory
coding. Studies have found that experience with blocks-based programming can
help beginners learn more traditional text-based languages. We explore how
blocks environments improve learnability for novices by 1) favoring recognition
over recall, 2) reducing cognitive load, and 3) preventing errors. Increased
usability of blocks programming has led to widespread adoption within
introductory programming contexts across a range of ages. Ongoing work explores
further reducing barriers to programming, supporting novice programmers in
expanding their programming skills, and transitioning to textual programming.
New blocks frameworks are making it easier to access a variety of APIs through
blocks environments, opening the doors to a greater diversity of programming
domains and supporting greater experimentation for novices and professionals
alike.
