

I know exactly where it is on the screen, but I forget the command because I rarely need it (cut and uncut, I remember because I've used them enough). Despite the fact that I've used pico for a decade and a half, I still have to look at the bottom of the screen to remind myself how to search. The visual memory happens automatically, all the time, and is easily retained, while shortcuts and commands must be painstakingly memorized and are easily forgotten. It's easier for me to visually remember where a command is rather than to remember what keyboard shortcut goes with the command. I've never been much of one for keyboard shortcuts. I know different people have different ways of doing things. I can only think of one example from four years of full-time programming, and I doubt vi would have been helpful with that (sed or awk used recursively on a directory would have been the equivalent of what I did in Xcode). Yes, I've used grep to search include directories and third-party source directories, but I've almost never needed an actual regular expression as part of the search. I *do* actually know quite a bit about regular expressions, but I've very rarely found any need to search with regular expressions while programming. For some people, a bottom up strategy is essential to how they learn. I do think there's a lot of value in the pilotError/Lee approach however. I mean unintuitive in the sense that it's not easily discoverable like todays apps are, and requires working through tutorials. Learning the Unix command line, and then a somewhat unintuitive text editor like vi(m) or emacs seems like more hurdles to introduce early on. Getting stuck and hitting roadblocks right when you're first starting out can be insanely frustrating if you don't have the knowledge to figure out what you're doing wrong. There's a pretty high barrier to entry when you're trying to learn to program on your own, and I think there's an inherent value in keeping the process moving quickly to build some positive reinforcement.

You certainly don't need to be a master of Xcode to make your way through many beginner books, and I don't think there's anything wrong with "taking it on faith" that the compiler is working black magic to make your code compile, as long as people eventually go back later to learn what's really going on. I think it's important to learn command line skills and not being dependent on Xcode, but it's something that I've gone back and learned later.

I think both approaches are valid to be honest and depends on the person.
