- Functional programming makes your code observable, maintainable, and accessible by default. - capturing inputs and outputs as function state allows you to test without mocks - track the entire input state in your logs - testing front end components like you are a screen reader