My experiences with ROS have mostly been klunky. The documentation is really sub par, the Python portions completely highjack the logging module, and (if my memory serves me) the messages types aren't backwards compatible like other IDLs and so it can be a maintenance nightmare. I also felt like it was too easy to outgrow, like when wanting to communicate using something other than ROS messages, or upgrading the codebase to a C++ version that ROS noetic doesn't support.