How to jump into "real world" programming?
chipsy: Take a big idea and bite off the smallest piece of it. Preferably a boring(or boring to most people!) problem with one or more obvious solutions. Why boring? Because programmers have a nasty habit of wanting to jump to interesting, challenging problems at an early stage, before they have properly evaluated real requirements of the particular domain. Hence there are lots of dead projects with a fancy internal design and nothing working or useful about them. But, on the other hand, many programs can eventually reach a stage where the programming problems become simultaneously interesting and useful; it's just that you can't do this instantly because you don't know the real requirements yet.Instead, you can build prototypes to find those requirements. When you're solving "real world" tasks, a proof-of-concept solution can often be done as a weekend to two-week project. It'll look trivial and do trivial things. It's the progression and accumulation of little features and fixes that move the program from the proof-of-concept or prototype stage into a real, useful app. Eventually the accumulations overwhelm your original design, and at that point you'll have the information necessary to do things "the right way" - how much performance is necessary, what features are relevant, if the language and platform are appropriate matches, etc.