About a week ago, I saw an article on Hacker News about 10000 things that every CS major should have done before graduating. Obviously, any list like this is going to be very subjective and the comments on Hacker News show that a lot of people disagreed with the kid. Instead of going on about how not everyone wants to be a web developer, I’m going to say the things on the list that I actually accomplished.
0000 – Buy your own domain name.
0001 – Install an Apache web server and configure it in a non-trivial way, e.g. to serve multiple domains.
Never did that. I’ve installed Apache using MAMP before but only used the default settings.
0010 – Install WordPress and have your own blog. Write blog posts regularly. Write well. Good writing is a critical skill to master in this profession.
Damn, about a year too late. I didn’t have this blog until I had been working in the real world for a little while. Installing WordPress on my host was trivial too.
0011 – Run your own web site at home or in a hosting company.
I’ve been using this host since my freshman year of college.
0100 – Write at least one complete LAMP web app, preferably two — one where P=PHP, the other where P=Python.
Never did anything til after I graduated. Let’s see, there’s farp.me, Waypoint and Toto’s syncing. No Python though, just PHP.
0101 – Have your own [physical or virtual] server on the cloud.
No cloud for me yet.
0110 – Install VMWare or equivalent in order to boot up your laptop with more than one OS.
I dual booted Linux for awhile in college. I even installed it on my parents computer which was actually a huge mistake. Every once in awhile when my mom restarts it she’ll get booted into Xubuntu and I have to spend 15 minutes doing tech support.
0111 – Configure your home DSL router so that you serve a web site or other kind of server from your home machine / laptop to your friends.
I did it. I wrote a little AJAX chat application that was kinda neat. It didn’t work very well at all, but it was only available within our little LAN.
1000 -Use a packet sniffer to learn about the network requests your computer does to your favorite game server.
I don’t think I played with any packet sniffers until after I graduated. I guess looking at requests in Firebug counts.
1001 – Make contributions to an open source project.
Still haven’t done that but one of my friends works for Mozilla now. Maybe he’ll inspire me to submit a patch to Firefox.
1010 – Write an app that uses at least one of the popular Web APIs, like Facebook Connect or one of Google’s.
The Go Mongo app uses Facebook, Twitter, and some custom Web APIs built for the app. Again that was after college.
1011 – Use Google AdSense on your web site, and make money just by virtue of attracting traffic.
I’ve made 82 dollars in the past few years. I’m so close to getting a check I can taste it.
1101 – Read works of literature and, besides enjoying the ride, pay close attention to how the author tells the story and makes use of words. Your programs should be as carefully written as those works of art! (Thanks, Beki!)
I read a bunch of the Harry Potter books in college. I also read the Mythical Man Month which was probably the most relevant book to CS that I read beyond my textbooks. I’ve been reading a lot lately. I’m currently in the middle of Coders at Work and the Hunger Games series.
1110 – Get yourself involved in a software project where requirements are bound to change halfway through — that’s about 0.01% of homework projects and about 99.99% of real world projects, so find one of the latter kind. Finish the project with patience and the ability to take criticism in a constructive way. (Thanks, Lorraine!)
My final project for EECS 497 was kinda like that. We got to pick the feature set though.
1111 – Write an application using map-reduce. Run it on Google app-engine or amazon EC2. (Thanks, Ian!)
Don’t have a huge use for this. Maybe someday.
While I didn’t actually get very much of this stuff done while I was in school, I’ve done a surprising amount of it in the 2 years since I graduated. Now that I actually have free time, it’s nice to put my skills to use outside of work and see what else I can do.