Advice to future Columbia (SEAS (CompSci)) Undergrads, part one

Following my last reflective post on advice for an aspiring technologist, I now present a laundry list of recommendations I have for a Columbia SEAS undergraduate majoring in computer science. One of the things I wished I had when I was in university was a mentor who would be able to give me this sort of practical advice and whom I’d actually take seriously. That said, part of the value of college, growing up, and life in general is stumbling upon knowledge and wisdom yourself that has been known for generations.

I wrote this over a year ago but never got around to publishing it; I’m quite frankly not sure how much Columbia has changed since graduating over two years ago, so some of this advice may be less applicable now than I can even imagine.

I guess a late addition would have to be, “Don’t eat the hot dogs in the vending machine in Lerner”.

That said, college in its entirety would have been a lot different had I not taken it.

In fact, I argue that if you don’t get yourself into these situations during college, you’re doing it wrong. You’re not pushing yourself hard enough. If you do it early on, college will be awesome by senior year.

I distinctly remember calling home to my parents in tears over mental walls I hit. I felt horrible and pathetic at the time, but it was definitely formative and developmental for the years to come. Thank you, Mom and Dad.

Oh, and: Read gothamist regularly. Figure out: The rules of how many blocks equals a mile (~20). How to tell which way is North (odd-numbered street addresses on numbered streets). The orientation and arrangement of proximate bridges (Brooklyn, Manhattan, Williamsburg, 59th St…) …and main landmarks (especially helpful in The Rambles of Central Park). Know the direction of the clouds (generally East-ish) or the movement of the sun (East to West)). Learn more than just the Upper West Side subway stops.

You might become a real New Yorker just yet. (And, if you do, Please offer directions to strangers who are looking at maps at a street corner. Pick up random pieces of litter and properly dispose of them, even if they aren’t yours. Stand to the side when people are getting on or off of any form of mass transit. Pay attention and be cognizant to how you are affecting other people’s environments. Hold doors for strangers. Say “please” and “thank you." And for your mother’s sake, even smile at strangers every now and then.

You might even make New York a better place to live in).

If you take the curriculum as prescribed (again, which you should), you will inevitably come to topics, sections, or projects, that you don’t enjoy or that are old news. Deal with it responsibly. Read a related, more advanced book that is highly respected. Spend a little more time on your project implementing some extra functionality or incorporating some other technology (especially if it relates to your interest; say, integrating Apache Lucene into a Advanced Programming project or using both Postgres and MySQL for your database project and comparing transactional throughput).

You won’t have the time to do this. You’ll be too busy following the rest of my advice. My recommendation: make the time.

Being an officer in any organization is highly recommended. It shows you have the organization and the excess capacity to do something highly formalized in your free time for the betterment of others. That’s pretty powerful and commands respect.

A word on the ACM (not the Apostolos Campus Ministry). The Association for Computing Machinery (note that it is “for” not “of”; this is a large semantic difference: I am not a piece of computing machinery) is an organization that has a lot of potential to unify all of the computer geeks on campus and get people interested in computing. It does this better some years than others. During my tenure there, we were unable to realize our vision of what the ACM should be. That is a strong regret I have to this day. That said, the officers of that organization try very hard to have good programming. Check it out.

Next in my series of reflection: tools and technology I know today that I wish I knew about before.

Oh no. Bug reports via Twitter.

This was a post on the mailing list for the Moose object system for Perl:

This isn’t the first time that I’ve had to muck with throw_error() to tell what’s going on. Only showing the stack from the caller and up makes debugging harder.

Oh no. Is the Internet going to stoop to using Twitter for bug reports and requests for enhancements? I certainly hope not. 140 characters of gripe an RFE does not make.

At least he didn’t have to shorten his posts by removing random vowels.