views:

4727

answers:

84

Back in the late 80s/early 90s I learned GWBasic on MS-DOS. Then Turbo Pascal. Then Turbo C/Asm. Later I stumbled into PHP and finally made a career out of Perl programming.

I'm curious how actual under-25s found their way into programming. There is a lot of discussion about what path you would steer your children if you wanted them to learn programming, but I would like to hear from the newer generation to find out their more modern experiences about becoming a programmer.

Note: no stories from people who first discovered programming at university.

+1  A: 

I went through almost exactly the same sequence you did. GW to QBASIC + asm, to C, to C++.

Nowadays there are cool things like http://www.alice.org/ to help get kids hooked on the C++rack.

Hugo

Rocketmagnet
+6  A: 

10 years ago, my sisters boyfriend at the time was a programming consultant for a big company and would do a lot of his work at our house where I would always nag him to show me how to program.

Anyways one day, the internet was down, he was unable to perform any work and he got fed up with me asking that he showed me how to open up Notepad and write simple HTML and load it into the browser.

In high-school I learned how to program cheat-sheets onto my TI-83 calculator written in BASIC. After high-school then came college.

Anthony Forloney
+1 I learned on my TI-83 too :D
wsanville
Sad part was (*which I hate to admit*) I spent more time figuring out how to program calculations and output the correct results that I didn't put any effort into actually studying. This was single-handedly one of my biggest regrets in school.
Anthony Forloney
+1  A: 

I am under 25.

I started with VB at 11 or 12. It was shit, and I read a bit, realized that C and Linux/other unix was more interesting.

Then progressed to C using a Unix shell on hobbiton.org. Then installed Linux, and the rest is relatively short history filled with segfaults and long debugging sessions.

The youth of today (now 11) will probably start with JavaScript or C#. I hope they don't start with disgraces [in my opinion] like RoR. Those scallywags should start with C ... it is character building.

[thanks to my big brother for installing VB/Visual Studio as part of his CS degree]

Aiden Bell
-1: for bad-mouthing languages that lots of people love. I thought that way when I was under 25 too though. :)
Brian MacKay
+1 for taking a stand... haha I'm 25 though...
chills42
@Brian MacKay - Just because alot of people love a language doesn't mean it isn't shit. Otherwise McDonalds is fine dining.
Aiden Bell
Hah. Well, here's the thing: obviously you're well aware that other people's opinions are not absolute. Yours aren't either. So expressing your negative opinions so strongly comes across as contentious. Which is your prerogative, just be aware that it attracts downvotes. :)
Brian MacKay
+1 for rhyming and making your post sound like a poem
advs89
@Brian MacKay - You're right, only my opinion - all it can be. Just like to think other people are independent minded enough and have strong enough conviction of their own to ignore me ;)
Aiden Bell
+2  A: 

I will steer my children towards Python. Programming is fun again.

Tim Pietzcker
Python is cracking, ensure they learn some functional othewise they later realize they are missing their right leg.
Aiden Bell
Except when Unicode rears its head in your code.
Cameron
@Cameron: Python 3, of course. Anybody still using Python 2? ;)
Tim Pietzcker
+1  A: 

I'm under 25, but I first "discovered" programming in college - I'm going to answer anyway.

In middle school and high school I did a lot of VBA in Excel and BASIC on my TI-83 without having even the slightest clue that that was what programming was. Finally, one of my college professors picked up on it and steered me towards CS.

I think this is an important question because there tends to be this assumption that great programmers started well before college, but in my experience not everybody has any exposure to it earlier than that. Maybe it would be good to think of ways to steer children without programmer parents towards it as well.

Jelly
It wouldn't necessarily be parents steering children towards programming, it might be a career programmer who picks up on a technical interest in someone young and then wonders what might be a good start for that person nowadays (times have changed)
PP
@PP: That's why I said it was good for non-parents to think about too, in response to the fact that the question specifically mentioned parents. I guess my response unintentionally sounds more accusatory towards than supportive of the original question!
Jelly
@Jelly it doesn't matter how your response sounds, it is your opinion. And you're right, my question did err towards parents, it should have been phrased in a more open manner.
PP
+1 for busting the myth that all great programmers have been programming since they were 10. Some of us just didn't get exposed to programming until late high school or college--if the talent is there, it shouldn't matter when it was discovered.
Amanda S
+1  A: 

I'm 26, but I guess close enough for what you're asking, as I started learning computers when I was 12.

My progression was something like the following: MS-DOS (starting with version 2.0 IIRC), BASIC, QBASIC, Turbo Pascal, HTML, VB4-6 and a bit of VBA, C++ with MFC, PHP, Javascript, CSS, Databases (MySQL, PostgreSQL, SQL Server, Access) and database design, C# / VB.NET.

In school, I also did bits and pieces of other languages as well: Turing, Java, SPARC assembly. I've probably missed a few.

To answer the question more directly, for those beginning today, I think a good place to jump in is with the web-based languages such as HTML, CSS, and Javascript. Those are pretty forgiving and suitable for learning, but you can also do really powerful stuff with them once you get into it.

Jon Seigel
+1  A: 

I'm 26, so I guess I'm close enough in age.

I learned basic DOS commands at 12. In high school I took an "advanced technology" class that maintained the school's website in MS Frontpage. From there I learned how to write HTML and a bit of Javascript from scratch in Notepad. I also recall doing some very basic CGI scripting in Perl, but Perl never caught on with me.

My pre-cal teacher in high school was an ex FORTRAN programmer, and he would let you use any programs you wrote yourself on tests. We had a few days in class where he showed students how to do basic I/O programming on the TI-82/83, but I had a TI-89 and he (nicely) refused to show me how to write programs for it because it was not the approved calculator for the class. So - I write out all the functions I wanted to code. When the TI-89 manual didn't tell me what I wanted to know, I went to TI's website and found a rather large PDF file that documented language features not in the manual.

I had a week before the next big test, and by then I had a menu-driven app that had conditional logic and would ask for information only relevant to problem at hand and other information I provided. I ended up making an A on that test when I normally made low B's, so my teacher asked to see my program. I explained my whole process and let him test it - he was very impressed and told me it was the most complicated calculator program he ever saw from a student, and asked me if I would share what I created with the class. He told me I would do well to study computer science in college. His mentoring was a large reason why I decided to go into software development.

In college, I first learned QBasic and Access SQL/VBA programming. After that I learned (in order of appearance) COBOL, C\C++, Java, VB6, Bash shell scripting, and IBM 8086 ASM. Of those, I still use VB6 and C\C++ and a tiny tiny bit of ASM.

Heather
+3  A: 

As Aaron notes in Primer:

They took from their surroundings what was needed...

and made of it something more

I think most kids, if they want to start programming, will use whatever hardware/language is at hand:

  • I learned to program GW-BASIC (AT&T PC300), and later QBasic (on a ~1995 Acer P90) and VB6 (a Pentium MMX 200MHz), as my family upgraded their PCs over the years.
  • I have a friend that started with assembler on the Commodore 64. He now automates stock trades using Excel sheets + macros.
  • A number of my friends that had computers with mice (because their parents had $$$) became graphic artists.
  • I knew a lot of people in high school who got into programming via graphic calculators, which they were forced to buy for classes.
  • My younger brother is learning because of the hand-me-down equipment he's gotten. He also reads Hack-a-day religiously, and was given funds to build an arcade PC.

In short, if it's easy for them to get their hands on, chances are that's how they'll learn to program.

Having a parent that programs helps too, I think.

sheepsimulator
+4  A: 

I'm 21 and I first started programming Pascal, Delphi and Java, because these were taught in school. However, I really started programming in the first year of university, with Ruby. There were no courses teaching ruby, but some of the other freshmen already were ruby pros and i was basically learning by copying.

Later I also started learning Java, because I needed some money and all the interesting jobs offered by the university mostly required solid java knowledge.

Also, in school there were quite a few people who spent a LOT of hours doing TI-83 programming (some BASIC dialect), and some of them got quite impressive results.

Benno
+1  A: 

Started with WATCOM Basic in my first year of High School. I programmed a simple application that helped me keep track of sales for the day.

After realizing computers could be used to automate tasks and perform the same action exactly the same way each time, I decided to pursue programming in more detail.

I learned HTML, CSS, PHP, and JavaScript within the next couple of years and started making small, project-related websites for school and fun. This is when I made the move to Linux as my primary desktop OS.

In my last couple years of High School, I moved on to Python, some C++, and using databases such as MySQL and PostgreSQL.

After that, it was all history. C and Java in University along with Python, Bash, and various other languages and technologies.

Nick Presta
+35  A: 

I'm just exactly 25. I got into programming via the web - started out doing HTML. It was actually the American Girl magazine which got me into the idea of making my own web page in 6th grade, although I didn't start until a year later. Yeah, American Girls - in case you can't tell I'm female.

At the ripe old age of 13 I got Java books from the library, but couldn't quite wrap my head around them. I did a bit of copy-paste Javascript, but mostly just HTML. In 9th grade I took an accelerated programming course (intro computer science and AP computer science in one year) at my local magnet high school. There I learned C++, but C-style, from my teacher. For the rest of the four years I took as many programming classes as the school offered - I ended up covering MIPS (didn't get it at all), LISP (not a fan back in those days) because MIT's intro to computer science used Scheme and our teachers were trying to prepare us in case we ended up there, some basic OpenGL libraries for C++, and enough C++ to get by. Taught myself PHP towards the end of high school as well to program an online game for a capstone project. I had high school internships using VBA macros for Word and C++ with SQL Server in Visual Studio. From there my undergraduate degree in computer science and subsequent career in computer science were history.

On the note of steering your child, though, I'd highly discourage it. Two friends of mine were being pushed hard by programmer fathers to be programmers. One is now a graduate student in the classics. The other majored in English but did end up in technical writing (as opposed to fiction). I don't remember either appreciating the constant nagging to take the classes I eagerly signed up to take. If my parents had been encouraging me into electrical engineering, theoretical physics, art, or some other career, I wouldn't have been happy either.

justkt
+1 for discouraging pushing the kid. Don't push stuff through kid's throat. Let kid take the initiative. You can at least make it interesting for the kid by telling/showing something neutral about it.
BalusC
+1: world needs more programmer chix :)
Juliet
BalusC - good point. I might not have been so into programming had I not been surrounded by other people writing code in middle and high school.
justkt
It was funny when this had exactly 25 upvotes; after all, the first sentence is: "I'm just exactly 25."
Maxim Zaslavsky
Happy birthday.
Ron
+9  A: 

I'm 23 (and 11 months).

We got our first computer when I was - 4 years old, I think? Something along those lines, at least.

