Since I've started taking more computer related classes and have met some pretty cool people, the most common question I keep getting is: "how did you learn all of this?" As a friend pointed out a few days ago, I've been fooling around with code and technology for almost a decade now; I'm not entirely satisfied with the progress I've made, since I wish I had time to learn so much more.
Quite frankly, I can never really figure out how to answer that question. I always just say, "I got bored so I looked it up." This is exactly what I did but it doesn't really give you any detail as to my process. Looking back at my past, I don't really know what I did. I started by playing BZFlag and was curious how a specific developer did all that he did. I wanted to be just like him, so I asked him to teach me some basics. He pointed me to learning Perl—dear god, I know—and sent me links to tutorials via AIM. At this point, websites like Codecademcy may have existed but coding did not have the hype it has now so I didn't know of any such resources. I had a lot of trouble getting started; it took me 3 separate attempts to actually get the hang of coding. I bothered this developer a lot; and I mean a lot.
After I got the hang of some basics in Perl, I gave C++ a shot and picked it up fairly quick, or so I felt. I didn't know what loops, conditionals, classes, or any of that was. I simply would look up things like, "if this is true, do this if not do this in C++" or "how do i do something several times in C++." It wasn't until months later that I actually began learning vocabulary and my Google searches improved.
I then got into server adminstration when I started running a BZFlag server; I started off maintaining BZFMaps. My process for learning how to manage a Linux server wasn't much different at all, I kinda just started looking up what SSH was and what commands meant. Then I would search how to do things in Linux or I would copy paste error messages.
I guess you could say I kinda dove into the deep end and then searched how to swim. You have no idea how much I have fucked up on a production server. I have...
- firewalled everyone (including myself)
sudo pkill sh
- made servers non-responsive
- run a fork bomb
- shutdown a remote server (not reboot...) without a UI to boot the server
Oh man, those were fun times. On the bright side, I now know how to get out of those sticky situations and no longer make the same mistakes!
To be honest, I don't know how I learned all of this. I just recently started picking up Python and have written some scripts. My friend asked me how I learned Python and quite frankly, I don't actually know/remember even though it was just about a month or two ago. I just looked up the syntax for loops, functions, classes, variables, and started typing and fixing syntax errors as I went along.