Algorithms are only part of the battle. When using a good object oriented language (such as C++ or Java), good object oriented design is absolutely necessary to accomplish any tasks of moderate complexity without writing a ton of code.
When learning a language, the right IDE can make all the difference in the world too. Eclipse (www.eclipse.org) does have it's own learning curve, but has become the most powerful and feature rich IDE freely avalible. It's native language is Java, but it has plugins for C++, and other languages (Python for instance… another good 'starting language').
My suggestion is to find an open source project your interested in, and start teaching yourself using online tutorials, books (if you can afford them), and changing existing code. If you need some suggestions for a good open source project, contact me offline ([email protected]).
-Kevlar
I assure you the minute you step into the real world, you'll quickly discover Microsoft is not the most popular target platform.
Today it's virtually a requirement that anything be done in a platform-agnostic fashion. This is one of the many reasons languages like Java and Python are so popular: They work on just about everything.
C++ on Microsoft is one of the hardest platforms to do because all of the API's and language trickeries are Microsoft specific. Not to mention the Microsoft Foundation Classes sucks a fat cock and makes you want to tear your hair out.
If you want a good C++ experience, you can do your development on a Microsoft platform… but steer well clear of anything that's Microsoft specific. Otherwise you'll just learn terribly bad habits and skills which arn't applicable anywhere else.
-Kevlar
You don't learn Lisp because you'll ever program in it: You won't… unless your doing academic AI reasearch.
You learn Lisp because it'll make you a better programmer.
Much in the same way you don't learn Latin to speak Latin: You learn it because it'll make you a better English speaker.
-Kevlar