Generality creep

Andrei Alexandrescu SeeWebsiteForEmail at erdani.org
Fri Mar 29 16:26:06 UTC 2019


On 3/29/19 11:12 AM, FeepingCreature wrote:
> On Friday, 29 March 2019 at 13:57:57 UTC, Andrei Alexandrescu wrote:
>> Here, my reviews were more often than not met with hostility.
>>
>> As a pattern, a reviewer would be more willing to write the code once 
>> and then defend it in its current state, rather than improve it 
>> through review. In a few extreme cases, people flat out told me 
>> they'll abandon the PR if I don't take it as it is.
> 
> Where I work, we're trying our best to do design reviews before starting 
> large implementations and to seek reviewer feedback throughout the 
> process. We do this because it seems clear that after the code is 
> already written and after several days' to weeks' worth of effort has 
> gone into a feature, the cost to making fundamental design changes is as 
> great as it's going to get, and developer attachment to the existing 
> code as well as frustration with the reviewer is high, especially when 
> the reviewer asks for fundamental design changes.

There are few more productive moments at Facebook than those when five 
solid engineers get in a room and pound out a design.

Keywords being "five", "solid", and "room". The moral equivalent for us 
would be a virtual room - a forum or a discussion around a github pull 
request. The problem is access and numbers.

Consider a Gedankenexperiment whereby Facebook opened a room to the 
public, capacity 12, and offered it to any passer-by willing to discuss 
design with a couple of Facebook engineers.

Now, one of two things may happen. One is, the notion is very successful 
and people would clamor to get into the room. Natural dynamics would 
lead to some form of selection at the door that would allow only the 
best of the best enter.

Another is, the notion is only mildly intriguing. So there's a few folks 
inside, and nobody waiting outside. People come and go because they 
don't see a huge emulation at the door creating incentive to prove their 
worth inside. Now there would be competition, but just against the two 
Facebook engineers who are perceived as the benchmark against which 
everyone needs to compare. (Remember, nobody is at the door to put 
pressure.) Anyone can enter and stay for any period of time, and their 
voice will be as loud as anyone else's in the room.  So they'd want to 
outdo the Facebook engineers, and if they riposte, anyone can throw 
their hands in the air and leave.

Look at what happens in Rust. People get over each other to add quality 
to the language, because if they don't, the next guy has a better 
proposal, idea, or code. There's a crowd at the door, putting pressure 
on the folks within. Folks don't go around telling Niko Matsakis he's a 
chowderhead who could learn a thing or two.

It's most interesting what happens with Walter. He is one of the best 
hackers (in the Paul Graham sense) I've ever known, and that says a lot; 
I know quite a few, and I could also hack my way out of a paper bag. 
Walter is literally the guy who could write a line of code where most 
others would need one hundred. Yet he is hardly revered in our 
community, and his views on doing software are routinely debated and 
often derided. His inability to debate is part of it (he's a hacker, not 
a politician), but I think the lion's share goes to the "Facebook room" 
thought experiment above. Not enough people at the door.

> And this, to pivot to another debate we had recently, is exactly why 
> it's a counterproductive approach to do DIP reviews only at the end.

Yes, that would be helpful. One problem we have there is proposals that 
cannot be improved via review.

Years ago, I had the hots for a girl so I did what many silly guys do - 
I friended her. She confessed she had aspirations for writing. Being 
likely inclined as well and wanting to please, I enthusiastically 
proffered interest in her endeavor. So she gave me a manuscript to read.

It was... bad. Not just bad, fractally bad - from the overall arc down 
to grammar and punctuation. Wanting to say something nice about it, I 
went for advice to my uncle, a published author (his obituary is online 
- Nicuta Tanase). He said, kid, just mention a couple of things that are 
objective and would improve things.

And so I did, not realizing I was creating a larger problem for myself. 
Because a week later, she came with another draft in hand, saying: "I 
fixed it! Now it's good for publishing... right?"

Needless to say, that didn't go well for my dating life.


More information about the Digitalmars-d mailing list