Operant Conditioning by Software Bugs (2012)
blog.regehr.org
blog.regehr.org
This post is a great writeup of another angle on the same phenomenon -- how even as we unsee the bugs we adapt our behavior to avoid them.
(Dan's post also has a proposed solution, but I've never found that one as convincing as the picture he paints of the problem.)
But an hour of someone’s time is hard to get, and once they’ve used the software a bit, they’re spent—you can’t make them naïve again. So fuzzing and randomised property testing have begun to take their place for me, as well as an adversarial dialogue in my own mind of “What happens if I try this stupid thing?” versus “The software should patiently and correctly do something reasonable, with no casualties, no matter what stupid thing the user does”, each constantly trying to one-up the other. It’s pretty fun, actually—I’ve thought of getting a “devil duck” and an “angel duck” to personify them, in addition to the standard-issue debugging duck. :)
Who's doing that today?
Since it doesn't happen all the time it's hard to instill.
And another I just noticed ... the HN 'add comment' button disappears behind the text box on Android... fixed by switch to landscape the back to portrait.
And they get paid commensurate to this scarce but very useful "skill".
I realized to my astonishment last week that despite using my Macbook for 12+ hours of coding nearly every day, I had not rebooted it in nearly four months! This only became clear when I did an OS update that needed a reboot.
I once installed an ubuntu VM. I then installed Java and Eclipse to work on a C project I downloaded, and was greeted by all fonts on system windows magically tripling in size and not being able to find a settings window to fix it anywhere. I had to reinstall. The whole process from initial install to un-usability was less than two hours
Meanwhile, my windows 7 desktop and windows 2012r2 server run 24/7, reboot once a month on patch tuesday, and are rock-freaking-solid. Despite the fact that they both see more diverse and stranger work than the macbook. Despite using spinning rust Hard Drives in both, they are more responsive and reliable under load than my macbook, and show no signs of misbehavior even when a bug in a video editor I use cause the graphics driver to lock up and hard crash (IN KERNEL SPACE) repeatedly, recovering with just a slight warning.
I'll never understand the "mac is reliable" ideology.
I've owned three Macs over many years, and at least in my own experience, they have been the most reliable machines I've owned in the twenty years I've been developing. I still have a 2011 13-inch MBP that despite a hard drive replacement is still whirring along fine. My main dev machine is a 15-inch 2016 model that is the most dependable I've personally experienced.
I have this exact problem when reconnecting to a corporate hardline.
A recent example for me is some webpages seem to crash on iOS safari if I scroll to fast. It happens more on older devices. So I’m constantly trying to feel out the rate at which I’m scrolling. Carefully trying to balance the desire to scroll quickly with the desire to not crash the page!
One issue here is that many people I’ve observed using software don’t perceive the difference between “workarounds” for bugs and the using of the program in its intended way.
It just becomes this generic blob of behaviors required to “make the program work.”