I fairly quickly managed to pick up enough to use it for basic stuff (i.e., start games). I also have a vague recollection of one night - it was around 10 PM, so I should really have been sleeping then - where my parents couldn't make something work, but where I could tell them what they had to do. I'm pretty sure I hadn't started school back then, so that means I was no more than 5 years old at that point in time.

In other words, it was pretty clear I had a knack for these things fairly early.

I did type in a couple of BASIC programs from books before then, but I think my first piece of actual code, written by myself, was when I was 11 or so. That was in QBasic.

Following that, I progressed to Windows via Delphi, and ported the two "larger" applications I'd written to a graphical environment in 2001 or 2002 (I think I started working with it in 2001, and released the first version of the apps in 2002). It's still my favorite language, and I continue to work with it when I have the possibility, but I've also worked with many languages since then - PHP, SQL, C#, C++, Java, Haskell, Prolog, Javascript, VBA... and I'm sure I've forgotten one or two on that list.

I've also, purely for fun, written a small .COM file in pure 16-bit x86 assembly which does nothing but busy-wait for 4 minutes, while using 100% CPU - because 4 minutes is how long it takes for the coffee to be ready once the water boils. After writing the code, I then assembled it by hand, looking up opcodes in manuals and on reference websites, because, well, I could. (I don't even drink coffee, but the pure geekiness of it was worth it.)

Michael Madsen
+1  A: 

My high school offered a programming course. It was in C++. I realized that I really liked this programming thing, and then learnt most of the course material ahead of time on my own, eventually progressing to Perl, then going into CS in college.

Cameron
+1  A: 

I started in third-odd grade when my dad saw me tooling around in QBasic and decided to buy me "QBasic for Rookies". I made some crappy games (in the loosest sense of the word; more like "press the button and see if you win"), but learned to apply my skills as I grew.

With a heavy interest in game development, I found pre-integrated game creation systems like Tim Sweeney's old ZZT. Worked with that and a few others for a while before I took programming classes in high school on both QBasic and C++; C++ was my bread and butter before I got introduced to the .net languages.

Truth be told, sheepsimulator has a point: a lot of it is personal initiative. If a kid wants to program, he'll find a way. Of course, my dad did facilitate me learning in a quicker and more directed manner, which I don't mind. If he seems to get the bug, then let him see what all is out there.

Jim Dagg
Press the button and see if you win -- that's called a slot machine, and is big business in casinos!
Kevin Panko
+2  A: 

I always found the thought of creating my own programs for the computer great, so when I was 10 I bought a book about VB6, written for kids. I soon discovered that VB6 was deprecated so I switched over to VB.NET. Later, I learned the C# syntax. Then I wanted to create websites, so I looked at HTML and CSS. As I had the need to make them dynamic, I learned PHP and JS. Not too long ago, I got interested in creating iPhone Apps, and so I tried out a little bit of Objective-C.

As you can see, the whole thing is pretty interest-driven, and I always learn what I want to do.. ;-)

eWolf
+3  A: 

I am using the lego mindstorm to introduce my boys to programming. The product ships with a drag and drop visual programming language that helps kids understand logic and flow charts but there are apis and compiles for java and c for the advanced enthusiasts.

Athens
When I first heard about "Visual" C++, I just assumed it was something like Lego Mindstorms. You actually drag and drop Lego bricks on-screen to form your program. There is a brick for "if" statement, another brick for "timer delay," and a brick for "turn motor on or off." That's about as visual as programming can get!
Kevin Panko
A: 

People are starting programming very early these days.

I started to program at 10, there is a lot of tutorials in the internet

M28
Yes, but what were you programming in, what took your interest?
PP
What language(s) were you playing with?
Brian MacKay
10 is late for some people :)
Matthew Whited
@BrianRuby, I started using classes and others things in AS2, when I had 13 years
M28
+1  A: 

My EvilBoy found that he loved to play computer games. Then starting wondering what was going on under the hood. Bruhahahha

He started programming in Warcraft 3, moved in to JASS (Warcraft 3 assembler sort of) I have been broadening his horizons with C++ (yes yes, child abuse i know) He is using the free MSVC8, with the game library DarkGDK

He is having a lot of fun.

EvilTeach
DarkBASIC, perhaps?
Brian MacKay
I asked.It's called DarkGDK
EvilTeach
@EvilTeach that's what I figured when I read your question. I began programming with DarkBasic just a little while(few months) before DarkGDK came out.
Earlz
A: 

I can't imagine any application language is common as a first language - C++, Java and C# are all pretty giant steps with no understanding of programming at all.

When I was at school they had QBasic on Windows PCs and Delphi floating around too.

But I was a little atypical. My dad had done programming in his job and I found a pile of books about ASM and DOS and BIOS and a very ancient version of C and went from there not knowing these were already pretty old-fashioned.

John
+2  A: 

My son took a few minicourses at the local Science Museum. Right now, what's got him interested is an MMORPG called Roblox (which looks like a version of Lego Wars), which uses Lua for scripts. My wife and I haven't been pushing, but I like seeing him working on Lua scripts and the like.

David Thornley
Hey, I was looking for that kind of game for myself :) +1
naugtur
Go Lua! :D +1 ()
RCIX
+136  A: 

I think that my story would qualify pretty well for this question. At the time of this writing, I'm actually 12 years old. I got started with VB6 (yes, VB, I know, argh) when I was 7, as my dad showed it to me. That got me really intrigued, and, with the help of my dad, I built my first app: a word-search solver.

Later, I moved into learning HTML: my dad directed me towards W3Schools, and I spent my free time examining the tutorials on HTML, Javascript, CSS, etc. When I was 9 or 10, we had a guest who was a C# programmer. He recommended some C# books for me, which I used to familiarize myself with the language.

Two summers ago, I took a C# course thru the local university's extension classes, which further increased my understanding of programming. I found myself very intrigued into books and blogs like Joel on Software, which then brought me here, to Stack Overflow.

Lately, I've written a few data collection and analysis programs for a non-profit, as well as starting a programming club at school, creating an open-source project (SOApiDotNet, a library for the pre-alpha Stack Overflow API; by the way, if you're looking for something like this, use SXAPI instead), and more.

So, for how I found my way into programming, long story short:

  1. My dad showed me VB6
  2. Learned HTML, JS, etc.
  3. Learned C# (books and a college course)
  4. Found Stack Overflow!
Maxim Zaslavsky
If you're really 12 then your grammar skills are way beyond the average adult. You should go far. Tip: hide in the library during your high school years to keep away from bullies - that's what I did (mildly successful strategy)
PP
Lol, thanks for the tip. Well, my school is middle and high in one, and the bully problem has been mostly solved. But still, I'll keep that in mind.
Maxim Zaslavsky
I want to +1 you just for writing so well at your age. Every day, it seems like fewer and fewer people know spelling and grammar, and seeing someone at 12 with this kind of writing almost brings a tear of joy to my eye. But since that isn't a good criteria for upvoting, I'm just gonna +1 you for the story instead.
Michael Madsen
Impressive, but don't get to entrenched in the C#/Java camp though. Check out other programming paradigms as well -- functional languages springs to mind (scala, ruby ...). Before your brain gets stuck.
Martin Wickman
Thanks everyone! And @wic, I'll try that!
Maxim Zaslavsky
I second wic at learning more paradigmns. Scala is nice ;-)
Malax
sounds kinda like my story - I started in VB3 when I was 7 years old (I'm 23 today) - I expect to hear your name in the news someday if you're really doing this much at 12.
Tesserex
High five! I also started when I was 7 with TurboC. I'm 24 now.
snicker
For anyone not put to shame yet,Maxim Z also plays mean Jazz piano (and is 12) http://www.youtube.com/watch?v=iaht-NMYLlE
Aiden Bell
From your style of writing I would never expect you to be 12 :-) I also began with VB6 and I am 14 now... But my dad didn't show me anything :-/
eWolf
@AidenBell haha thx! Jeez that vid is old: I'm much prouder of my classical piano videos... :D
Maxim Zaslavsky
Thank you everyone for your support!
Maxim Zaslavsky
@eWolf that's cool!
Maxim Zaslavsky
One tip that you might not hear here: don't spend all of your young days writing code. Keep improving other things about yourself too. I personally wish I would have exercised my social skills more at a young age. Balance = important.
temp2290
funny, my story's pretty similar. except i started vb around 12 and instead of c# i did c++. but i didn't find SO until i was 21.
Victor
Let me compliment you by saying that I absolutely do not believe that you are 12 years old.
Blankasaurus
If you are really 12....one suggstion from me => enjoy your life when you have the chance, because once you get into all these, you will have no time to do anything else.
Bhaskar
5. ...6. Profit!
Epaga
Make a note to read CTMCP [ http://www.amazon.com/Concepts-Techniques-Models-Computer-Programming/dp/0262220695 ] and SICP [ http://www.amazon.com/Structure-Interpretation-Computer-Programs-Engineering/dp/0262011530 ]. That will give you a new perspective on how you think about programming.
ardsrk
There are probably some people here who wish it was legal to hire you.
quillbreaker
@quillbreaker haha, thx, but it is legal! Especially with telecommunication. I'm planning to try and do some non-profit work over the summer (unless I get any responses to my SOCareers CV) and some open-source stuff. Back to your statement, why _would_ anyone want to hire me? I'm a kid: I have _some_ experience, but not as much as a professional. Still, thanks for the compliment! :)
Maxim Zaslavsky
Here's proof that I'm 12 years old: http://www.youtube.com/watch?v=qbWLFdTPZ4g (video taken 1 year ago)
Maxim Zaslavsky
You are exactly like me, only that my dad showed my Access and not VB6 when I was 7/8.
TTT
Man this makes me feel dumb. I can't believe he is only 12.
Adam Gent
Make sure you play lots of sports and exercise regularly during your teenage years.
Ankur
Impressive. Hmm, my son is 7, should I show him some Java or HTML?
BalusC
Enjoy your good grammar/spelling while you can. I stuffed my brain full while learning how to program, and my grammar is definitely worsening (Though perhaps there's no causation there). @temp2290 I totally agree, but it sounds like he's doing a good job staying social with that club :D
Wallacoloo
Man, and I thought I was young at 16 >.> Looks like I was wrong.
iconiK
I started around 12 with BASIC on some VTech laptop for kids that put an emphasis on education (e.g. grammar). I moved on a couple of years later to HTML, then CSS, then XHTML... I think that when I started playing with C++ and PHP 4, I was officially hooked. :D
Dustin
I started VB4 at ten. One suggestion beyond that of don't let programming be all consuming is to also checkout some of the applied sciences such as engineering and physics. It's not as accessible as programming, but, you may find you like it for many of the same reasons. I found a happy balance by using programming as a tool in the applied sciences (in my case computational fluid dynamics, within aerospace engineering). Food for thought, explore it all.
ccook
never mind PP. at least in terms of hiding in the library. learn a martial art or some other form of self defense and if the bullies get on your case, stand your ground. but don't become a bully yourself, picking on the stupid jocks. and also, learn guitar.
DaveDev
+2  A: 

I'm 22 - I got first interested in programming when (I was about 10) I discovered some BASIC books in a local library. It seemed kind of cool to copy a page of text from the book to the computer and you would have a working simple game. But I've tried to understand it, but I couldn't quite wrap my mind around it, so I just tinkered with variables to "mod" the game. We had some Pascal programming in school, I was able to make some simple programs. Then I got interested in PHP when I was 14 - did some webpages, played around in it, did some very simple games and....

in 2005 I discovered C#. I immediately fell in love with the language and .net platform, and programming in general - now I can't imagine doing anything else for a living.

Axarydax
A: 

As a teacher, most of my students first experiences in programming are in my classes. So they are first introduced to Python followed by Java in the more advanced classes.

Unfortunately, in the high school setting, Java pretty much reigns supreme as that is what the A.P. test uses. Typically for kids who have experience before they reach me it's in the web realm (html/javascript/very basic PHP), the exception being BASIC on their calculators. There will of course always be the stereotypical self-proclaimed hacker here and there, the kind that teaches themselves C/C++ and so on.

Typically, in this day and age, one of the popular high-level interpreted/byte-compiled languages are the first language of choice.

tanis
+15  A: 

Reluctantly 23 here :) So here's my experience as young programmer chix0rz:

