One of the things I find very sad about the state of computing currently is that nobody has really been taught to think about tool appropriateness. It's currently a bloody mess. Schools teach children to build websites... in Excel. I'm not kidding about this. Where they can afford a copy of FrontPage, they teach 'em about frames - where they can't, Excel seems to be a replacement for the whole Web stack - text editor, programming language, server and UI. 
At my school, they used to teach graphic design in that wonderful design application, Microsoft PowerPoint. That's industry transferable skills! It's not like there are free alternatives. 
No wonder people are growing up without any idea of the structure of documents. It actually takes a lot of work to wean people off the idea "that's a blob of green sans-serif 14pt text" and on to "that's a heading, and what it looks like doesn't necessarily matter at this point" (eventually from there, you progress down the rabbit hole of resources, through to descriptions, and descriptions of those descriptions and eventually to signed descriptions of rules that apply to other descriptions and round and round in circles until your head becomes a ping-pong ball - and, no, you can't make complexity disappear, you just shift it around a bit). 
It has become a mantra that we should teach people to use applications. Most people don't meddle with their cars - we have garages for that kind of thing, so we should just teach them how to drive the car and leave all the hard stuff for the mechanic. With computing, that is learned helplessness - because computers are very different things to cars. Cars have only a small number of primitive functions - forwards, reverse, accelerate, brake and position wheels. Add a few support objects around it - gearboxes, clutches and the like. A computer is a general purpose thing. What you do with it is not defined. 
Fuck teaching applications. If you were in a school in the early eighties that was lucky enough to have a computer, you'd probably be told that it was absolutely essential that you learn WordStar on CP/M, and that you'd never get a job unless you knew this vital task. Well, sorry to break it to you guys, but WordStar is dead. C and C++ aren't. What does that tell you? Do you honestly think that anyone will still be demanding PowerPoint presentations in twenty years time? And if they still exist, would you want to work for them? I hate to be the one who breaks the bad news, but if you are working away for something like an Advanced VCE in Information and Communications Technology, or an Applied GCSE, or whatever they call it, you are probably wasting your time. 
Schools should teach everyone a dynamic scripting language (no prizes for guessing which one I'd choose, but Ruby would do nicely too...). Why? For a couple of reasons. Learning to code is good mental discipline, and teaches people to be logical and consistent. Being able to code saves enormous amounts of time. I've saved hundreds of hours of boring labour because I can write a short Python script that does it for me. Irritating things that get on my nerves every day don't. I can't imagine mousing through eternal menus when I have Quicksilver and iTerm hovering, waiting for my command. 
But even if the person leaves the Intro to Programming course and doesn't ever boot up a python shell ever again, they still gain other things. Namely, it'll force people to think about data structurally. This is important, as we are always trying to pull data out of our brain and codify it in a structure. Most people can intuitively tell the difference between a string and a number (although people who aren't either mathematicians or programmers will probably fall when trying to tell the difference between different types of numbers - positive and negative numbers, integers, floats, doubles, shorts/longs and so on). 
Hash tables (or key-value pairs, associative arrays), multi-dimensional arrays, hierarchial structures (like outlines) and the way in which we encode and decode these types of things are second nature to most programmers. But if you are trying to create a structured document, it becomes difficult for a person who isn't trained in the differences between these types of things to really understand how to put that kind of data structure into action in their real life. At the very least, documents will be better thought out. 
Once you start thinking structurally, how something looks becomes less relevant. I don't like making puffed-up claims, but in a world of celebrity vapidity - which is heavily based on putting looks before substance, thinking about the underlying structure of something before wrapping it in gloss. Well, it's a nice thought. Saving the world from boring, repetitive tasks - and Paris Hilton. It's worth a try. 
The kids who learn WordStar - or Microsoft Office - are being sold a bill of goods. This 'pragmatic' approach to computing is an utter waste of time. The 'theoretical' beats it every time. Teach a man to fish... Well, teach a person to code (and all the related good practice - from RTFM, asking smart questions and so on), and they won't end up learning bad technologies. How many Python programmers do you see aching to learn how to use Microsoft Project? 
It would also make the vast leap over to the world of open source easier, and could help people understand that they are in charge of technology - and it's them that matters, not the vendor sports, armchair punditry over Microsoft, Google, Apple and so on. Here we are all about love, funking out and writing beautiful (Python) code. 
