When I mentioned in my first post that I was doing this as part of a regime to get myself out of the path of steady decline that I feel I've been in professionally for a few years now, I mentioned Coursera. Now, I haven't had a lot to talk about recently but I need to keep working on my skills as a writer, feeble though they might be so I thought I would put in a brief plug for Coursera.
Like many people in our industry, I just sort of stumbled into programming as a career because I found it to be fun and interesting. As such I have no formal schooling at all. I don't have a CS, IS, or.....well, any degree at all, actually, not even an associates. I have found this to be a mixed blessing over the years. I walked into as an information sponge. I would learn anything and everything that caught my attention, and there was always at least fifty-somethings that were catching my attention all the time. I learned a little bit about everything and occasionally a moderate amount about a few things. I had no preconceptions when I approached any type of technology task and I constantly labored under the foolish notion that there was absolutely nothing that I couldn't make a machine do because, after all, I'd been bending machines to my will for years and never found a real-world problem that I couldn't crack.
Some of the code I have written I wouldn't wish on my worst enemy. The code always got the job done but, especially in the early years, it had a tendency to turn into a nightmare after while. Oh, what a fool that mortal was. Which brings me to the downside; I had no idea what I was doing. This meant that all the lessons that people would normally learn from an experienced developer or all the brilliant minds in our industry that publish scads of good advice about how to code well, escaped me.
I would not trade the way I was exposed and grew up around computers but I can't help but wonder how I would be coding today if I had somehow had a more structured approach. Because I had no degree or even real world experience on my first professional coding job, most of my personal time was spent devouring technical books for basic information that these days someone would normally turn to Google for an answer about. Whats the proper syntax for a join if I'm using Oracle, for example.
Missing out on formal schooling also meant, of course, that all the standard things you would learn in school, such as recursion, standard sorting approaches like quicksorts, binary sorts, blah, blah, blah, simply weren't in my vocabulary unless they had somehow been brought to my attention by sheer need or blind luck.
Now, I would like to believe that in my ideal universe, that if I had it to do over again the best choice I could make would be to learn exactly as I did before except I'd have a professional mentor that could have made the resources available to me to learn these more formal concepts. I don't care if that means he simply coded and explained to me in a pair situation, afterwards making me do the coding on the versions that would ship in production or simply said, here are the classes you need to take, go find these college courses.
Well, those days are long behind me and there are no do-overs but there is still something I can do now. And this is where the Coursera plug happens. After I finished the Scala class, which was fantastic by the way, I went back a week or so later and decided that it never hurts to continue learning the fundamentals. I went back and signed up for another seven classes in the upcoming year. Now, these classes, for the most part, are not what would interest most formally educated people and frankly, I will drop one or more courses if I don't feel I'm getting what I need out of them. I'm talking beginner classes here. Things like, Programming Languages and Algorithms Part 1. I wish I had access to these kinds of MOOC's running around when I was a kid. I would love to have taken a bunch of these courses (for FREE) and learned all the things that the kids in college were learning but spending only as much time as I needed in study and able to ask questions of everyone taking the course with me!
I sincerely think that everyone should take a look at what Coursera has to offer. You might be surprised at what you might learn. And if you have no idea what the acronym MOOC stands for I refer you to the following link with an interesting article by Clay Shirky from which I myself learned it (after having followed a tweet from Martin Fowler to the site). Napster, Udacity, and the Academy