Erlang doesn't require any programming effort to parse and marshal messages. You just send them and receive them.
Pid ! {hello, world}
receive
{hello, world} ->
io:format("Received hello.~n", [])
end