Remix.run Logo
ndr 7 days ago

Not even before the first line ends you get "They’re clearly written by amateurs".

This is a rage bait, not worth the read.

btilly 7 days ago | parent | next [-]

The reasons for that line get at a fundamental tension. As David Wheeler famously said, "All problems in computer science can be solved by another level of indirection, except for the problem of too many indirections."

Over time we accumulate cleverer and cleverer abstractions. And any abstraction that we've internalized, we stop seeing. It just becomes how we want to do things, and we have no sense of what cost we are imposing with others. Because all abstractions leak. And all abstractions pose a barrier for the maintenance programmer.

All of which leads to the problem that Brian Kernighan warned about with, "Everyone knows that debugging is twice as hard as writing a program in the first place. So if you’re as clever as you can be when you write it, how will you ever debug it?" Except that the person who will have to debug it is probably a maintenance programmer who doesn't know your abstractions.

One of the key pieces of wisdom that show through Google's approaches is that our industry's tendency towards abstraction is toxic. As much as any particular abstraction is powerful, allowing too many becomes its own problem. This is why, for example, Go was designed to strongly discourage over-abstraction.

Protobufs do exactly what it says on the tin. As long as you are using them in the straightforward way which they are intended for, they work great. All of his complaints boil down to, "I tried to do some meta-manipulation to generate new abstractions, and the design said I couldn't."

That isn't the result of them being written by amateurs. That's the result of them being written to incorporate a piece of engineering wisdom that most programmers think that they are smart enough to ignore. (My past self was definitely one of those programmers.)

Can the technology be abused? Do people do stupid things with them? Are there things that you might want to do that you can't? Absolutely. But if you KISS, they work great. And the more you keep it simple, the better they work. I consider that an incentive towards creating better engineered designs.

b_e_n_t_o_n 6 days ago | parent [-]

I think you nailed it. So many complaints about Go for example basically come down to "it didn't let me create X abstraction" and that's basically the point.

jilles 7 days ago | parent | prev | next [-]

The best way to get your point across is by starting with ad-hominem attacks to assert your superior intelligence.

instig007 6 days ago | parent | next [-]

Yeah, let's pretend that type algebra doesn't exist, and even if it does exist then it's not useful and definitely isn't practical in data protocols. Let's believe that the authors of protobuf considered everything, and since they aren't amateurs (by the virtue of having worked on protobuf at Google, presumably), every elaborated opinion that draws them as amateurs at applying type algebra in data protocol designs is a personal ad-hominem attack.

tptacek 6 days ago | parent [-]

They're not amateurs by virtue of being some of the most senior engineers ever to work at Google. You don't get to play the "ad hominem" card while calling them names. This whole thread is embarrassing.

instig007 4 days ago | parent | next [-]

Ok, "some of the most senior engineers ever to work at Google" don't seem to know that static bounds checking don't require dependent types: https://news.ycombinator.com/item?id=45150008

> You don't get to play the "ad hominem" card while calling them names

The entire article explains it at length why there's the impression, it's not ad-hominem.

tptacek 4 days ago | parent [-]

Previous threads on this story have spelled out specifically which Googlers were behind this design, and, again, it's embarrassing that anybody is trying to defend the hill of "protobuf's designers were amateurs". You can keep digging in if you want.

b_e_n_t_o_n 6 days ago | parent | prev [-]

[flagged]

tshaddox 7 days ago | parent | prev | next [-]

IMO it's a pretty reasonable claim about experience level, not intelligence, and isn't at all an ad hominem attack because it's referring directly to the fundamental design choices of protocol buffers and thus is not at all a fallacy of irrelevance.

compiler-guy 6 days ago | parent [-]

Whatever else Jeff Dean and Sanjay Ghemawat are, and whatever mistakes they made in designing protobufs, they are not amateurs.

Not long after they designed and implemented protobuffers, they shared the ACM prize in computing, as well as many other similar honors. And the honors keep stacking up.

None of this means that protobufs are perfect (or even good), but it does mean they weren't amateurs when they did it.

https://en.wikipedia.org/wiki/Jeff_Dean

https://en.wikipedia.org/wiki/Sanjay_Ghemawat

notmyjob 7 days ago | parent | prev | next [-]

I disagree, unless you are in the majority.

perching_aix 7 days ago | parent | prev [-]

Is this in reference to the blogpost, the comment above, or your own comment? Cause it honestly works for all of them.

sieabahlpark 6 days ago | parent [-]

[dead]

BugsJustFindMe 7 days ago | parent | prev | next [-]

If only the article offered both detailed analyses of the problems and also solutions. Wait, it does! You should try reading it.

pphysch 7 days ago | parent | next [-]

Where's the download link for the solution? I must have missed it.

kiitos 6 days ago | parent | prev [-]

it does not

jeffbee 7 days ago | parent | prev | next [-]

Yep, the article opens with a Hall of Fame-grade compound fallacy: a strawman refutation of a hypothetical ad hominem that nobody has argued.

You can kinda see how this author got bounced out of several major tech firms in one year or less, each, according to their linkedin.

omnicognate 7 days ago | parent [-]

It's a terrible attitude and I agree that sort of thing shouldn't be (and generally isn't) tolerated for long in a professional environment.

That said the article is full of technical detail and voices several serious shortcomings of protobuf that I've encountered myself, along with suggestions as to how it could be done better. It's a shame it comes packaged with unwarranted personal attacks.

TZubiri 6 days ago | parent | prev | next [-]

> if (m_foo = null)

Imagine calling google amateurs, and then the only code you write has a first year student error in failing to distinguish assignment from comparision operator.

There's a class of rant on the internet where programmers complain about increasingly foundational tech instead of admitting skill issues. If you go far deep into that hole, you end up rewriting the kernel in Rust.

6 days ago | parent | prev | next [-]
[deleted]
awalsh128 6 days ago | parent | prev | next [-]

Yeah, there is a lot of snark in the article which undermines their argument.

IncreasePosts 7 days ago | parent | prev [-]

It's written by amateurs, but solves problems that only Google(one of the biggest/most advanced tech companies in the world) has.