I'm coming up on 26 soon, and I've been in the field professionally for about 5 years now.
When I was really young, my grandfather gave me this Tandy laptop. I used it to write stories, and I remember writing to the "man in the computer" about things I had done that day. Like a diary, but someone wrote back. Years later, I found out that "man" was my father responding while I was asleep, but that really got me hooked into it. How was the computer talking back?!?
I can remember messing around with QBasic around the time I was 8 and 9 years old, nothing specific, but I'm told I would spend hours with it getting little things to work. My cousin in law had built computers, and he taught me about the hardware aspect of computers. I also helped with tech support at my elementary school!
As I got older, I got into gaming more heavily. Hex editors, command line arguments, all those fun little things that are complex to a 12 year old! Also, Geocities! Personal web pages, HTML? I did a lot of web pages for friends and family then.
High school came around and MySpace was just starting to come out, so more web customizing. That got me started into the world of CSS and web standards, and learning why they're important. Firefox and IE6 issues, etc.
I hit college and decided that programming would be my field. My professor was a huge proponent of FOSS. It was a very small school, so he was pretty much in full control about everything we got to see, and the school didn't mind because everything was free! Enter Java, Linux, shell scripting, etc. College taught me how to learn, and the most basic programming information.
Graduated after that, hit the real world of development. I didn't know a thing! All through college, we worked with small one-off applications, and my first code base was a 1.5m LOC monster! Codethulu.
C#, trial by fire. 5 years later, I've got a solid handle on NET 2.0 C#. Now I'm learning lambdas and the new features in NET 3.5. Also trying to figure out threading and correct programming patterns. Sadly, at my current job, we have a large number of dinosaurs who have not stayed current with technologies (COBOL, C, VB6, etc), so I don't have any mentors here, it's all self taught. All while trying to slowly bring Codethulu back into something manageable (See Stringly Typed).
Now, I'm amazed at how BAD the code was that I've written in the past, and simply amazed at the fact that some of it worked. I've fallen into every trap I can think of, premature optimization, pokemon exception handling, public variables, etc. You stop being a good programmer when you stop learning, and making mistakes are a big part of learning.
I have a 3 year old boy now who has an aptitude for computers that floors me. He plays Spore! Kids are absolute sponges for information, don't discourage a child from learning anything. He's fascinated when he catches me working from home, he knows that all those strange letters makes a program. He's also extremely interested in cooking, and gets upset if I don't let him help me in the kitchen. I don't believe in steering a child to a particular field, rather find something they love to do and encourage them to continue it, whether it's culinary or computing! As long as they're happy, what else really matters?
So, my story is something along the lines of
- Early fascination and encouraging relatives
- Learned QBasic & Hex editors
- HTML, CSS, JavaScript
- College - Java, Linux, shell
- C#, NET, etc