So let's start with my dad (henceforth known as daddums, dadly, or old man scowl face), since he really got me interested in programming in the first place. He earned a living in the military fixing aircraft, but after 15 years, he'd gone as far as possible as a mechanic, and the work was too routine to make work worthwhile anymore.

So he went looking for new experiences, something exciting, challenging, fun, and remarkable -- gave up pretty quickly on that, settled for computer programming instead. I'm not really sure what prompted programming out of all other careers, but I remember MS Office 97 was all the rage at the time and my dad had a knack for hacking Excel macros. That seemed as good a reason as any, so he went to school and eventually earned a BS in computer science.

I remember him coming home with programming books and showing me finished homework assignments. The very first was a VB5 app whose awesomeness rivaled that of Gmail, Crysis, and the Large Hadron Collider combined -- a VB5 winform app showing a square. You click on the square, it turns into a circle; click on the circle, it turns back into a square. AMAZING!!

I'd always taken it for granted that software "exists", but never really thought about where it came from. So it blew my mind to see a completely novel, original application which didn't exist anywhere else in the universe -- cool!

After the experience, I'd sit and watch my dad finish his homework assignments. And when he left for work, I picked his books and went page by page, copying every example from page to screen and picking up things along the way. Writing code eventually became a hobby, spiraled out of control and became a career.

My first "real" program used a timer, a label control, and clever use of the Left, Right, and Mid functions to spell swear words char by char on screen.

I'm still coding for fun, except writing more sophisticated programs. The latest one spells swear words that fly around in 3D using DirectX.

Juliet
You should look into writing code to put swear words on sidewalks. http://www.wired.com/politics/onlinerights/news/2007/04/kinberg_0410
Kevin Panko
Swear words are a great motivator for novice programmers, and a great byproduct of advanced ones.
Gregg Lind
I was so inspired by your answer, I blogged a bit about it... http://writeonly.wordpress.com/2010/03/22/you-know-for-kids/
Gregg Lind
Yes, I always swear by my own code ;-)
Chris O
+1  A: 

Well I'm only 25 for a few more days so I better reply while I still can. A friend of mine made some games in QBasic when we were 6 and I was fascinated! My family was poor though and it was several years before I could get my hands on a computer. I suppose I was about twelve when I finally got a hand me down and started working with chipmonk basic (which I'm pretty sure is dead now). After about a year I convinced my dad that buying the education edition of Code Warrior was a worthy investment. It came with a lot of books on several languages and frameworks and I poured through them all. Before highschool was over I knew C, C++, PHP and some other web languages. I should point out that my motivation for doing all this was always video games.

In college I worked with guys who's dads were programmers. They were good at it most of the time but it seems to me that they lacked the passion for programming that I had. For instance I remember being on a project where there were about 20 files and and my two partners (both of whom had programmer fathers) were blown away by the size. Of course I had been working on larger projects by myself as a teenager so I wasn't as impressed. I guess what I'm trying to say is that forcing somebody to be a programmer (or anything) is a bad idea. If you just want to help someone who wants to be a programmer I would suggest starting with PHP and HTML since they're just so simple. On the other hand C is the cornerstone of programming so that might be a good starting place too.

Peter
+2  A: 

When I was a kid, about 10 or so, we had this program at school. It was a little turtle in the middle of a screen. You could type into the terminal simple commands which made the turtle move around. Eg you could type "FD 100" this would move the turtle 100 pixels and draw a line. You could do other commands "PU" for Pen up which stopped the line while you move somewhere.

Now we were given work sheets with a big ol list of commands to type in (basically the output was stars and things like that)

Within about 20 minutes I wasnt even looking or caring for the sheet. I was just trying to make this turtle write my name. Once I could write my name I was trying to write my friends names, then houses and so on and so forth... To the point where I basically got into trouble for not working to the sheet. Shame. I was expressing my creativity :)

A couple of years later my folks bought me my first pc. I started messing with HTML as soon as I was online... My interest continued through secondary school, though there was little I could do on programming there. Then off to college. After college (I took A Level IT and did out of hours classes on programming) I just took a job as I diddnt want all that student debt... I was working as a techie for a manufacturing firm who had bespoke ERP software. I was very keen to look at the code for this and things just went from there...

So yeah. I diddn't get into programming or have it pushed on me as such. Its just something I picked up pretty much on my own from a young age :)

If you are interested, the program was called "LOGO" you can find further information here; http://el.media.mit.edu/Logo-foundation/index.html

Pace
LOGO <3. We ended up writing Arkanoid in Logo at school.
Pavel Shved
That's what schools are for: suppressing creativity.
slacker
+2  A: 

I'm 19, and I got into programming at 17. I had always kind of wanted to try programming, but I didn't really get into until I had to write a TI-BASIC program for school. The Trigonometry class at my high school does a rocketry event every year, and our group had to build two theodolites to measure how high a rocket went. So I had to make a calculator program to do all the calculations quickly on launch day.

After that I tried learning C++, but the book I had confused me with Object Oriented Programming. Luckily my mom had a couple old C books laying around; C Primer Plus 1st Edtion and another book, both from 1991. It was funny how the books talked about ANSI C as being brand new. After about 6 months of using C, my high school set me up with an internship my senior year as a Java programmer. At the time, I didn't even know Java, so for my first 3 or 4 weeks (part time) I sat at my desk and read a huge Java Book. After learning OOP from Java I finished learning C++, and since then I've learned Python and PHP.

Edit: I'm currently in college, and I took Intro to Computer Science last semester. The class taught Java, which I work with everyday. So I mostly browsed Slashdot the whole class. Also, I ended up with a professor who has been teaching his whole life, and had no real world programming experience. And he was really bad at it too.

jonescb
A: 

I'm 22. I started with QBASIC, introduced by my father, who does programming and computer support for a living. I would not advise anyone else to start with QBASIC, though the PLAY command was fun (can't think of another language with a music feature that easy to try). :)

Since then, I've done JavaScript, C++, C, Java, "educational" assembly, Smalltalk, Matlab, C#, Python, and Verilog (beginning sort of in that order).

Matthew Flaschen
+4  A: 

Hi,

My Father bought me a V-Tech learning computer for my 9th birthday. Beside all the boring quizzes in it, it also had a very basic BASIC interpreter one could use. I did because I had nothing else to do. I quickly realized how much fun programming is, and spend most of my time coding BASIC. (They kindly placed a BASIC tutorial in the manual)

The next step was the ancient Intel-286 PC my aunt gave me. Again, it could only run boring games on the monochrome display. Not much fun. While digging around, I found Microsofts QBASIC and fell in love with it. I could do so much more then my V-Tech thingy and spend most of the time coding boring text adventures until I realized I can do "real" graphics (By reading the famous bannana.bas source).

Sadly, my mother wanted me to go outside and socialize with all those non-nerdy kids and limited my "Computer Time" to two hours a day. So I had to find other ways to spend actually more time with all this programming thing. So I bought books and read them. In the retrospective, it was a good thing that my mother limited the time as it caused me to read books.

I never had friends doing "computer stuff" at this time, but someone gave me a copy of Visual Basic 5 (I got a way better machine before, thanks dad!) and out of the sudden, I could do Buttons, Windows and all those nice things. As my "Computer Time" was still limited I read many Visual Basic books and coded a simple game as my last Visual Basic project.

And now the funny part begins. I wanted to have a website for my game and build it with front page. But I wanted the uber-cool effects on my website everyone had those days. But I had absolutely no JavaScript knowledge. So I decided to buy a book... In my cluelessness I bought a "Java" book instead of "JavaScript". I read a few chapters and realized that was not what I wanted but noticed its awesomeness and learned Java.

It was a hard time with all those OOP stuff. I remember reading the chapter about Polymorphism serveral times because I did not understand it. Fun times. :-) I dug into C++ later because all those bad-ass games where written in it. But I eventually dropped it later. I stayed with Java, read many (and some bad) books.

I cannot remember in detail how I touched all the other stuff I learned until now (I'm 24 ATM) but that is my "how it began" story. I do not have any degree in CS, still read many books and try to learn as much as possible. I got employed as a developer 5 years ago for a german startup because of my skills and advanced to a "Senior Backend Developer". All based on self-tought skills. So, it is possible to start a career that way.

Beside my own story, I think, with enough nerdiness, kids will find out what is fun for them and will choose programming if you, as parents, allow them to.

Malax
Being forced to read books about as much as actually coding in the early days is a big help, I think..
PP
I second that. But I found this whole Internet thingy very helpful. ;-) Sadly, I had no Internet at home (Way to expensive back then) that time. I could imagine that this is a booster too.
Malax
A: 

Speaking from the Daddy's point of view .... My daughter is 5 and I'm beginning to teach her the basics of programming. I started teaching her basic boolean math ( simple stuff like comparing number sizes and whether things were equal ) a little after 4 ... once she got the hold of that It was easy to introduce if/else statements. This is all on paper now but like her daddy she WILL learn to love programming ... or at the very least she will have excellent math skills when she is a bit older.

Christopher Dancy
+2  A: 

I'm 19. Tried some C (or pascal, can't remember) when I was 11, but didn't really do well. Think I was able to print a multiplication table or something like that. Tried C++ when I was 14-15, but failed quite fast. Tried some scripting languages, but didn't really like it. Then I picked up C again when I was 17, and finally I "cracked the code" after watching some Stanford lessons on YouTube. Having a basic grasp of asm (and memory) really helped. :P

