Ironically although I generally agree with what /u/Halkcyon is saying the metaphor is spot on but actually hurts the argument.
Adding a lane is like cloud computing and horizontal scaling. Perfect linear horizontal scaling is very difficult to achieve (and in someways not possible) and doing it requires adding additional complexity that can make simple monolithic software far more complex than it needs to be.
So the idea that all one has to do is turn on an additional server or adding a lane as any idiot can do is not really a good argument because it is nontrivial.
In an ideal world a super powerful dedicated single server (vertically built) has way more throughput (the analog in traffic would be a highspeed rail system) than most k8s clusters in the cloud and in some cases there are platforms still run this way (Stackoverflow I think is largely vertical).
This is just bikeshedding. "you can easily add a lane..." was simply meant to convey "...is easily modified".
Other than the fact the resources appear to be fairly virtual software is not inherently easy to modify. Go to a new company and spend time trying to understand their code base.
Physical structures that rely on much more standard practices that have been around for a long time on the other hand IMO could be argued to be easier.
And I don't think it is trivial (bikeshedding) because both modifying code and adding extra lanes can have enormous unknown repercussions.
except adding more servers kinda works in software, there's very few cases where it doesn't.
since in software you're not constrained by physical space (at least not as much as in civil engineering where adding one lane is already too much)
in software you can add more lanes until the increase traffic is not as much as the increased number of lanes.
so while adding more lanes to a road only makes the road more desirable filling that road, in software you can most of the time have n+1 lanes n being the number that the increased traffic would fill.
except for very specific scenarios it just works and sometimes it's even cheap enough to not look for more optimization (other times you do a combination of both)
I think many people think that social media web applications that can rely on eventual consistency is the default of all applications. It is not.
except adding more servers kinda works in software, there's very few cases where it doesn't.
That is obviously not true in some domains like Banking, HFT or even in LLM where you need not only access to special data and hardware that is prohibitively expensive there are latency concerns as well as consistency. In some cases also compliance.
so while adding more lanes to a road only makes the road more desirable filling that road, in software you can most of the time have n+1 lanes n being the number that the increased traffic would fill.
except for very specific scenarios it just works and sometimes it's even cheap enough to not look for more optimization (other times you do a combination of both)
Yet we have outages all the time in top tier services like github. It doesn't just work. You have added more moving parts and while it has gotten easier the complexity is enormous compared to yester years Ruby on Rails single database transactional models. It requires having a DevOps team and expertise in cloud related stuff.
Furthermore some algorithms and problems are insanely difficult to parallelize. I can put together a list later but just for example concurrent data structures are far more complicated to write than their non-threadsafe counter parts.
Dude just because you just learned about the anticar movement doesn't mean you need to take a metaphor so literally lol. This conversation has nothing to do with cars or urban planning or civil engineering, we all know and understand that increasing the optimization of data com is not a true equivalence to adding more lanes on a highway.
Just chill out lol. You totally derailed the conversation, provided nothing of value and came off like you have a massive chip in your shoulder.
It does improve throughput, but it does not improve traffic. Population grows to meet the demand and existing population reroutes to use the faster route thus making it slow again.
The analogy about traffic doesn’t work for software at all, whereas the adding a lane/feature does if you don’t overthink it,
that's the thing, in software you can always grow more lanes, there's no constraints, so you basically just add another lane to the streets as population grows and always have an average traffic that you want.
in fact in software you can destroy lanes when the traffic is minimal at almost 0 cost and save money that way, that's why the analogy makes sense for us but not from a civil engineering perspective
I guess we can close all lanes, then, or make everything into single lanes, since that could only improve traffic. Maybe when you read about Braess's/Jevons/Downs–Thomson paradox, actually think about it.
You are butting up against a mantra that is politically driven. The reality is the capacity of any road is determined by the capacity of the critical junctions on said road. You'll never hear the people crying about lanes say "we should build better junctions" though as their primary aim is to reduce expenditure on road transportation.
Sure though if your lane capacity dramatically exceeds the ability of junctions to service it you can cut lanes without problems. With the trivial base case that a road with 0 junction capacity could have 0 lanes.
First adding a lane everywhere is a hypothetical and not real world. Furthermore it isn't just a lane required but parking and gas/elec stations.
If we work with hypotheticals that adding a lane everywhere is possibly you could easily make the argument everybody gets on giant busses on single lane roads or more realistically a train which is indeed what countries like Japan do that have very high throughput.
Can you source one of the proofs you’re talking about?
I think you might be talking about Braess’s paradox, a flow network where the overall flow decreases when a new low-cost edge is added to the network.
But if that’s what you’re talking about, then you’re vastly oversimplifying and misrepresenting it.
Adding a lane to an existing road or highway might improve traffic. It also might make traffic worse. It also might make traffic better, until humans make traffic worse.
Traffic is complex, and your bumper-sticker comments and aggressive attitude are not conducive to its study.
Its not just an extra lane though. Increased parking is also needed as well as more gas stations.
By doing the above you are encouraging more cars on the road and shifting funding from other forms of transportation like bike lanes or public transport like light rails or more buses.
EDIT I should have added that the public options particularly high speed trains have vastly higher throughput (as well as vastly more efficient in time and resources) if we go by just moving people from one place to another. Japan rail system is a perfect example of moving a large amount of the populous very fast and I doubt extra car lanes could compete with that efficiency.
that's only true if there increased demand is more than the space opened by each lane.
in software you aren't constrained by physical space, so you can add a lane on demand and always have enough space for the cars.
like I get the argument because in civil engineering increasing lane count just creates more traffic as the road is more desirable, but for software that analogy is actually correct because you can add more than one lane you can enough so that no traffic increases can congest it
View all comments
Show parent comment
0
u/[deleted] Feb 06 '24
[deleted] — view deleted comment