So, this is an embarrassingly pedestrian request, but I'm about to have a lot of free time that I would like to turn into a life skill. What are some good resources for learning to code without buying a college degree?
You don't need really need linux to get started, Windows will work fine though you shouldn't have any problem if you are using a mac either. There are many ways to get into programming on your lonesome, what will work best for you will depend on you. I would recommend picking a language, and learning the technical aspects from multiple resources like
LearnC++.com or
LearnPython.org while simultaneously working with an actual programming application, such as
Unity for C#. The former is necessary to understand the language, while the later may help the learning process along by giving you a fun way to apply your knowledge.
The way I got into programming was through
SecondLife --which has it's own programming language-- and
the Blender game engine --which uses Python--. These provided a comfortable environment for me --who was at the time 15-- to get roughly acquainted with some of the surface level aspects of programming, they however, did not give me a solid understanding of any of the concepts I had to contend with. It was when I picked up a
C++ For Dummys book that I actually began to understand what I was doing.
I would recommend that you learn a low level programming language such as C or C++
at some point as they will give you a reasonable idea of how a computer actually works, and further more, will let you understand problems that come up in other programming languages; however, if you start there you may find yourself frustrated by their complexity, and general unfriendliness. What you may wish to start with is a higher level language such as C#, java, or python. They hide some of the complexities of programming, and are generally much friendlier to work with.
Another thing which may help is working with an actual programming application, rather than doing purely technical work. The aforementioned
Unity game engine is one option, but there are many more, such as the
Unreal game engine which uses C++. This will cement your skills, and keep you engaged.
Language-wise, I would recommend C#, which I find to be a palatable union between high level and low level programming. A simple tutorial can be found at
LearnC#.org, though it is only enough to dip your toes in the water. In order to progress you will need a tool such as
Visual Studio or
Visual Studio Code --though it is possible to use a C# compiler on it's own, I wouldn't recommend it to a beginner-- and from there you could go through a tutorial such as
TutorialsPoint/C#. The main advantages of C# are that it has many real world programming applications, it comfortably bridges the gap between high level and low level, and it has a well developed code base with support from many major companies.