Maister
+1  A: 

Being 26, and coming into programming late, I hope I can offer some suggestions. I got into programming in college not because of a class - but because the professor needed a student assistant. I also took a computer camp in HS and learned HTML. This ties into reason number 2.

  1. If they can make money at it, they'll learn it.
  2. If they can impress their friends, they'll learn it.

I would also add that if you start them with something, like say a Blog/Livejournal to edit, or developing Apps for the iPhone or Droid - that can motivate them quick.

Esp. if you throw in a phone for motivation.

-S!

Stephen Furlani
I don't like your approach. I code because i love that i can do almost anything i can imagine with it. Throwing in incentives is taking the essentials out of it. If you have an incentive, you will go for anything that works but being passionate about it encourages you to constantly review your code and make it top-notch-kick-ass.
jwandborg
A: 

Started when i was 19. Lost previous job and just like that - decided to try programming.

I think start is still in progress and I will never become a programmer or I will instantly stop being one right when I'll admit to myself that I've become.


There is a lot of discussion about what path you would steer your children if you wanted them to learn programming.

From my experience - You just don't steer at all and yet provide possibility to gain interest!

While people used to joke a bit about me, that I'll grow up and work at Microsoft as a programmer, fact is - i didn't code at all my whole childhood (i was just an avid gamer).

Instead - I wanted to become a musician. And I'm sure that if my parents would force me into programming in any way, chances that i would play guitar now would be much greater.

Arnis L.
+1  A: 

I'm 26 and started programming about 9 years ago. My first language was Perl, after short time I started coding simple web apps in PHP & Javascript. Then I felt that I like programming & IT stuff and I continued my work as professional programmer. Now I can code Java, C#, PL/SQL, PHP, C... I think I speak "most fluently" Java at the moment :)

I think that learning some new language isn't a big deal, bigger deal is to learn right programming habits & best practices, experiences, readable code, do code review etc..

Also its important to be very adaptive for new technologies and languages these days.

+1  A: 

I'm 23 and I did not start programming until college. I had some exposure to programming during high school, while I was part of our robotics club, but it was very simple stuff and I never actually wrote any code.

Originally I was an electrical engineering major (as a direct result of my participation in the robotics club). I took an Intro to C++ class my first semester at university and absolutely loved it; this class cured me of my electrical engineering insanity (five semesters of physics!). Unlike physics and calculus, programming and logic comes easy to me. I have deeply enjoyed my time spent programming and developing ever since.

Matthew Jones
+4  A: 

I am 19 years old, my 20'th birthday is in October.

Both my parents are teachers, none of them know barely anything about a computer beyond utilising it. None of my friends knew how to program.

So, when i was 14 i wanted to learn X?HTML because i wanted to have my own homepage. After some Google:ing i found W3Schools, which I am happy to see that many other found as it is the # 1 site i recommend to those who wants to learn X?HTML.

After about 4 months i got tired of plain X?HTML and wanted a guestbook for my homepage. I walked through the guide at W3Schools/PHP and some other random guestbook how-to.

After that i continued on W3Schools with very basic JavaScript and basic SQL.

  1. In March 2008 i started to work for an online youth community where I learned more complex JavaScript, jQuery, SQL, regular expressions and PHP programming according to the MVC model.

  2. In June 2009 i left my position at the youth community when i got a job as a web developer on a communications agency in Stockholm, Sweden. My skills in time estimation has been hardly tested with different grades of results since.


I have never been "advised" to do anything. I have been advised to continue school, but i didn't. I only went to second year in gymnasium.

I've also learned Photoshop and aquired skills in server administration during these years.

Planning is guessing

jwandborg
planning isn't guessing... planning is acquiring prerequisite knowledge so you can do the stuff you want to do in life. Doctors go to medical school, lawyers go to law school, people who want to work at McDonalds go to... well they don't really do anything.-1 for not knowing that
advs89
I think you put another meaning in the word "Planning" than i do. The meaning i put in the word "Planning" was along the lines of >making time estimates<.
jwandborg
ok you can have your point back
advs89
(not that it matters on a community wiki)
advs89
I´m glad we sorted it out :)
jwandborg
+1 for regex on X?HTML. :-)
Platinum Azure
+3  A: 

My progression as a programmer went like so:

I learned Logo when I was really young. Then the cool thing was to have your own website so I got a tripod website and learned HTML. After that, my father wanted me to learn Visual Basic with him, so I went and took VB6 courses with him. This was about 1998, if I remember correctly. I thought programming was the hokey-est thing in the world. So I stopped.

12th grade I took a programming course, just because I had to. It was a Java based programming course and everyone was required to have a semester of Computer Science before they graduated, so of course I waited until my last semester. At this point in time I was planning on being a math major, because I loved mathematics. As I sat down to do all the assignments (he gave them all to us early), I found myself wanting to complete the next one, and then the next one, and then the next one... until I was done with the Computer Programming I assignments within just a few weeks. I loved it and couldn't get enough. The next Fall I started at school as a double major in Computer Science and Mathematics. My first semester we went over Internet front-end design (javascript, html, css, etc) and C++ ideas like pointers, linked-lists, and some other concepts. And in the spring it was assembly and data structures. Through all of this I still preferred java and considered it to be my "first language."

After that spring, I learned Python. I don't remember exactly why I learned Python, but I learned it. It became my favorite language. I worked with it all summer and learned every little thing I could about it. Anything I learned in C++, I learned how I could possibly do it in Python, usually looking to this website as a reference. From there I learned many other new ideas and concepts between classes and learning outside of class on my own.

Now I try to keep my arsenal filled with the ability to program in Python, C++, Ruby, Java, and then PHP and jQuery for web design (although I use RoR and django, too). I try to be well-versed in web design, database administration, networking, and applied cryptography. I'm still really young, though, so I still consider myself to be "starting" programming.

I was pretty much steered into this concept by my father at a young age with VB and him wanting to program a lot. I was ungrateful at first but now I'm very thankful that he did so, because I think it's led me down a very fun path for life.

ashays
+1 for mentioning Python.
George Edison
A: 

I will tell you my experience, yes i started coding in uni, but before you stop reading what i have to say, please bear with me.

My favourite subject in high school was math, I went to high school in Israel where math is taught very much in depth, so by the time I graduated from high school I basically completed the first year math - calculus, trig, analytical geometry. The component that I loved in math was PROBLEM SOLVING. Naturally when I went to university, my stepfather steered or advised (or whatever you wish to call it) me to try programming, and the very much same aspect appealed to me there as well.

The point of the story, your kid does have to have an aptitude for solving problems, staying up late and working hard until something is done and they have to enjoy it. If they don't, you can't make them. If your kid shows any signs of being into that kind of stuff, I would steer them into html/css/javascript to make a simple web page. From there, the interest will grow.

but better yet, why would you want to steer them into this field? coding isn't as lucrative as it used to be, especially with the outsourcing trend. I would go to engineering if i were to do it all over again. similar fields, and they make more.

gnomixa
Actually I don't have any children - but one day I might - and I've thought about my own experiences that have led me to where I am; but times have changed and the available entry points into software development have changed: hence the desire to find out more modern "this is how I started" stories.
PP
A: 

