This has been used for ages, goddammit. The question mark idea kinda stops half way. In most of languages, the question mark
is always there, implicitly. You have to add ugly code to say "this failure doesn't require bubbling up".
Go is an experiment in the exactly opposite direction: language puts pressure to really handle the error in a meaningful way every time. And if you bubble up, at least describe the situation a little bit better. Or explicitly give up and receive a penalty for that: the `return err` is nothing to be proud of, it's just a visual penalty for _lack_ of error handling.
I'm not saying it's better in every project, I'm saying it's valuable on some projects.