CS 101: Introduction to Computer Science
May 21st, 2008
This blog represents the public view of my latest personal endeavour: I’m going to create my own software engineering degree. To be a little more specific, I plan to try to learn as much about the field of software development, and a bit of proper computer science, as I can. Rather than spending a few more years, and a few more dollars, in a post-secondary educational institution, I aim to teach myself the topics of computer science I would learn in the classroom on my own.
To be completely honest, I’m not entirely sure from where the motivation for this project came. As near as I can tell, there were three fundamental sources:
- A video I found on reddit by a guy called Clay Shirky that talked about our collective ‘cognitive surplus’ and what we can accomplish if we start putting our ‘free time’ to better use.
- Joel Spolsky and/or Jeff Atwood. While I’m no longer sure exactly what was said, I know there was a point several weeks ago during a stackoverflow podcast where I more or less decided to start this project. One of the two made a distinction between career programmers, those who program as a job and only as a job, and ‘geek programmers’ (for lack of a better term), who program largely for the love of programming. The latter of these being notably better because they simply care more about their craft.
- Personal dissatisfaction with my career thus far, as well as an increasing fear of skill atrophy. With all due respect to my current employer, I don’t really have any sense of identity in the work I currently perform. I got into this particular job as a way to stop my bank account from hemorrhaging funds, and am now worried that I’ll never get back into newer technologies and that this in turn will cause me to regret entering the field entirely.
This will clearly be a monumental task, which is part of the reason this blog exists. My thinking is that if I have a public record of what I am doing, I’ll be more likely to continue to make an effort to accomplish my goals. If I were to put this project on the back burner, there would likely be people (admittedly, at this point it would mainly be some close friends and selected family members) who would ask about my lack of forward momentum. This would, I hope, give me the kick in the butt I need to get back into it. If nothing else, I’m trying to follow Jeff Atwood’s advice from a year ago: “When in doubt, make it public.”
I’m not expecting this blog to ever develop a major following, but I do hope that if others embark on the same journey that maybe they will find some motivation or guidance here. The hardest part I’ve found so far is learning what I never knew I needed to know, so I’m going to lay it all out here as I discover it so others don’t need to blaze this trail again.
Wish me luck.
May 21st, 2008 at 9:32 pm
Jesse I think that this is a great idea – mostly because I feel I am in the same boat in several aspects. Please keep me posted on your progress as I may soon follow in your foot-steps to some degree.
May 22nd, 2008 at 2:27 am
A journey of a thousand miles begins with a single step… and this looks like you’re heading in the right direction. Good luck with your self learning project!
May 22nd, 2008 at 9:30 am
You’re finally going Pubic!!! (Yes that was intentional)
I look forward to flaming you on your progress. I will be following your strugle with great interest. Let me know if there is anything you need a hand with though.
May 23rd, 2008 at 3:29 pm
Best of luck!
It’s a monumental undertaking you’re starting, and I’m sure it will be full of obstacles and great successes.
I don’t want to discourage you, but I think you should try the path well traveled first and see if you like it.
Computer science can be an incredibly broad field that requires a few math courses and a lot of help from peers and instructors. I’m not romanticizing universities, as there are good and bad instructors out there, but nothing will compare to getting a little help from the guy sitting in front of you, or the experience of being stuck in a lab at 2:00 AM with 30 of your classmates working on the same problem.
Two things could happen if you were to enroll in a university: first, you end up enjoying your classes and learn a great deal; second, you will have the degree thing under your arm–believe it or not, the diploma will open some doors.
You will definitely learn enough to be successful by going on your own, but you’ll likely be wondering if there’s more to know. The sad part is that there will always be more to learn, but a solid academic background will give you a structured foundation to build from.
I think it’s hard to become proficient at CS with hyped-popular technologies. Sure Python and PHP are cool now, but what about 10 years from now? As a mater of fact, a good CS program will never teach you how to program in X language. However, you’ll learn about data structures, compilers, networks, databases, algorithm design, etc., etc.
I don’t mean to be preachy, but I tried both and I liked the structured aspect of academia. Even though there is a curriculum, self-learning is a must.