3 ms·
This is quite possibly one of the best critiques of YAGNI that I've ever read. I grew up in the waterfall (as opposed to agile) era of the 80s and 90s. Back th
by zackmorris 8y ago
This is quite possibly one of the best critiques of YAGNI that I've ever read.
I grew up in the waterfall (as opposed to agile) era of the 80s and 90s. Back then, it was top priority to catch mistakes as early in development as possible. This is the top article I could find on the concept, which seems to stir a lot of debate:
https://developers.slashdot.org/story/03/10/21/0141215/software-defects---do-late-bugs-really-cost-more https://developers.slashdot.org/story/03/10/21/0141215/softw...
The gist of it is that if a bug costs $1 to fix during development, it costs $10 to fix during testing and $100 to fix once it's in production. Maybe someone can find the original quote.
Had I been working on terminals in the 70s, I would have been the annoying person in the back of the room who raised their hand and said "what about key ups?" There would have been a lot of muttering, much debate about how to store keymap bit arrays and what might happen if they get out of sync, every edge case would be explored, and in the end my opinion would be noted somewhere and character streams would have moved forward as the "simpler" implementation.
But it's not simpler, because perfectly valid use cases were excluded. Basically, their decision meant that we couldn't have video games in the terminal. Kind of a big deal, if you ask me.
After so many decades of this, it's hard for me to drink the Kool-Aid on new frameworks, even if they're ones we use every day like C++ (operator overloading was maybe a bad idea in hindsight), git (can't store folders without .gitkeep), Angular (two way binding - oops), React (front end PHP), even HTML/CSS/Javascript (difficulty encoding our own tags as components/nondetermistic inheritance across browsers/mutability). These frameworks are great, but it takes a certain level of suspension of disbelief to buy into them.
Give me 5 minutes with any technology and I'll find the conceptual flaws and bugs that impose major hurdles on its conceptual simplicity, utility and reusability. Basically everything I touch breaks. It's like a knack that makes me a good programmer, but also a Debbie Downer.
https://www.youtube.com/watch?v=MZF6EK7x4Dk https://www.youtube.com/watch?v=MZF6EK7x4Dk
P.S. The workaround for the keyup thing is probably to set the key repeat threshold and repeat delays to 0 and check for repeated keydown events each main loop, setting the keymap entry to true if the key is still down (false otherwise). It's not perfect because it can't easily detect multiple keys down or modifier keys, but that was one of the ways we did it in classic Mac OS anyway.
- infinity0 8y agoBugs might cost $1 to fix during development, but 9/10 of those bugs don't affect anything visible during testing, and 99/100 of those bugs don't affect anything visible during production.
- int_19h 8y agoWhat makes you believe those were valid use cases for those in charge back in 1970s? Just because some hobbyist wants to run a real time game on a terminal worth thousands of dollars doesn't mean that others are going to accommodate that. The most likely reason why they never bothered with key-up is because they were an evolution of the teletype, and inherited its protocols. That was the use case, not a generic human interface. But even if there was some explicit consideration of this idea, I'm pretty sure it'd die almost immediately, because carrying information about keystrokes would double the bandwidth of an average session, and we're talking about the time when typical transmission speed was measured in baud, and 4- digit speeds were considered fast (the first terminal supported a maximum of 2400 baud). You need a much more profligate culture to add support for things like that "just in case".
- landryraccoon 8y agoThe counterargument is that it would have taken so long to do it the "right" way that someone else would have shipped the simpler implementation and it would be widely adopted by users that were happy to have something "good enough" so by the time your "right solution" shipped they wouldn't care about it anymore. I mean, TTY was first written in the 70s. If I write code works fine except that it has a bug that will require a rewrite from scratch in 40 years I'd be pretty happy with the quality.
- sifoobar 8y agoFinding faults out of context is not really a skill; any moron can do that, and unfortunately many do.