News for hackers. Stuff that matters.
Re:Ask HN: What Have You Learned at Google as a Software Eng... by jeremysalwen on Sunday September 08, 2019 @01:04PM (#20911735)
Everybody comments about how there are all these amazing tools that help your productivity (which is true), but they don't talk about how the opposing force of organizational complexity ultimately results in "just normal" levels of productivity.

They don't cancel each other out exactly though, so some things are way easier (spinning up a huge computation), while some things are way harder (making a small change to shared components).

Re:Ask HN: What Have You Learned at Google as a Software Eng... by bt848 on Sunday September 08, 2019 @01:21PM (#20911877)
Absolutely disagree, to the maximum possible extent. My entire job at Google was to find and fix inefficiency in other people’s projects. I didn’t own any projects! But I submitted changes to foreign code daily and I rarely got any kind of pushback.

Working on shared code is so easy at Google because they have a fantastic cross-referenced code browser and search engine, ways to inspect production jobs and configs that anyone can access, and everything is open and visible.

By contrast the other large publicly-traded cloud company where I now work has the opposite culture: no code search worth using, “why are you touching my project?” culture, not enough tests to give anyone confidence in a change. The polar opposite of Google.

Re:Ask HN: What Have You Learned at Google as a Software Eng... by jeremysalwen on Sunday September 08, 2019 @02:25PM (#20912344)
Hmm, I think you interpreted my comment about "making a small change to shared components" differently than I meant it.

I am guessing that your changes did not change the semantic behavior of other people's code. e.g. you were replacing one hash-map implementation with a more efficient one. That's something where obviously Google's tools do cancel out the inherent inefficiency of large organizations/code bases.

My point was that Google has the level of efficiency of a small organization, despite being a large organization. That the default for big organizations is to "just suck" as you described, makes this remarkable, but I never felt like this resulted in a superhuman level of productivity that you might expect considering how advanced the tools are.

Re:Ask HN: What Have You Learned at Google as a Software Eng... by BeetleB on Sunday September 08, 2019 @02:15PM (#20912274)
>My entire job at Google was to find and fix inefficiency in other people’s projects.

I believe when he said "organizational efficiency" he was not referring to technical inefficiencies, but rather chain of command, how organizations are structured, etc.

Not at Google, but that is the case in my company as well. In most of the company, doing extremely great technical work is not going to get you far.

Re:Ask HN: What Have You Learned at Google as a Software Eng... by tedmiston on Sunday September 08, 2019 @01:24PM (#20911893)
I thought the monorepo setup made cross-project dependency changes easy?
Re:Ask HN: What Have You Learned at Google as a Software Eng... by skybrian on Sunday September 08, 2019 @02:06PM (#20912202)
Well, it depends. If you have an API with only a few direct usages, you might do it in a single commit. Changing API's that have many usages is difficult to do atomically even if you have a monorepo, due to the difficulty of getting approvals and the risk you'll have to roll it back.

Often it's better to introduce a new function and migrate usages to it across multiple commits.

Either way, it's on you to fix everyone else's code, which is a different mindset from releasing a library and letting downstream users do the migration themselves when they feel like it.

Re:Ask HN: What Have You Learned at Google as a Software Eng... by mav3rick on Sunday September 08, 2019 @02:13PM (#20912255)
In Chrome, more often than not it happens in one big commit.
Re:Ask HN: What Have You Learned at Google as a Software Eng... by skybrian on Sunday September 08, 2019 @02:24PM (#20912342)
That's a single project (though a large one). I'm thinking of lower layers where there are many downstream projects.
Re:Ask HN: What Have You Learned at Google as a Software Eng... by Moto7451 on Sunday September 08, 2019 @01:59PM (#20912142)
Not a googler, but at my company this has not been the case. We use several programming languages and some of the people driven choices (rather than technical necessities) have lead to all the languages being twisted into an odd hybrid of the dependency management style of each other. Things are very complicated to manage and some teams are trying to leave their current and best known language for a language with internal champions/leaders that are louder, more opinionated, and better positioned politically. A lot of this is due to a lack of wide familiarity with intermediate git skills and a fear of learning the tool. So many of our solutions to this problem are to automate things under the rug, which is why every language ends up being handled generically using medium grade internal tooling instead of best of class industry standard tooling. Most of these issues can be boiled down to an avoidance of pain rather than a championing of the best technical choice.

Ultimately no decrease in dependencies have been made. Projects are barely bundled together any more than before. The only thing that’s made that possible has been Docker and Docker Compose, and our monorepo strategy makes it more difficult to build images due to its size and our topical file systen layout making it almost impossible to check out only the parts of the repo you need.

The monorepo itself may be a good idea but it’s no silver bullet. I’d say it’s one of the worst choices we’ve made due to the cultural impact it’s had. In our case I think we’d be better off with small monolithic repos due to a lack of proper training around how to manage either many small repos or a large monorepo.

Re:Ask HN: What Have You Learned at Google as a Software Eng... by hoophoop on Sunday September 08, 2019 @02:36PM (#20912420)
Not at all. Monorepo is merely a detail around VCS and it does not remove complexity and the need for versioning.
Re:Ask HN: What Have You Learned at Google as a Software Eng... by tedmiston on Sunday September 08, 2019 @03:24PM (#20912767)
Yes, and because you can atomically update an internally breaking API change across all consumer projects in the same commit as the change itself, the monorepo setup is touted as reducing complexity where this change would otherwise be non-atomic across many repos.

https://danluu.com/monorepo/