The first program that I ever wrote ... at about your age, by the way ... was written in BASIC on a timesharing computer (there were no PCs yet), took me six months to write, was 12 lines long, and had a bug in it.
About thirty-five(!) years later, the fascination with causing a machine
to do useful things under its own direction shows no signs of stopping with me ... and I hope that you have the same happy experience.
I still say, quite truthfully, that I have made a living from my hobby.
Probably the trickiest thing to wrap your mind around is ... "thinking
like a programmer." Figuring out how to create an algorithm
to do a particular problem ... learning how to devise those algorithms on your own, and yet to also avail yourself of information resources throughout the Internet to help in your learning. There's no place
on this planet that is "too isolated" if you've got an Internet connection.
Here's a problem that I'm going to suggest to you: the "eight queens problem." Consider
this problem, without using the Internet to "peek in the back of the book." How would you go about solving it? Here's the problem:
In the game of chess, a queen can capture anything on a vertical, horizontal, or diagonal line at any distance. Write a program that will find all of the positions for eight queens on a chessboard such that none of them can capture any other.
What I'm suggesting is ... knowing that
"the answer in the back of the book" is readily available to you, but without
immediately rushing out to find one, let it first be a mental exercise. (Caution: the WikiPedia page
contains a "give-away" solution in Python ... choose
not to go there yet. Or, if you have already done so and happen to find that solution to be obtuse (I do...)
, devise another one that produces the same correct answer. The world's your oyster, really.
There are 92 unique solutions, which are actually 4 "rotations" of 23 unique positions. A well-chosen algorithm can produce them instantaneously. A poorly-chosen one might take days. The solution can be made in any language; that's not the point. The point is what the solution is,
not a particular implementation.
Many folks suppose that "what a programmer does" is "to write code." But that's really not
the case. The most engaging thing that programmers do is to devise algorithms
that will efficiently solve a particular problem, then implement those algorithms in software in such a way that it can be demonstrated that they work properly. You have to have patience, a high capacity for frustration, and a meticulous ability to find and shoot-down problems. Most of all, "perseverance and patience."
If you find this task to be engaging,
for its own reasons alone, then "you're one of us." Welcome aboard.