In this video the speaker demoed the pros of KWArgs.
In the pic, upper code is obviously more clear.
So when should you use it? I think, when it's hard to identify the params you should use KWArgs.
The usage is simple:
def foo(bar:, baz:) end foo(bar: 1, baz: 2)
Do you think so?