| I do think consistency is also an important part of interface design, so I don't think GP is wrong to bring it up as something that modern software often fails at, but the type of consistency they're talking about isn't what I'm talking about with safety to experiment. For me, a better car analogy would be something like the fact that your radio controls can't mess with your brakes. You don't have to worry that if you change your radio station that your car suddenly won't start. This means that you probably don't feel nearly as worried about messing with those controls in an unfamiliar rental car. The entertainment system is never going to brick your car and make it impossible to drive (well, in most cars it can't). ---- That's still a kind of tortured analogy though, so I'll dispense with the analogies entirely and just talk technology. When I teach people how to use Git, some of the most important early commands I teach them after the basic data model are: `git reflog` `git reset <ref>` `git rebase -i <ref>` (and importantly, I wire this up to something other than Vim) I have observed anecdotally that people who have a good grasp of `git reflog` are much more likely to experiment with branching strategies, rebases, and merges, and are much more likely to come up with creative ways to solve their problems. Why? Because they're no longer scared of blowing up their entire repo. I used to leave those more "complicated" commands out of early conversations with people because I felt like I would be dropping too many concepts on them too quickly, but without that kind of confidence that says "I can undo any Git operation, swap my head to any reference, and reorder, merge and customize any set of commits from any branch", people treated Git more like a set of arcane symbols and they were scared to ever experiment or try to extrapolate to solve their problems, even when their problems could be solved using commands they already knew. Git could be a lot better about this stuff; the lesson I take is that I want to have very clear designations between dangerous and safe operations, and I want my interfaces to teach people where the undo key is first. ---- You can probably think of other Linux tools that demonstrate this issue as well. It took us a long time to get safety locks around `rm -rf /`. In some ways, the point of those safety locks isn't just to help protect the reckless people who do irresponsible things without thinking. It's also to give more confidence to people who are learning basic terminal commands/Bash that they're not going to accidentally mess up a pipe or regex expression and delete their entire hard drive if they try to experiment a little bit. We can take that even a step further, one of the best things you can do if you're learning Linux is get a good, reliable hard drive clone pushing regularly to a backup. You'll be in a better position to learn how the low-level system works if you know in the back of your head that you can always just blow the entire thing a way and rewind back a few days whenever you want. |