Learning Programming

Learning Programming
how I imagine myself after learning to code

So, for years I have wanted to learn to code, and have always thought I was too old, it was too difficult, too time consuming or one of many other excuses which allowed me to be lazy over the years to avoid going out of my comfort zone. Today is the day all of that changes.

I have decided to learn to code, and in that decision I have taken three very important steps. First off, I have started doing a free course called Python 4 Everybody. PY4E is a university level course for getting started with programming in Python which is 100% free and it has graded work/quizzes, and exercises for you to solve.

Next, I have installed my own Gitea server in a Docker container through Portainer, on my VPS so I can self host my own repositories. Gitea is like Github, but open source, and you can host it yourself, so you have total freedom and control of your own code, as it should be. It's very similar to Gitlab, but uses much less resources, so it's better for my single user instance use case. Also, by self hosting my own git, I am committed to using it.

Lastly, I installed Guile Scheme and am going to go through the entire Structure and Interpretation of Computer Programs (SICP) book, written by Abelson, Sussman, and Sussman. This will teach me a huge amount of knowledge about programming/computer science (allegedly), and it will have the secondary effect of making me knowledgeable enough to start using and hacking on Emacs & GNU/Guix, which in the end, is a personal goal.

The Latest of Several Attempts

Truth be told this is not my first attempt at learning to code, I have made several prior attempts to really learn and stick to it. My problems in my prior attempts were based upon the fact that I was trying to learn quickly, so I could try and get a job. I didn't have a sincere interest to learn, I just it thought it was something I had to do, so whenever it became too tough, too boring, or too monotonous, I would throw in the towel, and quit.

In the past, I have done some web developer classes on Freecodecamp, but after using Wordpress and Ghost for years, I decided it was too much work to build websites by hand, especially since learning how to build websites wasn't my primary motivation for learning to code in the first place, it was just what everyone recommends to beginners. I even got the first two or three certifications, just never saw it through.

In another attempt I tried to learn to code by watching and following a bunch of different Youtube videos, and yes, I learned some things I didn't know, and can follow along with most easy to intermediate level tutorials, but following tutorials doesn't teach you the most important thing, how to use the knowledge on your own without just following someone step by step. I did not know what kinds of projects I could do on my own that didn't overwhelm me without someone holding my hand and walking me through a project.

So, I gave up. Again.

The good thing about taking several stabs at coding previously, is that I retained some valuable knowledge, and I feel like I understand things a lot better this time around. This time I am forcing myself to solve problems, instead of giving up when it gets difficult, and I also have an advantage that didn't exist last time I gave it a whirl. Now, I have access to AI and coding plugins that can patiently explain every single thing I may have a question about, thoroughly, until I understand it and it clicks. It's a bit of a game changer, although I am only using it as a sanity-saver last resort, so it does not become a lazy man's crutch.

What Makes This time Different?

The main difference which comes to mind in this attempt, is that I am learning from a place of genuine interest, which I didn't have previously. I have reached a point where coding feels like fun instead of some mind-numbingly difficult chore. This makes all the difference in the world in my opinion.

I am also learning simply for the sake of learning to code. I am not stressing about bills or finding a job I don't hate, which is also a pretty significant difference from my last attempts. I am not doing this to become a programmer professionally, in a perfect world, I'll become skilled enough to contribute to some of my favorite free open source software (FOSS) projects, and that's enough. Maybe, I could even make my own FOSS apps.

Another key difference is that this time, I am consistently coding every single day, rain or shine. When I tried to learn before, I would go hard, for like two to three weeks, get burned out and then not code for like a month before I tried to resume learning. This was too spotty, and I would forget what I had learned and then have to start over from square one, never actually completing any of my undertakings. Now, instead of going to hard and too fast and burning out, I am just looking to do it for a little while, but do it every single day. I would characterize it as recognizing that it's a marathon, not a race.

I don't know how much of my coding journey I will be posting about here, as this blog is just a place to dump my word vomit, but I may periodically post updates just for myself, to document my progress. By publishing this post, about beginning to learn again, I am obligating myself to follow through with it, since now I have told everyone. Don't talk about it, be about it. This is a psychological trick I use to motivate myself to finish what I have started, frequently.

Anyway, I am going to end the post here, and stop writing about coding so I can actually code. I hope you didn't find the post too boring, and (gasp!) maybe even liked it a little. As always, stay tuned for more musings and have a good one.

If you want to support me or my blog, Monero is accepted here.