Working on complex systems: What I learned working at Google

0xKelsey | 98 points

One of my pet peeves with the usage of complex(ity) out of the traditional time/space in computer science is that most of the time the OPs of several articles over the internet do not make the distinction between boundaried/arbitrary complexity, where most of the time the person has most of the control of what is being implemented, and domain/accidental/environmental complexity, which is wide open and carries a lot of intrinsic and most of the time unsolvable constraints.

Yes, they are Google; yes, they have a great pool of talent around; yes, they do a lot of hard stuff; but most of the time when I read those articles, I miss those kinds of distinctions.

Not lowballing the guys at Google, they do amazing stuff, but in some domains of domain/accidental/environmental complexity (e.g. sea logistics, manufacturing, industry, etc.) where most of the time you do not have the data, I believe that they are way more complex/harder than most of the problems that the ones that they deal with.

braza | 5 hours ago

> My immediate reaction in my head was: "This is impossible". But then, a teammate said: "But we're Google, we should be able to manage it!".

Google, where the impossible stuff is reduced to merely hard, and the easy stuff is raised to hard.

dmoy | 6 hours ago

There is a certain amount of irony when the cookie policy agreement is buggy on a story about complicated & complex systems.

Clicking on "Only Necessary" causes the cookie policy agreement to reappear.

RenThraysk | an hour ago

The cookie banner reappears indefinitely on this website when I click 'only necessary' lol.

Pavilion2095 | 2 hours ago

I think there are two myths applicable here. Probably more.

One myth is that complex systems are inherently bad. Armed forces are incredibly complex. That's why it can take 10 or more rear echelon staff to support one fighting soldier. Supply chain logistics and materiel is complex. Middle ages wars stopped when gunpowder supplies ran out.

Another myth is that simple systems are always better and remain simple. They can be, yes. After all, DNA exists. But some beautiful things demand complexity built up from simple things. We still don't entirely understand how DNA and environment combine. Much is hidden in this simple system.

I do believe one programming language might be a rational simplification. If you exclude all the DSL which people implement to tune it.

ggm | 5 hours ago

Mostly overlapping definition of what a 'complex system' is with :

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

although I understood the key part of a system being complex (as opposed to complicated) is having a large number of types of interaction. So a system with a large number of parts is not enough, those parts have to interact in a number of different ways for the system to exhibit emergent effects.

Something like that. I remember reading a lot of books about this kind of thing a while ago :)

gilleain | 5 hours ago

I think you are using hysteresis when actually meaning more general path-dependency.

polotics | 4 hours ago

Interesting, Thanks to the writer.

However, all this amazing stuff in the service of .. posting ads ?

CommenterPerson | 2 hours ago

Let's add a post scriptum:

Whatever you're working on, your project is not likely to be at Google's scale and very unlikely to be a "complex system".

nottorp | 6 hours ago

  "This is one possible characteristic of complex systems: they behave in ways that can hardly be predicted just by looking at their parts, making them harder to debug and manage."
To be honest this doesn't sound too different from many smaller and medium sized internetprojects i've worked on, because of the asynchronous nature of the web, with promises, timing issues and race conditions leading to weirdness that's pretty hard to debug because you have to "playback" with the cascading randomness of request timing, responses, encoding, browser/server shenanigans etc.
kossTKR | 6 hours ago

[dead]

Zoethink | 5 hours ago