My 18-year-old son has played with SimpleBasic, the free Visual Studio (VB mostly, some C#), and with programming his TI calculator. He's going to school for Engineering in the fall and has no interest in becoming a programmer like his old man.

DaveE
A: 

I've begun programming at various different points in my life. When I was in elementary school there was an advanced placement program and on some days we were allowed to play with LOGO. Then as a junior in high school I took Intro Programming. That was on horribly out of date IBM PS/2 computers running QBasic off two 3.5 floppy drives. Meanwhile the AP programming class got to play around on real computers and play Unreal Tournament. The teacher would assign 1 problem a day from the book. I would come in raise my hand to indicate that I was done with the days assignment, the teacher would verify it, then I would go about teaching myself how to really program by writing a 2 player Chess program with an IBM Extended ASCII board. Somehow this did not run away from programming and took the AP class to relearn everything except this time in C (another boring year) and I went to college to get my CS degree.

Robert Davis
+1  A: 

I'm 25 (and 78 months).... I was introduced to programming basic in a 6th grade course. It was neat. Then I started playing with the TI 80(?) in 7 th grade. I'd always had an affinity for computers but not a lot of access. If I couldn't put a game on it, I didn't care. Then after high school my room mate showed me what the insides of a computer were and I understood. Then through various male ... companions, I learned more about computers and Linux, even prompting me to take an intro course at community college. A ... Friend of mine introduced me to Perl and that was it. I started writing code. The web intrigued me for it's instant gratification and pretty colors. Eventually the challenge of keeping state in a stateless environment sealed the deal. Unfortunately, after that first intro course, I was always a step ahead of college, so only ended up with an AAS in Comp Tech.

(from my iPhone, so excuse the lack of paragraphs)

Elizabeth Buckwalter
lol, +1 for `(and 78 months)`
RCIX
+2  A: 

I first discovered you could do more with a computer than play games when I was like 12 or 13. (I'm 19 now btw)

My brother had randomly thrown a bunch of his junk in my room. Well, along with that junk was some very basic HTML tutorials. I looked at them and read them and was amazed. Then I started trying to do this on my computer and it worked! Oh joy!

I Played with websites for a few weeks or months and then I discovered .bat files. How cool. You can make your computer do stuff with text. Of course, I was one of those silly .bat virus writers, but it was still cool (and the only thing I infected were pre-infected windows 95 computers that basically didn't work anyway)

Then, I went searching for something to let me do some sorta graphics. I ended up finding out what BASIC is. I first looked at Liberty Basic and then I got tired of the licensing nags and of not being able to create an exe, so I went hunting for others. I then found DarkBasic. I actually learned programming from this language and wrote a few interesting projects like a media player and a (very crappy) interpreter.

DarkBasic was capable of extension by C++ plugins. So I tried to learn C++ on and off to write a plugin. Well, later I discovered some BasicToC translator and used it to learn how to do certain things and to do more with C/++. Then I found some really simple bootloader + assembly tutorial and was hooked. Making your own OS was awesome! I then downloaded Turbo C (the only good 16bit compiler I could find) and wrote my first C program/OS that did something half way cool. Then, I began reading more and more on C and learned structs and all that and decided my OS was really crappy code. So I rewrote it and instead used gcc and made a 32bit OS. And so on and so on...

Earlz
And, in 15 years, you'll have the next windows ;)
RCIX
Actually, make that 25 years
Luke101
+1  A: 

I'm 20:

At around age 4 or 5 my dad taught me how to use MSDOS to start games like Wolfenstein 3d and Jill of the Jungle (which involved the CD and DIR commands). Started reading HTML books around the age of 8 - javascript shortly thereafter (not very deep into it though at that point). I made a few attempts at learning Java, but the book I was trying to learn from was badly written (looking back at it now) and turned me off to the entire language. Around 13 or 14 I found a copy of VB1 (for DOS) on the internet which prompted me to buy an academic copy of VB.net (this was before all of Microsoft's dev tools became practically free). I bought a couple VB books and "learned" visual basic (as best I could with no formal training). Learned some C# a little bit after and have been doing personal projects (attempts at games, some personal automation stuff, etc.) with it ever since.

As for the effect of the aforementioned "training," I took a VB class ("intro. to BASIC programming") my Junior year of high school (it was a prerequisite that you be a junior) and was miles ahead of all of the other students (I finished most of the assignments before the teacher finished explaining them orally) and then took AP Computer Science my Senior year and got a 5/5 on the AP test. (which exempted me from my first semester of freshman programming in college). I've since taken two programming classes in college and am STILL miles ahead of everyone else. (it's community college, though, so I'm sure when I transfer to the major university I plan to attend - things will change)

Long story short: if you plan to major in CS and are still young, getting a head start on programming is a very good idea. If you learn by reading books, you're not likely to learn any bad habits (which would be the one reason I can think of to not start learning on your own) and it will give you lots of free time in college to focus on harder stuff... like vector calculus and differential equations...

Also, if you're looking for something fun to do that helps you learn OOP concepts, Robocode is a pretty cool way to go.

(also I realize there are lots of comma splices in this but I didn't have a lot of time to proofread)

advs89
+1  A: 

I'm 23 (Holy Dinah! 23? Where did years 19-22 go?)

Like @Adam, my earliest exposure to computers was through DOS games. Years later (around age 12) I was first exposed to programming, in the form of a couple of old 486's in the corner of my 6th grade classroom that ran QBasic. Around that time I also jumped into the realm of HTML (geocities! annoying background music! GIFs!).

After that, my interest in computers somewhat stagnated for a while, although i did take some of the computer-based option courses in juniour high, I was never really interested in the material.

In high school, I was interested in some of the programming options they offered, but I couldn't be bothered to take the intro course(s) that were prerequisites. So instead I took all the auto shop I could and became a total gearhead, and after graduation ended up as an apprentice mechanic.

I never really found that work fulfilling, however, so I began looking at changing direction and going the post-secondary route. What led me to computer science was, unexpectedly, my gearhead tendencies. I was looking at converting a car to fuel injection, and was searching for cheap, universal fuel injection controllers. That's when I stumbled upon the MegaSquirt project, which is best described as an open-source fuel computer, meaning that the total cost was simply the materials needed to build it, a PCB, and a pre-programmed microprocessor (a motorola/freescale M68000 variant).

What tipped me towards computers and programming is that i found myself more interested in the firmware that made the controller tick than anything else. Being open source, the source code was available online, although the 68000 assembly may as well have been greek to me at the time, I was hooked on the desire to know how it worked.

I enrolled in the computer science program and the rest is history (remarkably, the chip used in my first two low-level computing courses was the M68000!).

Anyways, I guess the point I'm trying to make in this long, convoluted narrative is that if you want to be a programmer, programming will find you eventually.

t_scho
+2  A: 

I am 25. Everyone around me (except for my mother) always assumed I would follow in my father's footsteps and become a programmer (my mom wanted me to be come a diplomat - go figure). What they also assumed was that I would also go through the whole academic process up to a Ph.D.

Now, the thing is that I was never pushed to do anything. Something sparked my interest - I believe it was the program that my dad wrote when I was about 7 or 8 which required me to do a number of simple computations to get a "success" at the end. I remember my dad showing me after that how to write a small program which acted somewhat like the bios password for a very very old laptop (I was 9 or 10 and I used to play 3d tetris on it). He also tried showing me some other things - I liked the idea of programming a lot and decided that was going to be my career, but as far as I can remember, it was never something I spent my free time on.

However, since I was interested, and since I had decided by the time I was in 5th grade that I would become a programmer, I did my best in middle & high school to follow the programming classes and learn the basics of programming (but, alas, not of how-computers-work - that came only later, much later). This was a success. My dad left me to my own devices so I also tried all the artsy/sciency things that high school had to offer - it was just that I was always better at the silly programming tasks than at the silly physics or English or history tasks. Therefore nothing really changed, I was still going to be a programmer. Also, it was rather cool to be the one person in the class who was good at maths and programming. By the time I was in 12th grade I was learning some basic data structures and algorithms and attempting some ACM-competition like problems. I was (and probably never will be) a pro in ACM style problems, but it did teach me several things.

College was a different story. I went into a highly theoretical programme - I didn't know this at the time. I liked theory for a while (and by theory I mean all sorts of strange maths, bool algebras, lots and lots of automata theory etc); I kept at my ACM-like problems and I kept doing some simple practical things (mostly php/html/javascript stuff). The practical courses were few and far between and usually so simple I could ace them with no problems. This got me really annoyed by the 3rd year when I decided it was time to get a job or I would never do anything I liked when I graduated (php wasn't my thing). I went on with school whilst being more and more annoyed with it - I ended up finishing my masters a month ago but it was painful and agonizing and I hated almost every minute of it. Luckily though I was able to work full time - that got me through.

So I started working - and lo and behold that's when it REALLY hit me how fun programming really was. No more school projects, or ACM-style problems - which, although interesting, are really not that glamorous. Learning about data structures (for real, not some generic [structure] you know you have to use for problem [X]) and algorithms (n^2 just doesn't cut it in the real world like in the academic one) and concurrency (ha! there was never concurrency before I started working) and finding solutions to problems is just something real, palpable. I was like a sponge: I've learnt more in 2 and a half years than in the previous 8 combined (having someone to learn from was probably what did it). I think what drives me is the knowledge that I helped write software which is used by people; or, on another project, software which I am confident will end up changing the world. Also - the idea of how much there is still to learn. Actually that's a concept I can't really even fully grasp - how much there is still to learn.

laura
A: 

I'm a 35 year old female, and I started programming when I was 4 years old on an Apple II (http://en.wikipedia.org/wiki/Apple_II_series) My dad is a teacher and started my brother and I as learning early as possible. We even had a family business ~1983 where my dad taught BASIC to adults; I assisted in his classes at times. I entered science fairs at school with computer projects, won awards, and really enjoyed it. Around the time the Apple started going with a GUI, I lost interest for other things... sports mostly. However, I never stopped using the computer.

When the Internet started to become more common, especially when graphical interfaces were born, is when I regained interest in using computers. I had finally figured out that that was what I wanted to do.

After I grew out of being young a wreckless, I put myself through college, where I thrived in my courses and finally had found a career, not just a job.

All the time, my father didn't tell me I had to program, or anything of the sort. He even supported me when I chose to take a break from education (which I'm sure killed him). But I found my way back, and aspire to make my little side-work project into a full-blown .NET development business. I strive to become recognizable in the community as well, but am having a hard time finding a balance between that, starting my business, and my daughter.

I am very thankful that my father pushed me and taught me many things from a young age. I am also doing the same for my daughter, who will turn 3 in a month. She can already use a laptop mousepad to play her games, can navigate through YouTube herself, and is a general information sponge. I don't think that anything bad can come from being taught anything. Even if you don't like it, you learn something, right?

Learning how you, as a person, learns, is one of the most important life skills to obtain. :)

TheGeekYouNeed
Wow. That a 3 year old can navigate youtube is kind of... frightening! Imagine all the trouble she could get into if she picks the wrong video...
RCIX
+1  A: 

Absolutely steer them clear of PHP, Java and .NET. Have them learn C. That's the best starter for the last 30+ years.

Here's the problem I see in students who are coming out of school now - the local tech is teaching PHP, Java and .NET. I love PHP and .NET, but the students don't have to learn anything useful in doing that stuff. When I was educated, I learned C and the students who made it through had a heck of a foundation. The students I see now are useless and take months or years of retraining (if I considered hiring them). The cream of the crop are still there, but there are fewer.

Anyone who can do C well has earned the right to practice in the industry.

Erick
A common thread would appear to be people who entered programming through any route, eventually wondering how low they could go, reaching C (maybe even an assembler boot loader). After that they can program at a higher level with a good understanding of what is going on underneath.
PP
+1  A: 

I am 20 right now and started learning to program when I was 18. When I just started, I used python because I was told it was easiest to learn. I would have to agree with the people who told me that. Now I program in C, C++, python, and several other languages and python is still my go-to language if I need to write a program that does not necessarily need to be very fast and I need it done without a headache. The visual package was also a plus. When I was first learning, I found that being able to see some results (like motion) rather than numerical or verbal results was helpful and much more gratifying. I even wrote my first 3D game less than a month after I started learning.

Tar9etPractice
A: 

I took a high school course in programming in Qbasic and just experimented from there. Overall, I'm actually a scrub at programming. I'm in 4th year uni and I haven't done much in my spare time. Almost all of my learning is from class assignments. However, I've never failed to program anything thats been tossed at me which I can't say so for a lot of people in my school. I'm disappointed how a 9 year old can be a more experienced programmer than myself.

C is really the only language I'm familiar with. most of my BASIC is forgotten (though thats not too significant) and I've touched upon java (made an applet chess game) and I'm doing some verilog programming at school.

Overall, I'm mediocre and know enough to get by.

alex
A: 

I'm currently 24. Was initially interested in programming mainly because of reverse engineering. This world always fascinated me and therefore i started learning assembly and C++. This is how i got into the game and now this is actually my profession.

Haven't regretted anything, if i may say :)

hthought
A: 

I'm 26, a little too old for the question... But I'll answer anyway.

I started programming at around 10 years old with a programmable BASIC organizer. I used to go to the library to pick up books on BASIC and copy them line for line without understanding everything.

From there, I did some Pascal and Visual Basic in High School and moved on to C/C++ in University. My first job was in Java and now I'm working in Ruby.

My advice for getting children into programming is to start young and make it fun. LEGO mindstorm seems like a great example of a way to practice programming skills in a fun and interesting way. iPhone/Droid development would be a good next step.

AaronThomson
+1  A: 

Ugh, I have one comment: Anything that your kid wants to learn, let them explore. Hard work and a lot of time yields a programmer, through and through. There are no shortcuts, and even youngsters have to put a lot of time into learning software development to make it worthwhile.

Personally I dislike these threads - they're interesting case studies, absolutely. But the most important thing you can do in any subject is spend time with it and develop your own goals, and that's not going to change regardless of age, amount of free time, or even subject matter.

Walt W
A: 

Reading forums like those at Sun I'm under the impression that most kids these days try to "learn" by posting their homework assignments verbatim on some website and expecting to get a fully worked out solution emailed to them to hand in as their own.

I'd like to think those are in the minority and the silent majority are doing much the same thing we did, work through text books and tutorials for whatever programming language their school chooses as a basis for their programming classes. But the cynic in me sees such a massive increase in that behaviour he's starting to suspect that silent majority isn't a majority at all and that posting your homework assignments is the way kids are taught in schools as being the proper way to learn.

jwenting
+1  A: 

Not sure if I'm considered young, but I'm 25, turning 26 this year.

Started out with QBasic and books that my dad used to have about personal computers, showing the different ones from the 80s like the Commodore 64 (we used to have a Commodore 64 but I only used it for games and not programming).

I then moved onto using Visual Basic 4.0, learning it by using their Farenheit to Celcius converter tutorial, which showed me the basics of VB.

After that I tried learning C and C++ but didn't learn as much as I did with VB and the loads of MSDN and Technet CDs my dad had got over the years, and VB tutorials. I was using the Windows API via VB to play around and didn't really learn anything like Object Orientation. They were all simple standalone apps that just read/write to line based text files, and later on to random access text files.

I then tried my hand at plain HTML, Javascript and CSS.

That was pretty much all in high school.

I went to university and did my 3 year BSc, and got into Java, mostly what I learned was in my spare time reading the Java Tutorials, but we did cover it in university. We did Scheme in 1st year, C in 2nd year as well as Java and OO if I remember right, and more Java in 3rd year.

After a year doing my Honours in Computer Science, I then went onto becoming a programmer at a company that does Java and .NET projects (more .NET these days). I've learned now a lot more about Java and programming than I ever had before: design patterns, application servers, source control, different libraries that are out there, EJB, Spring, Hibernate, JPA, HTML, Javascript, CSS, XML, XSLT, etc etc etc.

You hardly learn how to program until you're working as a programmer, in my experience at least.

Kids these days probably learn from the internet through tutorials, and instructional videos if they have broadband, but the best way to learn is by not just reading the tutorials and literature, nor doing courses, but actually trying it out yourself with/without the help of others. And discussing it too - forums.

jamiebarrow
actually, I think most programmers I know, and techies, got into computers and programming because they liked playing games...
jamiebarrow
and even today, I still learn by reading and discussing... internet tutorials and forums are a great source of information, hence the success of stackoverflow
jamiebarrow
I can safely say that my first real foray into programming began with hacking/modding a game, way back when :)
RCIX
+1  A: 

