Do we know what we think we do?
Karl Popper is among the 20th century’s most important philosophers, and his work on epistemology (the study of knowledge) and the theory of science provide deep insights into the problem solving that is at the heart of our work as software teams.
This talk is about the epistemology of Karl Popper and his theories about problem solving and knowledge creation, and how these topics apply to the creation of software. We’ll cover a bit of the theory and then look at how software teams use these ideas in practice, and how a deeper understanding of the theory can help to improve our products and the world.
Outline/Structure of the Talk
Problem solving is a process of knowledge creation. It focuses on creating knowledge that has explanatory power - knowledge that allows us to understand a given domain and communicate that understanding to others. When it’s working well, this is an evolutionary process in which ideas are subjected to criticism and compete for survival, as ideas are replaced by new ones with greater fitness. This process not only helps us to create better software, but is how we move towards a better future for everyone.
The branch of philosophy that deals with knowledge and how knowledge is created is called epistemology. This talk is about the epistemology of Karl Popper and his theories about problem solving and knowledge creation, and how these topics may be applied to software engineering.
- Popper's Critical Rationalism
- Some examples of theories that were
truefor hundreds of years (e.g. Newton's law of universal gravitation) until other theories were found to be
more true(Einstein's general theory of relativity)
Every time we engage in critical enquiry we are helping to evolve our ideas, but it can be hard to see one's beliefs subjected to criticism. However, it is precisely this process that drives this process of evolution that results in the growth of knowledge and better explanations. So, what can we do to help people to feel comfortable to engage in this?
- How to support openness to critical enquiry and a healthy culture of criticism
When we engage in hypothesis-driven development, AB testing, and minimum viable features, we are working to make our work falsifiable and to test our knowledge and theories against reality. When we seek to refine and refactor our designs to capture that elusive sense of rightness, or “seems true” (verisimilitude) we are engaging in processes that Popper placed at the centre of epistemology and the theory of science.
We will look at some of the ways that we can support this.
- Psychological safety: Everyone feels safe to bring ideas, and to challenge them with critical enquiry
- Open-mindedness: All ideas are welcome
- Falsifiability: Falsifiable assertions are tested, and the successful ones embraced
- Visibility: Information flows in all directions
- Authority is used to get things done, not to simply end discussion
- Proven assertions from the past are accepted until more effective new assertions replace them
- The new is shipped on a regular basis
- Alternative methods are not seen as disloyal
- It’s okay to take risks
- Mistakes are embraced when they lead to progress or simply encourage assertion making
Understand that knowledge is something that can be studied and understood, and that this understanding can help our work. Gain an awareness of things we can do to help people feel comfortable to engage in critical enquiry, and of the ways that our culture can help or hinder the growth of knowledge.
Software leaders, product people, developers and anyone interested in problem solving