

I would go for “garbage, bad and ok” where bad is acceptable. Most styles are ok, a lot of anti-patterns are bad but still get the job done but sometimes people write pure garbage. I’m very happy that at my job we just have a lot of bad code that’s workable but this one contractor wrote an absolute piece of shit. His code was a convoluted side-effect mess that was “reactive” and at around 3-5x more verbose than the “naive” solution. He made so many decisions that increased complexity and overhead that it become a rigid buggy mess.
Sometimes people just need to stick to the basics by using a database layer and a service layer on the backend and a API layer and component code on the front.








It’s a deadlock situation and can arise without any screw ups. Imagine the buses being 5x as long and all reach the intersection at the same time as an example. All have space to enter the roundabout but they’ll reach the same situation as in the picture.
To fix this people uses signals and can be done by having the buses follow “Only 1 or 2 articulated (double) buses are allowed into the roundabout at a time”. A rule like that might be required if you have a lot of articulated buses. The risk of this happening depends on how many ways you can enter a roundabout no a bus like that, how long the buses are, how frequently they run and how big the roundabout is.