C++26 for Lazy Programmers • Will Briggs & Todd Montgomery • GOTO 2026
Will Briggs and Todd L. Montgomery discuss the impact of AI on programming careers and language learning, the pedagogical approach of Briggs' book "C++26 for Lazy Programmers," and the evolving landscape of C++. They explore how AI requires deeper code fluency, Briggs' method for teaching complex C++ concepts like pointers, and his critiques of C++'s feature proliferation. The conversation concludes with a strong argument for C++'s enduring relevance as a foundational language for aspiring developers.
This interview for the GOTO Book Club features Will Briggs, author of “C++26 for Lazy Programmers,” and Todd L. Montgomery, discussing the evolving landscape of programming languages and C++ education.
AI’s Shifting Role in Software Development and Language Fluency
Briggs addresses the contemporary question of whether learning programming languages still matters with the rise of AI. He regularly tests AI tools and finds that while they can’t solve medium-difficulty problems independently, they are “genuinely useful for speeding up work he already understands.” Both Briggs and Montgomery emphasize that reading code fluently is more crucial than ever, as AI increasingly communicates through code. An inability to read or debug code effectively hinders one’s capacity to direct AI or troubleshoot its output. Montgomery notes that industry professionals echo this sentiment, stating AI helps, “but you got to know it.”
Montgomery also observes that AI-generated C++ code often appears more reliable than AI-generated Java. Briggs speculates this could be due to the quality and nature of the training corpus for C++, suggesting it might contain better examples despite being a smaller overall volume compared to Java. Regarding the future of programming languages, Briggs anticipates unpredictability, acknowledging that past innovations (modularity, internet, scripting, memory safety) were unexpected. He suggests that AI’s primary impact might be facilitating translation between existing languages (e.g., C++ to Rust) rather than creating entirely new paradigms.
Pedagogical Philosophy: Making C++ Accessible and Enjoyable
The book’s title, “C++26 for Lazy Programmers,” is a deliberate, “jokey title” designed to attract individuals who want to enjoy the learning process. Briggs, describing himself as a “hedonist,” aims to instill a love for programming, arguing that extensive practice, beyond simple exercises, is essential for becoming proficient. His approach is inspired by older Pascal textbooks that prioritized fun and engaging examples, integrating graphical aspects that contemporary technology now supports. The book intends to equip learners to tackle more advanced C++ literature.
Central to Briggs’ teaching methodology is meticulously ordering concepts to prevent beginners from being overwhelmed. He ensures that new ideas are introduced one or two at a time, building upon previously learned material. An example given is that vectors, lists, and O-notation cannot be taught simultaneously; a logical sequence is vital. He also employs a “double duty” approach, teaching related concepts together, such as operator overloading and custom string classes, to maximize learning efficiency without increasing the book’s length. Functions are identified as a common challenge for students and are broken down into two chapters, providing structured forms to guide learners.
Perhaps the most distinctive pedagogical choice is the delayed and indirect introduction of pointers. Briggs delays the explicit mention of the “dreaded P word” until around Chapter 20. Instead, he builds the underlying mental model first by explaining arrays and then dynamically allocated arrays, demonstrating “what’s going on underneath the hood.” This allows students to gain extensive practical experience with pointer concepts without the associated intimidation, acknowledging pointers as a significant source of errors in C and C++.
Critiques and Evolution of Modern C++
Briggs expresses a significant critique of modern C++, particularly concerning its evolution since C++11: “There are way too many things ways to do things.” He cites an exaggerated but illustrative example of 25 different ways to initialize a single number, highlighting the confusion this creates for beginners. He argues the language suffers from proliferation, not power, with numerous new keywords like constexpr, consteval, and constinit adding cognitive load without necessarily simplifying core tasks. Briggs advocates for fewer new ways to do old things, preferring additions that replace older, less efficient methods (like span replacing explicit array size parameters) rather than merely adding alternatives.
C++’s Enduring Relevance and Foundational Value
Despite its age and perceived complexity, Briggs passionately defends C++’s value. He references the TIOBE index, noting that C (a language from 1972) remains the second most popular language globally, with C++ typically fluctuating between second and third place. He stresses that learning C++ is an “amazingly good preparation” for picking up nearly any other language quickly. This is attributed to C++’s inherent difficulty and concept-dense nature, which forces learners to grapple with fundamental computer science principles. He shares anecdotes of alumni who, after mastering C++, were able to quickly adapt to and become proficient in languages like Java, Rust, and Go, emphasizing the foundational strength C++ provides.