Here's the thing: people don't really want to learn
This is where things get hard: we have to realize that, on average, people really don't want to learn all that much. We, as programmers, tend to enjoy learning some things, but in general people don't want to learn that stop signs are no longer red, but are now flashing white; we want the way things were because they're familiar. We want control over what we learn.
Our experiences become a chunk to integrate, and since learning is integration of chunks into a cohesive unit, new information can clash with our old information - which is often uncomfortable. Of course, experience can help integrate new information - so the fifth time you see a flashing white stop sign (instead of the octogonal red sign so many are familiar with), you will be more used to it and start seeing it as a stop sign and not something that's just plain weird.
That said, it's important to recognize that the larger the difference between what people need to know and what they already know, the harder it will be for them to integrate the new knowledge. If you use closures in front of someone who's not familiar with anonymous blocks of executable code, you have to be ready for them to mutter that they prefer anonymous implementations of interfaces; named methods are good. It's what they know. They're familiar with the syntax. It's safe.
This is why "Hello, World" is so important for programmers. It allows coders to focus on fairly limited things; most programmers quickly understand the edit/compile/run cycle (which often has a "debug" phase or, lately, a "test" phase, thank the Maven) and "Hello, World" lets them focus on only how a language implements common tasks.
Think about it: you know what "Hello, World" does. It outputs "Hello, World." Simple, straightforward, to the point. Therefore, you look for the text in the program, and everything else is programming language structure; it gives you an entry point to look for, a mechanism to output text, and some measure of encapsulated routines (assuming the language has such things, and let's be real: any language you're working with now has something like them.)
This also gives programmers a means by which to judge how much work they actually have to do to do something really simple. The Windows/C version of "Hello, World," as recommended by early programming manuals, was gigantic - in simple console-oriented C, it's four lines or so, and with the Windows API, it turns into nearly seventy. This gives programmers an idea (for better or for worse) what kind of effort that simple tasks will require - even if, as in the case of Windows, a simple message actually has a lot of work to do. (In all fairness, any GUI "Hello World" has this problem.)
|