Advice to me at 16? Forget [girl A], and instead, go for [girl B] or even [girl C]. Do whatever it takes to convince your parents/grandparents to buy, in your name, 100 shares of Microsoft stock and never sell it (because by the time they start paying dividends, you'll never have to work).
For a 16 year old, now, interested in programming computers, learn assembly language, even if it's just for a 6502 or Z80 [1]. It will give you a feeling for how the computer works.
Also, learn how to learn. What you learn now will change drastically over the next twenty years (when I started college, Fortran was still taught, you had actual multiuser systems, and there was no such thing as a "webmaster," and Perl had just been released into the wild).
Another thing to keep in mind---there really is nothing new under the sun. Arguments about writing an application in Python over C++? Old hat (C vs. assembly). Languages targeting a virtual machine? Old hat (UCSD Pascal, and before that, various IBM computers from the 60s and 70s). It just takes new forms, which need to be learned (see previous lesson).
And one lesson that might be unorthodox---never cut-n-paste code. Take the time to type it out. That's how an entire generation of programmers who grew up in the late 70s/80s learned---by typing programs in (from books and magazines) by hand. It's hard to see how this helps, but it does. It forces you to look at a program as you type it in, to see how it's constructed. No, really. In fact, if you read up on successful authors, you'll find a good portion of them actually copied (long hand, or typewriter, or computer) entire books by authors they liked.
Never be afraid of trying something out. It may not work, but now, you'll know a way of not doing something. Or why a certain approach won't work. Or will. You might surprise yourself. Don't let your lack of knowledge keep you from trying something, because you might in fact do something that so call experts said couldn't be done.
Oh, and keep this quote from H. L. Mencken in mind: "No one in this world, so far as I know-and I have searched the record for years, and employed agents to help me-has ever lost money by underestimating the intelligence of the great masses of the plain people."
That's all I have for now.
[1] Personally, I'd lean towards CPUs made by Motorola, as they're a bit more sane in the assembly language department, but really, any CPU assembly language will help. Well, maybe not the Intel 80x86 family. The 8086, 80186, 80286, 80386, 80486, Pentium ... it's just an insane family of CPUs.
For a 16 year old, now, interested in programming computers, learn assembly language, even if it's just for a 6502 or Z80 [1]. It will give you a feeling for how the computer works.
Also, learn how to learn. What you learn now will change drastically over the next twenty years (when I started college, Fortran was still taught, you had actual multiuser systems, and there was no such thing as a "webmaster," and Perl had just been released into the wild).
Another thing to keep in mind---there really is nothing new under the sun. Arguments about writing an application in Python over C++? Old hat (C vs. assembly). Languages targeting a virtual machine? Old hat (UCSD Pascal, and before that, various IBM computers from the 60s and 70s). It just takes new forms, which need to be learned (see previous lesson).
And one lesson that might be unorthodox---never cut-n-paste code. Take the time to type it out. That's how an entire generation of programmers who grew up in the late 70s/80s learned---by typing programs in (from books and magazines) by hand. It's hard to see how this helps, but it does. It forces you to look at a program as you type it in, to see how it's constructed. No, really. In fact, if you read up on successful authors, you'll find a good portion of them actually copied (long hand, or typewriter, or computer) entire books by authors they liked.
Never be afraid of trying something out. It may not work, but now, you'll know a way of not doing something. Or why a certain approach won't work. Or will. You might surprise yourself. Don't let your lack of knowledge keep you from trying something, because you might in fact do something that so call experts said couldn't be done.
Oh, and keep this quote from H. L. Mencken in mind: "No one in this world, so far as I know-and I have searched the record for years, and employed agents to help me-has ever lost money by underestimating the intelligence of the great masses of the plain people."
That's all I have for now.
[1] Personally, I'd lean towards CPUs made by Motorola, as they're a bit more sane in the assembly language department, but really, any CPU assembly language will help. Well, maybe not the Intel 80x86 family. The 8086, 80186, 80286, 80386, 80486, Pentium ... it's just an insane family of CPUs.