Abstract: *Live coding and the 'what-if' paradigm* Live coding is an 'end-user programming' community of musicians and other performing artists, which has developed rather separately from the world of software engineering over the past 20 years. As a result, it has some peculiarities. In particular, improvisation is strongly promoted across the community, supported through technological developments such as pure functional reactive programming, in-code visualisation, and algorithmic approaches to pattern-making informed by heritage practices. Through this talk, I'll try to argue that this improvisatory approach offers a third paradigm in programming, combining the 'what' of declarative programming, and the 'how' of imperative programming, to offer an alternative: 'what if?' I'll try to sketch out the difference, why it's needed, and how we might support its development. In the end, the question is how such a formal, explicit approach to notation as computer programming can help us explore what we know, but can't explain.