Reflecting on OSD600

Well, now that this semester has finally come to an end, I suppose its time to reflect on what I've learned.  The semester as a whole was a pretty good one, I got to take some interesting classes and coded a lot in environments I wasn't fully comfortable in (javascript, blackberry development, coding a working A.I.). It gave me an opportunity to explore different aspects of coding that I wasn't particularly used to.  This gave me a great perspective on the different ways code was developed, and allowed me to find out what I liked and disliked about each. Without a doubt the most influential course I took was OSD600, for many reasons.

I decided to take OSD600 as I thought it would be good to see how software was developed in an open source environment as opposed to the normal, closed source environment that we were all used to.  At first, I didn't expect it to change the way I coded, but just to show me what it was like on the other side.  I wanted to learn what the benefits were of open source development, but not necessarily embrace them.  One of the things I probably liked the least at the start of the course, was the fact that we had to use javascript.  Now at this point I was pretty biased against javascript as I had a pretty limited and bad exposure to javascript.  My experience was limited to a month from a second semester course, so when I found out I was going to be coding in javascript, I cried a little inside.  But as time went on in the course things drastically changed.

After actually writing a bit of code in javascript and learning how coding in javascript should be done, my opinion quickly changed.  David Humphrey began to explain why javascript was so powerful.  He taught us how javascript was a functional programming language, about closures, and numerous other aspects of javascript.  We learned how people actually developed using javascript, and just how scary it could be to take that "first step" into IRC and become a contributor in one of these open source communities.

This was a pretty scary first step to take, I'm not gonna lie.  At first for me, it felt like any time I said or asked anything, I felt like I was on trial by the supreme court of javascript.  I knew the people in the channel were miles ahead of me in terms of coding ability, but I still had to do it anyway.  Humph encouraged us to not be afraid, and that everyone started here at one point or another.  I remember Humph saying something at the start of the semester, that on average, it takes about 10,000 hours of doing something to become really good at what you are doing.  Whether that be coding, a sport, or writing, if you put the time into it, you are going to get good at it.  This was something that really stuck with me, as I'm not one of those coding prodigies. Over the last year I've really had to bust my ass to get decent grades, and what Humph said sort of lined up with my current outlook on coding.  That if I put in the hard work and time, I would get good.

I also found that even tho I was scared to ask questions in IRC, it really wasn't warranted.  Most of the time whenever I asked a question, I would get numerous people answering me, which was not what I expected.  I expected arrogant elitist coders that didn't have the time to help a noob like me, but I was completely wrong.  Everyone seemed to always be willing to help me if they had the time.  This was amazing in my eyes, as it was like having a group of professional javascript developers as a resource that was available to me almost any time of the day.  This was probably the most shocking thing I found out from OSD600.  Through out our whole college experience thus far, not including group projects, we have been keeping our code to ourselves, hidden away in some deep dark corner of our computers, which are only seen by our professors.  No one is encouraged to share their code and help each other.  I brought this up during our last class of OSD600, and Humph mentioned that it was because most people were probably in the same position as me at one point or another.  That people helped them when they were the new guy.  This reminded me of the "pay it forward" mentality, and that's definitely the way I look at the community as a whole.  Whenever possible, I've tried to help others if I can.  Whether it be a class mate, or trying to help someone with a problem on lighthouse, I'm striving to be like the developers I look up to on IRC.

In the end, I learned a ton.  David Humphrey was an extremely inspirational professor, that had a pretty unconventional way of teaching (unconventional compared to 90% of the other professors at Seneca).  I liked this because it gave class a sort of mysterious appeal each week, as you never really knew what we were going to be doing.  There were day's when Humph would walk in and start opening up Firefox source code, or days when he would walk in, turn the speakers up, and start playing some crazy demo he had made/seen the night before.  He continued to tell us that we were all capable of doing the things that he showed us, and that we needed to begin creating a name for ourselves online, something that I also saw eye-to-eye with.  I think a lot of the courses at Seneca don't provide us with enough opportunity to really create a name for ourselves.  We write a lot of code, but so much of it is trivial and has been done a million times before.  It was refreshing to have a course where the professor wanted us to make a name for ourselves, and was always their to encourage us along the way.  I think most professors really look at teaching as "just a job", and really don't have to students interests at heart.  It's saddening that I can't contact most of my teachers in anyway after our class time.  Trying to get some teachers to respond to an email is almost impossible, which goes to say that they are not on IRC.

One of the things I was most proud of, was getting my code shipped in one of the releases of Popcorn.  It was an extremely uplifting experience, and was one of the biggest milestones thus far on my path to becoming a good computer programmer.  It was so cool, seeing those same people that you looked up to on IRC, complimenting your code, and saying that it looked awesome.  I havent seen anyone actually use my work outside of the developers using it in unit test's, but I'm sure someone somewhere is using my code, and that makes me happy.  It's also cool to be able to look up Popcorn online, and see people experiences with it, and how cool they think it is.  Or when Humph made one of our classes go to a presentation on Popcorn that was delivered to York University film students, and seeing how cool they thought it was.  It made me smile, to say the least.

So in the end it was an amazing experience, and was much better than I ever thought it would be.  For anyone reading this who is considering taking the course, I would strongly recommend it.  It was so much more then another perspective, and really changed the way I go about developing, solving problems, and my day to day life in some aspects (I'm on IRC a lot more now).  I suppose this goes without saying after this massive blog post, but I can not wait to start my job at CDOT on may 2nd, I'll be counting down the days.

PS. Sorry if it was hard to read, as it was mostly rambling