It’s that time of year again where students button up all their final projects (hopefully!) and march across stages all over the world to be awarded a degree they’ve been striving for years toward.
Congratulations to all those donning caps and gowns right now, and welcome to the quote-unquote “real world!”
A little known fact: back in *cough*, I gave the commencement speech for our Computer Science department’s ceremony1.
Even though the speech is about a decade old now, when I read through it, I figured some of that advice may still be of use to today’s computer science/engineering grads.
Fellow graduates of the class of 2003: use a firewall.
Security research conducted at UC Davis and Carnegie Mellon reports that, used in combination with other security best-practices, a firewall is one of the best ways to reduce your vulnerability to security breaches, whereas the rest of this advice has no basis more scientific than my own circuitous journey on Poly’s twelve year plan.
I will dispense these observations… now.
Never dwell on the past, but always use revision control software; that commit log from six months ago will save you during some 2 a.m. hacking session when the product is scheduled to demo at 8 a.m.
Know when enough is enough; those of you who took Brady’s algorithms course and Staley’s practical software development course in the same quarter have learned this lesson.
Make time to celebrate the small victories: when that Java lab finally compiles, sing… even if it’s off key, and the lab monitor tells you to stop.
Work at a startup, but quit before you burn out.
Work at a large corporation, but quit before you become too cynical.
Whatever your reason, never, EVER portscan a computer you do not own from a network you do not own; the resulting consequences will waste time that could’ve been better spent passing Calculus II.
You’ll never win in a head-on conflict with either your boss, a government bureaucracy, or your compiler. When disagreements arise, turn off optimizations, crank up the warning level, and remember that a software engineer fixes more bugs with sugar and a good code review than with a can of RAID. As it is with bosses and government bureaucracies.
Life is work. Always take it seriously. Living is a game. Never take it seriously. If you can provide a rigorous, algorithmic proof of this, please tell me how.
Accept certain inalienable truths: hardware will get faster, software will get more bloated; you, too, will get old. And when you do, you’ll reminisce over the days when chip speeds were measured in megahertz, software size measured in tens-of-megabytes, and a time when in its infancy, our industry did not use a engineering-based process for developing software.
Use an engineering-based process for developing software.
Backup daily. Doing so will reduce stress, increase optimism and productivity, and aid digestion… but only in the moments after which you you hear a grinding sound coming out of your hard drive. Which is to say, doing the right thing daily is often difficult and sometimes frustrating, but the personal reward is worth it when it comes along.
Never assume strings have a null terminating them; doing so will result in random segmentation faults.
Do not complain if someone advertises to the world the URL of something you’ve put on the Internet. If you didn’t want all comers to have access to it, you shouldn’t place it on a worldwide, indexed, ultra-efficient network for information exchange. Or you should’ve encrypted it.
The art of Computer Science is difficult one to master, and we should all be proud for making it past the hurdles. But seek to understand what that piece of paper you’re minutes away from receiving really means: it purports that you spent the last few years of your life learning things like C++, Java, search algorithms, and how to build distributed applications.
The truth of the matter is that it represents time spent learning a slew of things about the most important subject Cal Poly can teach you about, but… ironically can’t offer a degree in: yourself.
Congratulations on finishing a four, five, or six crash course in… you… admittedly with some computer sciency-stuff thrown in.
Oh, and trust me… on the firewall.