Você não precisa necessariamente escolher entre os dois paradigmas. Você pode escrever software com uma arquitetura OO usando muitos conceitos funcionais. FP e OOP são ortogonais por natureza .
Tome, por exemplo, C #. Você poderia dizer que é principalmente OOP, mas existem muitos conceitos e construções de FP. Se você considerar o Linq , as construções mais importantes que permitem a existência do Linq são funcionais por natureza: expressões lambda .
Outro exemplo, F #. Você poderia dizer que é principalmente FP, mas existem muitos conceitos e construções de OOP disponíveis. Você pode definir classes, classes abstratas, interfaces, lidar com herança. Você pode até usar a mutabilidade quando isso torna seu código mais claro ou quando aumenta drasticamente o desempenho.
Muitas línguas modernas são multiparadigma.
Leituras recomendadas
Como estou no mesmo barco (experiência OOP, aprendendo FP), sugiro algumas leituras que realmente apreciei: