As software engineers we are always trying to be more productive, to deliver better code, and to have a faster development feedback. In this talk, we’ll explore how functional programming, tests and hexagonal architecture can perform great together in order to support a maintainable codebase for hundreds of engineers and services. Diving deeper on how we can levarage hexagonal architecture with dependency rejection in order to decouple decisions from effects, resulting in a code that is easier to reason, compose and test. The codebase is not the only one that take advantages from that, but also the developers. It helps everyone feels more comfortable and engaged about maintaining good practices. This is already proven to work really well at Nubank, which is considered the best bank in Brazil according to Forbes.