It's been so long since I started programming that I can't really remember mine. My wife is learning now and I sometimes worry that my gauge of what are good beginner projects is off.
* a console hangman game
* a weird ascii art animation program
* a "guess the animal" program that used a binary tree of yes/no questions to guess the animal the player thought of. if it failed, it asked for a question that could be used to distinguish the wrong guess from the right one, and appended it to the binary tree (which was stored on disk)
I thought those were such a big deal back then :) Oh, the good old times :)
Figured out the following technologies on the fly: Python for the machine learning part, the backend and web scraping (after I finally gave up on SOAP), SQLite, HTML/CSS, PHP (after giving up on Django), Apache web server, FTP protocol (for backing up my stuff to my external drive). There are probably other things I tried and gave up on but forget.
I definitely went down a LOT of blind alleys and generally found out-of-the-box frameworks incomprehensible. The difference in the various communities was fascinating, too. For instance, try comparing forum answers to CSS or PHP questions against Python or, gasp, C. Holy cow.
*The result, if anyone cares, was that I figure they systematically overestimate High temps, underestimate low temps and overestimate POP.
EDIT: forgot javascript/jquery.
We are really into StarCraft II, so she's thinking of building a build order identification game for her first bigger project. We'll probably go ahead and use JQuery Mobile + PhoneGap to make it a free Android app we can give to our friends. Not quite as complex, but it should be fun!
For those of you that don't play StarCraft: A build order is like an opening in chess: it sets up the rest of the game, and recognizing/responding to a build order is key to being a good player. The game she wants to build would help train people to recognize build orders by showing them a quiz with pictures.
But, I also want to learn because I know that I need to understand what is being built and if it's being built in the best way to accomplish the goal - getting the job done for the customer.
Is it realistic to focus on being a generalist with an understanding of various languages or do I just need to learn one language first like Python and go from there? I noticed the MIT Python videos are free also. Thanks
Studying other languages exposes you to issues that you might not experience on your own, but on the other hand it's hard to apply your understanding of them all quickly. Python is an excellent language to learn first.
Learn enough of one language to be dangerous, code the minimum that comes close to what you feel you need (or a toy version of it), and then you'll have a much better idea of what else you want to learn. Good luck!