I/We am/are using gRPC+protobuf on a side-project with a couple of friends (Java) but I'm finding it terribly painful to use, especially for complex objects. The builders become nigh on illegible and failing to set attributes as protocols have evolved over time has been a genuine problem.
I believe that using Kotlin for our data classes might very well mitigate a few issues (reducing boilerplate => happiness) but obviously, it won't be an end-all-be-all.
Protobuf+gRPC seems great when you have a project where there may be dozens of languages in use but that is simply not the case here.
What are you using? What's your pain level? Is Finagle nice to use outside of Scala?
I vastly prefer gRPC (Cap'n'Proto's documentation leaves a lot to be desired so it's difficult to use, gRPC comes with threading built in, Capnp does not) and aside from some performance issues, have had zero problems with it.
What kinds of objects are you having issues with? I suspect the problem isn't gRPC/protobuf so much as the code you're using to interact with it. How exactly are you using it?