Explore the paradigm shift from imperative to declarative programming in this thought-provoking ACCU 2016 conference talk by Kevlin Henney. Delve into the contrasts between traditional imperative coding styles and the declarative approach, examining concepts like functional programming, mark-up languages, schemas, and persistent data structures. Learn how to apply declarative thinking to various aspects of software development, from requirements gathering to code implementation and testing. Discover practical lessons, habits, and techniques that can be applied in mainstream programming languages to improve code quality and reasoning. The talk covers topics such as 'Make' as a declarative language, the FizzBuzz problem, table-driven solutions, collection pipelines, and the relationship between concurrency and pre/post conditions, providing a comprehensive overview of declarative practices in modern software development.