Recently, we had the privilege of welcoming the esteemed John Ousterhout, Professor of Computer Science at Stanford University, at an exciting AUK Talks session titled “Can Great Programmers Be Taught?”
During this insightful talk, John shared principles from his book “The Philosophy of Software Design” that are extremely important for the IT industry. He emphasized the importance of a general-purpose approach over a special-purpose approach, urging developers to "avoid specialization as much as you can." By minimizing the number of special cases in your code, you can achieve cleaner and simpler outcomes.

John also discussed the difference between tactical and strategic programming as two mindsets you can potentially have when coding. He pointed out that many startups in Silicon Valley prioritize speed over design, often resulting in messy codebases that are difficult to manage. He referenced Facebook’s early motto, "move quickly and break things," which ultimately led to a chaotic code environment. Facebook later revised this to "move quickly with solid infrastructure," recognizing the need for a balance between speed and quality. In contrast, companies like Google and VMware, which fostered strong design cultures, attracted top engineering talent and achieved remarkable success.

John highlighted that code has to work, but working code is not enough. Instead, strategic programming focuses on creating great designs that simplify future development and minimize complexity.
"At American University Kyiv, while building the Software Engineering & AI program, we integrate the strongest ideas from both industry and academia. John’s principles resonate deeply with this mission. His work reflects exactly the kind of intersection – rigorous, practical, and thoughtful – that we aim to bring into our curriculum and into modern software engineering education”, stressed Sergiy Tytenko, Deputy Dean at Epam School of Digital Technologies and Associate Professor at AUK, who moderated the AUK Talks.
We are incredibly grateful to John Ousterhout for this inspiring and thought-provoking talk, which deepens our understanding of fundamental design principles in software engineering!
We highly recommend reading his book, “A Philosophy of Software Design,” which explores the principles of software design, complexity management, and maintainability. You can find it here.
To watch and listen to the AUK Talks “Can Great Programmers Be Taught?” click here.