I'm 62. Although I've dabbled in programming since 1977 when I took a CS course as an undergrad (FORTRAN on a main frame), my entire life was basically in other areas: 20+ years as a U.S. Naval officer, followed by 12 years as an IT project manager.
And yet at 62 I am jumping in feet first. Starting early last year I immersed myself in Python and online introductory statistics, and this year I actually have several real-world Python projects I'm doing (while concurrently I've upped the ante in statistics and started an MS program in Applied Statistics).
I fully expect that by the end of 2015 I'll be happily ensconced in a well paying, full time job doing some combination of programming and data analysis.
Although in many ways my situation differs from yours -- I probably have more financial resources to buffer the time off I took to shift gears, and I have a lifetime's worth of associates who are helping me in ways large and small -- the larger point is that it's never too late to learn something new and start applying it. Never.
As Henry David Thoreau said in Walden, "If a man advances confidently in the direction of his dreams, and endeavors to life the life he has imagined, he will meet a success unexpected in common hours."
I came across his story when I was a few years younger than you -- I'm 61 now -- and it has inspired and guided my entire life. Read his story; read his list. The two of them ought to provide you with enough ideas for a lifetime.
I started working for myself from home earlier this year. Although it's great in many ways, there are several challenges.
As you have noted, the lack of an external structure is a big one. Here's what I do...
First, I map out a long-term timeline, which is generally a season (spring, summer, autumn, winter). I identify goals, objectives, events, etc., and map them out in a simple open source PM software package.
Second, each week -- usually late Friday afternoon or Saturday -- I take the broad project plan stuff and create a more detailed plan for the next week.
Finally, at the end of each day I write a very detailed list of things I am going to do the next day. This includes work stuff, but also anything else: chores, exercise, etc.
When I get up in the morning, I look at my list for that day, and tackle it. Round about 5:00 pm I review the list and make the next day's list, and at 5:30 I treat myself to a Manhattan and some good music. Then it's dinner and whatever.
I also journal my work-related stuff in iPython notebook, and I keep an accounting of my hours in an Excel spreadsheet.
All that keeps me focused.
It's also important to provide yourself some relief. When you first start working like this, you realize how much time is spent at a normal work place not really working. In a normal work place there are meetings, water cooler chats, and so on. So it's important not to think that you must be productive for eight solid hours a day, because in most work environments you aren't. I plan on some reduced amount of productive time, and factor in what I call buffer time. After, say, 90 straight minutes of work, I might take a 10 - 15 minute walk around the neighborhood just to clear my mind and get my blood flowing.
That's what works for me.
TL;DR: Make a detailed daily list of things to do, and do them. Balance the list, and reward yourself at the end of each successful day.
I agree with adrock: take classes you think are interesting without a career in mind. Things will change way too much and way too quickly for you to plan a career around courses in college. The main thing you need to learn as an undergrad are thinking and communicating skills.
Also, here's a good video that might give you some ideas:
Here's something I did that I highly recommend: build your own Linux distribution via the Linux from Scratch (LFS) project (Google it).
I took an old laptop and installed Slackware with an LFS partition. Then I downloaded all the packages and followed the directions from the LFS book.
It took a while, but by the time I had finished I had learned three key things: (1) a lot about how Linux works, (2) how to find information (about Linux and for solving problems with Linux), and (3) a lot about BASH.
Seriously, although it sounds daunting, it is doable and you will learn more than you ever imagined.
And yet at 62 I am jumping in feet first. Starting early last year I immersed myself in Python and online introductory statistics, and this year I actually have several real-world Python projects I'm doing (while concurrently I've upped the ante in statistics and started an MS program in Applied Statistics).
I fully expect that by the end of 2015 I'll be happily ensconced in a well paying, full time job doing some combination of programming and data analysis.
Although in many ways my situation differs from yours -- I probably have more financial resources to buffer the time off I took to shift gears, and I have a lifetime's worth of associates who are helping me in ways large and small -- the larger point is that it's never too late to learn something new and start applying it. Never.
As Henry David Thoreau said in Walden, "If a man advances confidently in the direction of his dreams, and endeavors to life the life he has imagined, he will meet a success unexpected in common hours."
That's another way of saying, "Go for it!"
Good luck.