AI-powered
podcast player
Listen to all your favourite podcasts with AI-powered features
Programming is not just about producing code or documentation, but about building a theory of how programs work. This theory helps programmers understand the relationship between the program and the real-world problems it addresses. It also allows them to explain why each part of the program is what it is and how it relates to alternatives. Furthermore, having a theory of programming enables programmers to respond constructively to demands for program modification and adapt the program to new situations. By adopting a theory-building view, programmers can avoid the problems and costs associated with program modification and ensure the long-term success of their software.
Programmers with a theory of programming can explain how the solution their program embodies relates to the real-world problems it addresses. They can identify the mapping between program elements and real-world factors, enabling a better understanding of why each part of the program is what it is. This understanding is crucial for effective program modification and adaptation, as it helps programmers identify the relevance and impact of proposed changes. Having a deep understanding of how their program interacts with the world allows programmers to make informed decisions and avoid costly mistakes.
Having a theory of programming empowers programmers to explain their choices in the context of alternative approaches and underlying principles. Programmers can compare different options and articulate why certain decisions were made, based on a deep understanding of the program's architecture and objectives. This enables effective program modification as programmers can assess whether proposed changes align with the existing theory or require adjustments to maintain coherence and efficiency. By embracing the theory-building view, programmers can enhance their decision-making process, reducing the likelihood of introducing unnecessary complexity or inconsistencies.
Programmers who possess a theory of programming are better equipped to respond constructively to evolving demands for program modification. They can leverage their understanding of the program's theory to identify the necessary changes and adapt the program to new circumstances. This ability to modify programs efficiently is crucial in a dynamic software landscape where updates and enhancements are frequent. By adopting a theory-building view, programmers ensure that their programs remain relevant and effective, protecting them from becoming obsolete or losing their effectiveness due to changing real-world needs.
This podcast episode highlights the significance of theory in software development. The speaker emphasizes how theories play a crucial role in the success of operating systems and software teams. With the absence of those who hold a strong theory about the system, attempts to fix long-standing issues often fail or result in additional problems. The speaker reflects on the challenges faced by macOS, such as attempting to fix Apple's music app, which seems to break in different ways each year. The speaker expresses hope that adopting a focus on quality and theory building, similar to the Suckless movement, could address the problem of software rot and encourage clean and maintainable implementations.
The podcast delves into the metaphor of program life, death, and revival, exploring how a program can become dead when modifications are no longer intelligently answerable. The speaker relates this to personal experiences of not being able to provide intelligent answers about changing legacy programs. The podcast acknowledges the challenges in reviving programs, such as the need for a new programmer team to rebuild the theory and the inherent discrepancies that may arise. Furthermore, the podcast suggests that once the theory and the people who possess it are gone, reviving the program becomes a challenging task, raising the possibility of throwing it away and starting from scratch. The speaker also discusses the limitations of artificial intelligence and automation tools in fully understanding theory and the importance of person-to-person transmission.
The podcast explores the implications of the theory-building view for the future of coding. It highlights the importance of human-centric programming practices and tools that can support theory building and understanding programs in relation to real-world problems. The podcast suggests that future coding tools should consider fostering person-to-person transmission of theory, improving learnability, and providing mechanisms for explaining why certain decisions were made or modifications were done. It also emphasizes the significance of cultural norms and practices, such as writing code histories and understanding the external factors that shape program development. Ultimately, the podcast encourages a reorientation in programming practices, focusing on the programmer as a human and acknowledging the challenges of tooling and providing meaningful solutions within this context.
This is Jimmy’s favourite paper! Here’s a copy someone posted on HitBug. Is it as good as the original? Likely not! Ivan also enjoyed this Theory Building business immensely; don’t be fooled by the liberal use of the “blonk” censor-tone to cover the galleon-hold of swearwords he let slip, those mostly pertain to the Ryle.
For the next episode, we’re reading No Silver Bullet by Fred Brooks.
The Witness, again!
The Generation Ship Model of Software Development
The philosophy of suckless.org
Stop Writing Dead Programs, a talk by Jack Rusher, gets a whole new meaning!
Someone rewrote Super Mario 64’s code to run faster and better on original N64 hardware.
Music featured in this episode:
Hey listener! Send us questions so we can answer them on the show. Like, “How do you turn your worms?” Or, “What’s so great about prepromorphisms anyway?” We’ll answer them, honest! Send them here:
futureofcoding.org/episodes/061
Support us on Patreon: https://www.patreon.com/futureofcoding
See omnystudio.com/listener for privacy information.
Listen to all your favourite podcasts with AI-powered features
Listen to the best highlights from the podcasts you love and dive into the full episode
Hear something you like? Tap your headphones to save it with AI-generated key takeaways
Send highlights to Twitter, WhatsApp or export them to Notion, Readwise & more
Listen to all your favourite podcasts with AI-powered features
Listen to the best highlights from the podcasts you love and dive into the full episode