My cousin is in High School and being taught Free Pascal on Windows.
I had a good laugh when he told me. Pascal, the Undead, will bury us all.

ZJR
A: 

My interest in programming started in grade school when my father started learning HTML in his free time. Seeing him work with it got me interested so I began to teach myself.

My full blown interest in programming was because of video games. It seems a little embarassing now how narrow-minded I was; but if it wasn't for the silly notion that I thought making video games could be easy and done in a couple days I wouldn't have looked into programming much more. I currently attend MS&T for Comp E. and Comp Sci.

To sum it up: my father introduced me to programming, but it was a naieve dream to make video games that eventually led me to what will hopefully become a career.

Kyazr
+1  A: 

I am 14 years old. I discovered programming at the age of 7, when my dad gave me a book on HTML and JavaScript. I was fascinated, and immediately began to spend almost 12 hours a day coding web pages. This went on for about six months, when I discovered Visual Basic .NET. I tampered with that for a while too. Then, I figured out that you could use VB in web sites too, through ASP.NET.

By the time I was 9, I was thoroughly hooked onto programming - it was like a game to me. I would think up little mathematical problems and create programs to solve them. I had tried and learned many languages - among them, Java, C#, C/C++, and PHP. I liked them all, but VB was still my best friend. Sooner or later, I realized that VB didn't have the power or flexibility that I wanted in a language, so I stopped. For a long while. From when I was 10 to when I was 11, I didn't program. Why? I'm not entirely sure. Maybe it was because I didn't have the heart to keep learning new languages. Maybe it was because I wanted to be like the other kids.

Then, when I was 12, I started again, this time with Javascript and PHP, and a while later I began to explore things like AJAX and jQuery. I also tried some web design (as in, Photoshop), and was mildly successful, but for the most part it wasn't very appealing to me.

When I was 13, things were kind of blurry. I was in a business/tech program for middle school, with lots of homework, and not much time for programming. But when I did have time, I learned a bit of this and that, mainly C/C++.

When I turned 14, I got a Mac. (Before the debate begins, I think Macs and PCs are equally great machines that were created for different purposes.) With the Mac, I'm learning to make iPhone apps with Objective-C, which is proving to be a really fun experience.

(Note: Somehow, I also have friends.)

Debashis
+1 for `(Note: Somehow, I also have friends.)`
RCIX
Believed you up until the last line
Stranger
+1  A: 

15 years ago, at the ripe age of 10, my dad had a ratty old 386SX running (wait for it...) OS/2 Warp. I can't remember exactly how, (I think it might have had something to do with a game programming book that had been lying around the house), but somehow I mentioned to my dad that I wanted to learn programming. And so, I began coding in C++ on OS/2 Warp, at first using a convenience library my father had written (think something like MFC), but later moving on to deal with all the nitty-gritty API calls.

After that, I switched to C++ on MS-DOS, writing graphical things using SciTech's MGL with Watcom's C/C++ compiler, and generally having a time of it.

Following that, I went over to programming C++ on Windows 9x, and was struck by the similarity of the Win32 Windowing API to OS/2, which meant that learning the Win32 API was a cake walk.

I messed around with that for a while, before becoming acquainted with Linux (Red Hat 5, I believe it was), where I coded in (you guessed it) C/C++.

From there, during high school, I started teaching myself other languages: various web scripting languages, general-purpose scripting languages, languages like Java, and later C#/.NET... I've since had a lot of experience with various languages used in the industry today. I even managed to hack up a boot loader in assembler that initialised 32-bit protected mode on the x86 processor in my final year of high school, something which gave me quite an advantage when we had a low-level programming course in my third year of computer science at university.

Most times, people don't want to believe that anyone could've started coding C++ on an operating system most people haven't heard of at age 10, but that's their loss ;)

(My timeline may be a bit jumbled, but the general idea remains the same.)

slyfox
+1  A: 

Today I am 19, turning 20 relatively soon (June).

When I was a kid I played NeoPets, and on this game there were "guilds" I think, and I can't remember what they were for, but I remember that you could use HTML to set up a little page for it. So I started learning HTML. Formatting tags, whoa! Fancy backgrounds and hey -- what is this table thing!? Cool!

For Christmas I got a book on Javascript and started learning some of it, although I did skip a lot of it, I was quite young and hadn't really grown into the whole "programming" thing -- I just wanted to make alert boxes.

Later my dad asked me about C. I was like "C? You know when you open an EXE file in notepad and you get all those funky characters? I'm pretty sure that's C."

Yeah, I know. Don't laugh. So next Christmas I get this book on C. Still not that motivated yet (I was probably 9), though I did learn what a compiler did. Pointers were super hard at the time but I learned them, although the command line got boring, as I wasn't at the level of really solving problems yet -- it was just so much work to do simple things, and I didn't learn very much C. I just wanted to make "programs," as I understood them, which were windows with images and text and forms.

So I found VB6. "Form designer? Cool!" From there I started making little programs that would do my math homework. That is, write out all the work for me so I could copy it. Then I found the winsock control and started making little chat applications. I tried making an IRC clone but it turned out there was too much I didn't understand about protocols and the like. I wound up writing a full-blown script interpreter with functions, most of the VB6 library, winsock connections, dynamically creating windows, etc. It even had a nice debugging interface.

Then I started into PHP. I wound up jumping back and forth between PHP and VB6 a lot. I wrote a fansite with my friends for a band that gained quite a lot of use, and wrote a VB6 desktop application for fetching updates an the like.

Then I started doing C again, learned some 16 bit assembly, and about the same time, spent the next two years or so reading a lot about programming best practices, different concepts/paradigms/design patterns. I learned a bit of C++ but gave that up after a while. I started doing some development work for my friend's cousin and got to apply and polish a lot of the theoretical knowledge I had gained. Now I am getting into Python as well.

C and assembly taught me everything I know about how a computer works (by writing it, compiling to assembly, etc), VB6 taught me a lot about what could be done with a program and what kind of steps it took to create them. PHP and Python did the same things as VB6, but I'd have to say that all that time spent reading, and reading, and reading, really taught me "everything I know" -- clean code, DRY, SRP, OOP, etc etc etc -- now I just have to get out of "reading a lot of neat stuff" mode and get into "writing actual code" mode.

Hope this was the least bit interesting.

Carson Myers
If I were hiring I think you'd be hired!
PP
A: 

I'm 24. I started with TurboPascal at the college. I studied on myself at home PHP, HTML, JAVASCRIPT and then , after moving to the university, I learned C, C++, Scheme, Java, Python.

Now I develop in Java, PHP and whatever I need, I'm not binded to a particular program language.

LucaB
you're one of those fancy scripting languages that run as long as there's an interpreter for the host language :p ;)
RCIX
+4  A: 

I'm 4 and 1/2 years old. I started at 3 with embedded C programming when my Dora the Explorer play house started malfunctioning. My dad handed me a screwdriver and told me to see if I could figure it out.

I've since progressed to C++ and PERL and I'm currently trying to work around the parental filters that my parents have applied to the computer so I can access the Power Rangers site that my mum thinks is too grown up for me (although i need a booster seat to access the keyboard).

I hope to some day have fingers long enough to allow me to hit ctrl-alt-delete when the computer locks itself.

Paddy
Awesome answer!
ZachS
please upvote this
Stranger
+1  A: 

HyperCard and time to kill at the age of 10.

Toon Van Acker
A: 

I am 14 years old and I started programming in QuickBASIC (Age 8).
I think by Age 10 I moved to C and at 11, I moved to C++.
Right now, I personally program C#/WPF as it allows me to
get a much higher action per line of code.

I think what first got me started was XKCD as well as geekherocomics.

Like many others, I got started with attempting to make games
but I got out of that phase fairly quickly and started making desktop
applications. This is actually my first post on StackOverflow but I have been reading this site forever.

AKRamkumar
+2  A: 

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

  1. Early fascination and encouraging relatives
  2. Learned QBasic & Hex editors
  3. HTML, CSS, JavaScript
  4. College - Java, Linux, shell
  5. C#, NET, etc
StyxRiver
+1  A: 

Our local university starts noobs in one of 3 routes: BASIC, ADA or COBOL. They can then move on to C++/Java/VB/A web language After that you can move into some of the more modern languages and course based on the path desired:

  • databases
  • networking
  • e-commerce
  • techincal/science
jasonk
+1  A: 

Age 22. Started HTML in high school around 14. AP Computer Science with Java at 17. Majored in bio/psych in college. Learning C++ currently.

