I just remembered a story that shows how screwed up Twitter’s engineering culture was when I worked there:
Twitter famously was one of the biggest Ruby On Rails apps in the world. Eventually they had to go to a service-oriented architecture to handle the traffic.
Twitter picked Scala for its implementation language and ended up being a huge influence on the language and library ecosystem. Even data science stuff was written in Scala.
So far, so good. Everyone’s using scala, common libraries, a common RPC framework...
Then Go 1.x is released.
Then Go 1.x is released.
Some team “somewhere”, I can’t even remember who, started building and deploying programs in Go even though it wasn’t in the “accepted tools” list.
They were asked to stop several times. They “did” for a while, and then they’d deploy Go binaries again.
They were asked to stop several times. They “did” for a while, and then they’d deploy Go binaries again.
The dysfunction was so bad that the team’s manager couldn’t get them to stop, the eng leadership didn’t care to get involved ...
Eventually an ops team wrote and deployed a “Go killer” on every node that looked for and terminated Go programs.
And so the cat and mouse game begins. Hundreds and hundreds of wasted hours because the culture was broken and management was inept.
Imagine how policy decisions were made .......