- Functional programming makes your code observable, maintainable, and accessible by default. - makes it easier to learn what a part of the code does because it doesn't depend on external context that can mutate local state - 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 makes them more accessible