In terms of steering kids, I believe it's best to dip them into many fields as possible to gain a wider array of knowledge and outlook. From there, help the child find their passion. With passion and guidance, one will go further and faster, although their start might be slower.

Sagistic
A: 

I'm about 22.5 right now.

I started in high school (sophmore year) with my school's Visual Basic class. Pretty simple stuff; a friend and I were pretty good in the class so our teacher asked us to try to figure out how to make Space Invaders while the rest of the class made Frogger. It mostly worked too except we repeated loaded the images for the aliens instead of just referencing one image (major optimization). The next year, we has Computer Science AP (aka AP Java). Oh the wonderful Marine Biology Simulation and fishes. Senior year of college, I took web design and started on some ColdFusion projects for the teacher. (I might have mixed up senior and junior year). I also taught myself PHP at some point during a spring break and almost had a mostly working PHP/MySQL site for my track team, similar to Facebook, but before it became available outside a few Ivys.

Then I did the normalish compsci track in college. Learn C, take Data Structures, Computer Architecture, etc.

wag2639
+3  A: 

I'm actually 12 as well, and I have coded since I was... Hmm... I'd say 2nd grade, so thats, what? Seven? I have secretly signed up for many sites saying I was born in 1987 (ten years before my real birthday, making me 22 at the moment). I have been coding in HTML for as long as posible, and I never got any help of learning code. It was just, "Hmm... ⌘U. So I guess a <img> adds an image" or "Why do websites look so cool?" and google tells me about CSS.

I then got very sick of this dumb, HTML-only Apple hosting thing, so I switched over to some free web host until I got sick of that, along with no cPanel control, so then I went over to Hosting24, with unlimited disk space, transfer data, latest version of cPanel, and PHP4 and 5 mashed together. I currently run two websites, one is pretty simple and pointless, and the other one I created just a few days ago, so only a few people know about it. Hankweb (http://hankweb.com/) is the small and pointless site, and My Old Mistakes (http://myoldmistakes.com/) is the small and new site. I have high hopes for My Old Mistakes, and I am hoping it will become the next My Life Is Average or F- My Life.

I just started coding in C/Objective-C/iPhone-SDK in October, and I still have much to learn about the marvelous coding language. I always get my hopes up when I open XCode, because I always think I am going to make the worlds best app, and then when I finish the app, and think it is okay, I finally get the news that you can only publish iPhone apps if you are a registered developer, and then I get mad, and see what it takes to be a developer, and hope that someday I'll get to be one, and then somehow, for some reason, my XCode projects get deleted, and I don't have the applications anymore, but I don't care because I wouldn't be able to publish them anyways.

I have a jailbroken iPhone at the moment, and I do NOT think it was better than my blackberry. At least my blackberry could send and receive pictures.

Hankweb
+1  A: 

I'm 16. I started programming about 3 years ago, I had played the game Uplink, one too many times, and wanted to be a 1337 H4X0r. Anyway, in between sessions playing with John the Ripper, I began to read this book called Under The Radar, by Robert Young, that my Dad had gotten from work. It basically gave a general overview of how Red Hat came about. I began to get rather interested in Linux, so I nagged my dad, and he agreed to let me install Ubuntu on my mom's crappy old computer. Long story short, I began reading more about programming, skipped out on the H4X0r side of things (maybe in uni ;), and got addicted. I started with python, using gedit as my IDE :) Since then, I am now hacking with C, Python, and Scheme (doing SICP in my spare time).

xavieran
A: 

I started out fairly young. Decided the day i went to an Alcoa smelter and couldn't escape the fumes in the air, glasses you had to wear in the building, and showers in case there was a chemical spill. That was more than enough to push me into the first office job i was offered...

Jonathan
A: 

