Algorithms and Refutations
blog comments powered by Disqus
Programmers spend a lot of time inventing, using, and fighting with abstractions. We give a lot of thought to the technical mechanics of how we make them (OOP! metaprogramming! your tool here!), but don't often pause to consider //what// abstractions are, how they //evolve//, and //why// they do or don't work.
The late philosopher Imre Lakatos examined these questions in the realm of mathematics, and came to some surprising and profound conclusions, puncturing many widely held presumptions about what math is. His conclusions translate directly into software: they have implications for topics as diverse as API design, requirements gathering, unit testing, the design of whole languages, and the names of individual variables. The same bad presumptions Lakatos uncovered in mathematics help explain the failures of many development methodologies old and new, and provide an answer to the age-old question of why software never seems to be //done.//
Come join in this interactive and opinionated talk on why you should change your fundamental assumptions about how software happens.