Design Principles Behind Smalltalk

The purpose of the Smalltalk project is to provide computer support for the creative spirit in everyone. Our work flows from a vision that includes a creative individual and the best computing hardware available. We have chosen to concentrate on two principle areas of research: a language of description (programming language) that serves as an interface between the models in the human mind and those in computing hardware, and a language of interaction (user interface) that matches the human communication system to that of the computer. Our work has followed a two- to four-year cycle that can be seen to parallel the scientific method: Build an application program within the current system (make an observation) Based on that experience, redesign the language (formulate a theory) Build a new system based on the new design (make a prediction that can be tested) The Smalltalk-80 system marks our fifth time through this cycle. In this article, I present some of the general principles we have observed in the course of our work. While the presentation frequently touches on Smalltalk "motherhood", the principles themselves are more general and should prove useful in evaluating other systems and in guiding future work.

Design OOP Philosophy

Jan 2 2024

 Mental Models: The Best Way to Make Intelligent Decisions

A mental model is simply a compression of how something works. Any idea, belief, or concept can be distilled down into a workable model. While far from perfect, they are a useful way to change perspective, simplify complexity, and solve problems. Mental models help us understand the world. For example, velocity is a mental model that helps you understand that both speed and direction matter. Reciprocity is a mental model that helps you understand how going positive and going first gets the world to do most of the work for you. Margin of Safety is a mental model that helps you understand that things don’t always go as planned. Relativity is a mental model that shows us we have blind spots and how a different vantage point can change everything. The list goes on.


Nov 23 2023

 How do committees invent?

When I think about design, I more naturally think about it the other way around: how to decompose the whole into a set of parts that will work together to accomplish the system goals. But of course Conway is right that those parts do have to fit together to produce the intended whole again.

Design Philosophy

Jun 14 2023

 Engineering You • Martin Thompson

What are the characteristics of a good software engineer? It's a topic many people would argue endlessly about. This is not surprising given we are effectively living in the era of software alchemy. Some of the best programmers draw on strong scientific and engineering backgrounds and combine this with craft-like coding skills in a virtuous feedback cycle. In this talk, we explore the individual practices and techniques that can help bring out the engineer in you.

Design Philosophy Video

Sep 16 2021

 No Return: Beyond Transactions in Code and Life • Avdi Grimm

At the root of catastrophes in both code and life lies a pervasive fallacy: the attempt to model processes as if they were transactions. Join Avdi for an honest, sometimes raw retrospective on two decades of building a software development career. You’ll examine how personal philosophy impacts software design — and vice-versa. You’ll encounter the transactional fallacy and how it can hinder our attempts to build resilient systems. And you’ll explore how a narrative-oriented mindset can lead to both better code and a more joyful [...]

Philosophy Video

Jun 8 2020