Would you (or anyone else) say that having an interest in an open source project, learning what languages they use and then learning one of those is a good idea? Even with Python being so universal, I am struggling to find a good reason to learn it. Maybe if there was an existing project I could jump into I’d be more inclined to go deeper. I’m not sure I can handle another sample todo list type tutorial at this point.
Absolutely, this is by far the most productive way to not only learn a language, but learn how to actually work with it in a production setting, learn how major projects are structured, and learn how the language is utilized and written in the real world. In addition, you will have your code reviewed by experienced programmers, which is often extremely helpful feedback and will force you to progress much faster.
If you are not yet comfortable with having your code reviewed out in the open, there are other options as well. Basically, the best way is to find a project you like and try to modify it for your own use case. For Python, I would highly recommend looking at ARM devices like the Raspberry Pi (will have the most documentation and help available) or something like the ROCKPro64 from PINE64 if you want to support companies heavily involved in the Linux community. These devices are usually within the small budget allocated for a pet project.
Try to find a tedious task in your life that you would like to automate in some way and can actually be accomplished with a SBC. You can find plenty of ideas all over the Internet if you can’t come up with something on your own. Then, look at how other people approached the problem/project you’re working on. Start skimming their source code and go back and forth between it and the appropriate documentation to figure out what each piece of the code does.
Once you’re familiar with how the project works, clone the source code using a version control system like git (with web-based front ends like GitLab or GitHub) and start playing around with altering that code to accomplish your particular wants/needs for your project. Iterate often and test results at every stage (super important to understand what you are changing and how it helps or hurts). Ask questions on dedicated forums if you get stuck and provide as much detail as you can about what you have and where you are trying to go. Research, research, research.
If you’re unfamiliar with git, try out a GUI git client like GitKraken to learn how everything works together. It becomes much easier visualizing how the system works with actual visual representations of the structure of your project/code. Learn what GitKraken is doing behind the scenes (what commands it is calling as you click buttons). Once you have that down, transitioning to the command line is likely going to improve your efficiency (as it usually does with most common tasks).
And, if that doesn’t sound like something you want to do, there are some (few and far between) good resources out there to help learn a language in a project-oriented way, which can be applied to your everyday life. One of the most helpful resources that I used when I started learning Python was a book called “Automate the Boring Stuff with Python”. Now, quite a bit of my workflow at my job is completely automated by building upon the foundations taught in this book and diving deeper myself through research and actually trying things out in my spare time. The Internet is your best friend if you are going into programming.
Most of all, find a way to stay motivated. Programming, especially in the beginning, can be frustrating, time-consuming, and make you feel like you don’t have the skills to accomplish it. Spoiler alert: YOU DO. Just like anything in life, programming takes dedication, determination, and practice to become skilled at.
Also, if you do not enjoy going through the growing pains, spending inordinate amounts of time researching, and physically doing the work, it might just not be the thing for you, and that’s okay. A lot of people decide to start programming in order to get a more lucrative or glamorous career in the tech industry. While this is certainly possible, I would highly recommend that you at least have some sort of passion or end goal in mind outside of making money and getting to wear sweatpants to work. Working in a field that you hate just to increase your pay is likely going to have other, detrimental effects on your life. In short, make sure that you love what you’re doing.
Well, that came out a lot longer than I anticipated. I hope it can at least be helpful to someone out there!