I started working in HTML when I was a kid. Maybe I was eleven (I'm seventeen now). I made tacky, awful websites full of flashing animated GIFs and scrolling text and those fancy DHTML fading garbage stuff, and then uploaded the whole mess to Geocities (RIP) and fancied them masterpieces.

Eventually, I started wondering about how websites worked, the dynamic kind. The then-nascent MySpace was the biggest mystery to me. My knowledge of HTML lent me nothing to understanding how the website changed for every user. The details here are fuzzy, but I somehow stumbled upon PHP. Probably from seeing it at the end of so many URLs back before SEO-friendly ones were in vogue. I downloaded the program and installed it and tried to follow the tutorials and make it render text in my browser, but just couldn't. I had no clue about servers. So I struggled for months, getting it to work only in the command line until I finally looked up something about running WAMP servers and downloaded Apache and MySQL. That's when it all started. I programmed anything and everything and learned all about SQL and server operation and such as that. This was a rather productive period (perhaps the only...) in my life.

I eventually branched out into Perl and Python, and found my way into more "programmerly" programming languages like C and Java and Pascal. I tried some assembly languages once...but to no avail. :( PHP is still the only formal language I can use really well.

I'd like to learn more, but it's so hard to find the time around high school and doing my art things. But programming is something I really enjoy doing, something I could make a career out of and something I can see myself doing years and years down the road even in spite of my aspirations to be come an artist.

Joe5150
+1  A: 

I'm 25, here's how my interest for programming started:

  • 1984: I was born.
  • 1986: My first NES game console (which doomed me to be an indoors geek)
  • 1996: My first personal computer, a Pentium
  • 1996 - 1997: My dad hated me because I always broke the computer doing my experiments, but that helped me learn
  • 1997 - 1999: I knew my way pretty good around the computer and started gaming there (Doom, Doom II, Wolfstein 3D, Duke Nukem I believe)
  • 1999: I was an expert Windows 95 / 98 user, I knew a lot of features and I could do a lot of things in MS-DOS (In junior high I chose computer class because I knew I'd ace it, and I did)
  • 2000 - 2002: My interest for programming started, up until then, computers told me what I could do with them, and I wanted to make computers do what I wanted them to
  • 2002: My first C++ "Hello World" program int main { cout << "Hello world!"; return 0; }, also C++ basics (loops and control structures)
  • 2003: C++ pointers and files, also data structures (I never got to study graphs though =()
  • 2004: Started learning C# and asp.net on my own, I made my first asp.net real world application as social service for my university, it was a success! Although it was really poorly coded.
  • 2004-2: Delphi, pascal, unix, as400, PHP, databases (loved databases, hated the rest)
  • 2005: Got really good with C# and asp.net, started experimenting with Windows Apps
  • 2006: They started teaching us the .net framework in school (although in VB, I asked the teacher if I could do my homework in C# and she said: NO! YOU GOTTA LEARN WHAT I TEACH YOU!) Also I learned a little bit of PROLOG, I thought it was fun
  • 2007 - 2009: First programming job C# and asp.net (also database managing / programming)
  • 2009: Second programming job C# and WPF (I'm currently here)

That's my timeline pretty much, I wonder if this will be similar to someone else my age?

EDIT:

And yes, I blame the NES.

Carlo
A: 

Thought I'd share after seeing kt and Juliet's story, I thought I'd share.

I have been dabbling in computers since being introduced to the joy of SkiFree on my father's office computer back in '93 at the ripe old age of 5. We had a few computers come in and out of the house (I recall we named them Fred (the brainless DOS box), Barnie (whom had Windows 3.1) and Dino (toy machine)), and though them I learnt how one could use DOS to launch applications, the intricasies of Windows 3.1 colourstyling (nothing like having your mother ask you to tell her how to revert the colour scheme from the highly colourful Red and Blue stylings), and wondering how the computer knew what was on those 5 1/2" floppy disks with Lemmings and whatnot.

Things really heated up in year 7, when I discovered Google through the class's library lessons with Netscape (circa 99). I thought it was the bees knees. Later the next year, at age 13, I was lucky enough to spend the last week of year 8 in a basic HTML course (as part of class breakup) using Word. That experience made me sit back and go 'This HTML stuff is so powerful that MS what people to use their baseline products to create internet content, but they broke it so badly (anyone who's use Word to make HTML pages knows this). Background: In primary school, I took extra math classes, read up on science at home, and was identified as being ahead of the class; being that as it was, I was placed into the 'extension' class in year 8. The highschool took special exception to those students who would otherwise be bored with the standard content of their classes, and placed them into 'extension' classes for Math, English and Science. For year 8 however, all the classes ran as one.

Back on track: due to an apptitude test I took (can't recall the name, but it was a test they gave back in the day for year 10 students entering year 11, I took it in year 8 and did exceptionally well in it), I was able to skip out on the P.E. classes (yes!) and create my own learning structure. Thus began my dive headfirst into self-taught HTML, Javascript and CSS; my foray into robotics, Tornament of Minds, and other such adventures. The teacher I 'reported' to, a very large influence on my life, recommended that when I was old enough*, I should apply to take a university course concurrently with my studies. This was in 2002, at 14. (* = socially I was much too young then, but when I was old enough, I could get in without worry (the bus to uni, the missing of classes, etc.)

Come year 12, I start a Java course at the university, concurrently with my full timetable of math, science, and IT courses, pass the Uni course, get accepted into the IT degree at 16 (before end of year exams and application processes) complete year 12 with a pretty high grade, and totter off into uni, expanding on my self-taught knowledge and getting into the good stuff (databases other than Access, java, C#, Artificial Intelligence, Flash, Poplog, assembly, low-level operating system structures, etc)

I completed my degree in '07 (started in '05), graduated with a year of industry experience under my belt, continued in grad role at the same place; and I'm now working in the hub of IT in Australia as a Software Consultant with an international software house, learning more everyday.

TL;DR: Girl plays SkiFree, turns into a programming geek/goddess.

glasnt
A: 

Well, it all started back in 7th grade. I went to a private school, so it was a pretty close knit community. The school had just redone their website, and I was learning HTML for some reason or another. I actually sparked the whole idea that students should build their respective classes' page.

So I built the 7th grade page, which had all kinds of 'neat' scripts (JavaScript) on it (like a trailing mouse cursor, onClick effects, etc. All were premade of course.)

Later, in 8th grade, I also did the class site. My computer teacher recognized my interest in programming and actually gave me a student disc for Visual Studio (2003, I believe it was.)

I didn't really get into any languages in Visual Studio, as it was a bit outside my comfort zone. All throughout highschool, however, I became interested in PHP/MySQL. I went on to [attempt] to write a small web based MMORPG. (Similar in style to Kingdom of Loathing, despite not knowing about KoL until after I had scrapped the project due to it being an unmaintainable mess.)

Now, in my first year of college, I have finally gotten to taste Visual Studio (2008, my how the years fly) using Visual Basic .NET. I've also dabbled a bit in Java using the NetBeans IDE (nothing fancy, a few sample projects.) Once I borrowed 'The C Programming Language' (K&R, you know the stuff!) and looked through some of the base Linux utilities, trying to make sense of them.

Right now I'm focused on VB.Net for studies, and Ruby(/Rails) for personal use. I've written some simple CSV parsing scripts for a friend, and I'm working on another gaming app in Rails.

I think the reason I wanted to program so badly is because my dad does it for a living. He definitely had some influence over the whole situation, buying me a LEGO Mindstorms kit when I was about 13.

I honestly feel that everyone, the younger the better, should learn to program. It used to be a necessary part of using a computer; and now we're conditioned to think that only trained professionals can program. Which just isn't true. I think anyone is capable of learning the basics of a simple scripting language, and I think it does greatly simplify lots of tasks.

I don't think everyone should make a career out of programming. I just think everyone should know how to write a simple for() loop in their favorite language :)

I just love being able to program. Knowing that with a little time and effort you can make a computer do anything is a great feeling. (OK, not anything, but you can make it do quite a bit)

I'm not the best programmer when it comes to 'best practices', but hey, that's what college is for!

Robbie
A: 

Well, some of the local youth actually started programming on microcontrollers, in the various hackerspaces around the area. This is extremely good to see.

Chris O
A: 
peachykeen
A: 

I learned Python in the summer from my brother, who happened to be a TA for a college intro to computer programming class, and actually gave me one of their assignments after just a few nights of him teaching me. When he returned to college, I incorporated programming into a few school projects. The ones I remember most was an animation I made using about 500 lines of ActionScript, and a videogame complete with a 2 songs that my dad helped me put together with an Atari and a keyboard. My dad also got a free copy of Flash through his work.

Later, I got some tools for Gameboy Development, and messed around for a while. Then a very generous friend gave me his Nintendo DS and I loaded Python and Linux onto it (Pretty amazing IMO), and programmed a few (simple, non-graphical) applications on it during road trips.

In the ninth grade, I got a TI84+ and taught myself TI-Basic during math class (what a horrible language, but I can't find any on-calc assemblers/compilers, and I can't find any development tools for 64-bit vista to roll my own on-calc assembler). I programmed common formulas like the quadratic equation, and scripts to find the equation of a line given N points. Then I programmed a few games on there (tic-tac-toe, "LineGame" (I don't know it's official name), and Tetris). And now, I'm working on a 3d-renderer. It's painfully slow, partially do to the dithering I have to do for the monochrome display.

Oh, and I also bought a PIC programmer, and wired it up to a speaker and lcd. It's been great for learning very low level programming and circuitry.

Wallacoloo
+1  A: 

I am currently 21, but started "programming" when I was 16 or 17. It started with a game rather than a specific language.

I was playing a game called Warcraft 3(very popular) that had a map editor. It was very powerful as it allowed custom maps and in order to make something cool you had to "code" Triggers that would fire given a certain condition, and do actions accordingly(For example: a unit enters a region - spawn some lighting effects, spawn another unit and order it to attack a base.)

It involved every bit of logic today that I am applying in real programming - loops, variables, if/then/else, and you had to do it efficiently otherwise your map would lag immensely and nobody would play it. As a bonus, If you knew some math you could make awesome special effects too using the game's engine without much work.

My dad first tried to get me into programming by giving me 2 HUGE books on Delphi, but he failed miserably as those just scared the crap out of me. If its enjoyable, its easy to get into programming. I loved Warcraft 3 to death and the map editor just made it that more awesome.

Dinoo
A: 

I am 25.

I had a good and high paying job at an MNC. I was however, not happy "owning" some module soo internal to a specific ERP's inter-operability.

I quit the job and joined a friend in his consulting startup. Had never used Linux, or written a Hello world in that area (web development in django) before. An year and a little bit more, not only have I done so much better financially, I am a pro at all levels now :)

Knowing what I am, I don't think I'd have learn't this much about software development, or the specific framework, or about business, or SEO, or ... merely out of "interest".

You have to jump into the water to learn to swim.

Lakshman Prasad
A: 

Right now, I'm 23 years old and this is my 4th year professionally programming.

My first encounter with anything beyond basic use of a PC was when I was in grade 2 or 3 (7 or 8 yo). It involved using a hex editor (MS-DOS' "debug.exe" to be precise) and a cheat guide to modify "Theme Park" save files (took me a few month to figure out generally how hex numbers worked, and that going past 7FFFFFFF would give me negative amounts of money).

During my seach for a hex editor, I stumbled upon QBASIC and Batch files, these were my first real programming experinces. I started off writing a basic DOS menu with batch files and making basic (pun not intended) maths programs in QBASIC. At this point I didn't really know what else I could do with it.

It wasn't until grade 8 (start of "high-school" here in Australia, we only have primary, grades 1-7, and high-school, grades 8-10/12) that I got into programming again, after discovering that MS Office came with VBA. I started to make some basic apps such as a clock with hands ticking around, calculators and such. Then in grade 11, we had our IT class had our first programming lessons and within just a few weeks, I had learned or figured out everything that my teacher was going to teach us (which was basically the extent of her knowledge AFAIK, she was primarily a PE teacher, but still gave me the basic concepts i required to progress). At this point I started looking at the binary data files included in games and started to reverse engineer the formats. I soon figured out "package" files for several games and even reverse engineered a compression format (which, several years later I discovered was a variation on the LZ77 method).

All this time (from at least grade 3), I had been enthralled with physics and wanted to get a degree in theoretical quantum physics, but towards then end of grade 11, I started to look into job opportunities and found there are basically none in Australia and few in the world. I hated the idea of applying for government grants or tracking down private investors for funding. I was lost as to what I wanted to do for a living (physics would still be great, but I do need to eat) and it was as I was working on my final assignment for IT for that year (make a game, it was meant to be a single person project and a simple game like snake, but myself and 2 other students convinced the teacher to let us make a 3d tank game together), that I realized that I enjoyed programming and could actually make a living from programming games, development tools and engines (up until this point, I had just seen the IT classes as a way of escaping any real work that I'd have to do in other subjects).

And that is basically the story of my self discovery of programming. I didn't mean to go into so much detail, but its so easy to just keep on typing. Though, I'll have to say, it would have been much easier if I found out that my dad actually knew how to program before I told him about my decision to program professionally (he's an electrical engineer, but knows c/c++ and even designed computer hardware at one point). Thanks for reading and I'm glad someone found it interesting enough to read this far.

Grant Peters
A: 

They use TrueBasic in 6th grade at a local Math & Science Magnet school in a "computer science" class that is more computer applications with a month or two of programming.

Brian Carlton
A: 

I started out programming in VB6 when I was probably 12-13 years old, not really sure why or how I got started but I just remember it being something I enjoyed doing (although nowadays I wouldn't even dream of doing an VB development)

I remember writing a custom web browser for me to use on my parents machine, all it did was use the IE rendering engine in a control but I added extra features that I'm utterly convinced I had invented LONG before Firefox et al came on the scene.

For example, my browser had an anonymous browsing mode so it wouldn't write your activity to the IE history log (so I could browse websites that your average teenage male would be looking at at that age without worrying about leaving a trace) and had a multi-search engine search box on the address bar.

This sparked me to continue my development endeavours and now I work in the IT industry doing Java development.

I think kids these days are spoilt for choice for development opportunity as there are so many platforms they can learn and develop for, advent of stuff like the iPhone and Android platform had probably given enough fuel for would-be developers to begin their programming career.

djhworld
A: 

Our school got a BBC Micro when I was 10. I hid away writing Logo programs, the coloured lines and patterns on the black display fascinated me with their simple beauty. My friend and I progressed to copying simple game code out of magazines. In school I spent all break in the computer room with the older kids. I got banned because I would only came home late when the school closed.

My dad came to visit the school and we snuck into the office and showed him our programs. He was so impressed that somehow he found a way to get me my own computer. We used to stay up late typing in code and playing maze games, sort of a precursor to 3d wolfenstein/ doom.

he BBC came with a Basic manual. To me it was another kind of game.

10 PRINT "Hello" 
20 GOTO 10

was probably my first program. I consumed every game and wrote code as much as I could.

I wrote code to solve maths and science homework problems. By the time I got the code working I'd understand the problems so well that sometimes I told the teacher how to work out the solutions the next day.

I also played games like meteors. Somehow I believed that if I finished the game girls would like me more. Staying inside a lot made me pale and pasty. And in those days computers were for real geeks and nerds only.

After school I trained as a COBOL programmer. Out of my class of 155 only 48 passed. I was excited about being a programmer but frustrated with the types of programs I got to write.

My first job I was 19 and I had my own office! My boss was an old school IBM'er with socks held up with garters. He taught me discipline and the art of coding that you just don't get these days. This guy had been coding COBOL with punch cards and 32k of memory.

I was overjoyed the first time I saw Visual Basic and a GUI. I applied for a job and told them I knew VB although all I ever did was BBC basic from my pre teen years. I learnt on the job. Soon I was running the IT department for a Cell Phone company. I was 22. Invoicing runs took 2 days and the Access program fell over every 2 hrs. You had to stay up all day and night to restart the program from the last invoice.

James Westgate
+1  A: 

Turned 15 three days ago, found this question, and I thought I'd post an answer.

When I was like... 9, I kept playing a lot of computer and console games, therefore participating in some gaming-oriented bulletin boards. And one day, I googled "how to make a website". That's how I found W3Schools and started teaching myself HTML. I didn't create anything in HTML until 6 months after, when I also picked CSS. And I kept reading a lot about technologies and that's how I've got to learn JS, PHP and the like. Now I'm into C and I plan moving to Objective-C, Cocoa and OS X programming as soon as I finish reading the books I'm planning to read. I'm totally self-taught, there is no one in my family who know much about computers, and the schools in my country do not help you much either.

Of course, at first I had no idea what I could do with anything I had learnt. I remember being very excited when I first put a background image and an unordered list inside an HTML document. But everything changed when I started reading a lot of source code and finally decided to start writing a template. At first, it was basic, messed up HTML, and I quickly ran into troubles. That's when I signed up on the W3Schools bulletin board and, using the help of the people there, things started to add up, and I learnt a lot. Of course, shortly after, I started feeling the need for some logic, which made me look into PHP and MySQL. And that's how I started learning a lot of theoretical stuff, more or less related to each other, and that's why I'm still trying to sort things out.

So basically, my experience has made me recommend web technologies whenever someone is wants to get started quickly with programming. The main advantage is that a beginner will create a UI in HTML/CSS faster than he or she would with stuff like GTK+. I've rewritten an application for my parents using web technologies (the one they were using was C# with Access as the DBMS), and I'm quite sure I couldn't have achieved the same results in the same amount of time using, say, C and GTK+.

Therefore, if you want to try and stimulate a child into programming, starting with HTML and CSS, and later building a full-fledged web application seems like the best bet to get his or her feet wet.

XLR3204S