No so much that YAGNI falls short, but more like "When YAGNI means 'You Are Gonna Need It'"
Kache
Bad abstraction is worse than no abstraction
If the code is going to poorly organized, I'd prefer it to just be one single gigantic standalone script than some wrong and misleading arrangement of objects or functions that adds more complexity than they solve
That depends, people can be smart but malicious, non-coorperative, or selfish.
The prisoner's dilemma shows that there are systems where individually, the "smart" individual thing to do is globally non-optimal.
Even smartness and altruism alone isn't enough. Medical professionals are smart and out to help others, but any ER doc/nurse will tell you they have limited trust in their patients (rightly so in the real world).
Does "everyone is smart" also include both "altruism and cooperative trust in others"?
Can that barrel hold fluids? B/c then what about the ocean or even the atmosphere? (Though it would take a while)
Could've held one rod end in each hand, letting middle of rope ladder hang down for standing on, like stirrups
Alternate left/right and you can step in any direction into the air
"never see addressed"? What do you think currently happens in (real, non-hypothetical) cities with good bike infrastructure?
https://www.youtube.com/watch?v=j2dHFC31VtQ&t=365
Oh look, emergency vehicles work even better on bike infrastructure than on car infrastructure
Bicylists and pedestrians can't hard block a firetruck the way car traffic can
Feel like some states should coalition together and organize their own agencies
absolute beginner? Start at https://www.hedycode.com/
Which will ultimately lead into vanilla Python. This is the creator explaining why Hedy is uniquely designed for learning: https://www.youtube.com/watch?v=fmF7HpU_-9k
inheritance to avoid code duplication
What no, inheritance is not for code sharing
Sound bite aside, inheritance is a higher level concept. That it "shares code" is one of several effects.
The simple, plain, decoupled way to share code is the humble function call, i.e. static method in certain langs.
If you used good objects, you'll only have to make the change in one place
IMO that's generally a retroactive statement because in practice have to be lucky for that to be true. An abstraction along one dimension -- even a good one, will limit flexibility in some other dimension.
Occasionally, everything comes into alignment and an opportunity appears to reliably-ish predict the correct abstraction the future will need.
Most every other time, you're better off avoiding the possibility of the really costly bad abstraction by resisting the urge to abstract preemptively.
I've never seen these "express code/tests in natural language" ever work well. Your non-coders need lawyer-like skills to wield English very precisely, or it falls to coders that would be better off using code directly.
What did you go over?