Functional programming (FP) is going mainstream. First seen as a better approach for concurrency, we are finding that FP has pervasive benefits, often supplanting OOP for many purposes. This talk explores how FP aligns with, but also changes developer principles and practices. 1. FP emphasizes mathematical rigor and rich types, which change TDD. 2. Capturing your domain model in code has serious drawbacks. 3. *Pure* functions and immutable data structures are more modular and reusable than objects. 4. FP introduces new "design patterns". 5. *But*, FP can be hard to master.