Why did you decide to major in computer science?
The reason is slightly convoluted. I signed up for that first computer science course because I wanted to join the U.S. Foreign Service. As a Foreign Service Officer, you are assigned to a location abroad based on where you are needed. I believed having technical skills would improve my placement options. I was also driven by a niggling desire to understand how my laptop functioned, through and through, as well as the Internet.
After a few classes I decided that: First, I still didn’t completely understand how computers worked, so I needed to keep studying computer science. Second, it would be really dumb NOT to pursue computer science as a career. It is so much fun and — it is the future! I am drawn by its demand for logical thinking and enjoy creating things in collaboration with others.
Are there any things you wish you did more or less of as a student?
The most worthwhile things were working with graduate students on research projects and doing internships.
Things I wish I had done more of:
Things I wish I had done less of:
What have you been doing since graduating?
After I graduated I joined the UC Berkeley EECS Department as a graduate student researching distributed systems and networking (currently focusing on storage systems, and how to scale them dynamically). I’m just beginning my third year here and I love it.
Do you have any advice for current computer science students?
Don’t just treat computer science like one of your high school subjects and only do what is asked of you (i.e., homework, tests). Develop your skills beyond the classroom. Make “doing really cool things with computers” one of your main hobbies.
Find projects that are fun and personal to you to work on in your spare time.
Break things down into small pieces to tackle one at a time; before you know it, you’ll have built something really nice.
On the flip side, make it a priority to finish the projects you start. This usually means creating a an artifact of some sort — web site, paper, code release — that you wouldn’t be embarrassed to represent to others as your work.
Don’t be afraid to break stuff. Come to terms with being embarrassed.
Read programming and technology blogs.
Share your ideas, your code, and your writing with anyone who will listen.
Don’t pigeonhole yourself in terms of your perceived strengths and weaknesses. (For example, just because you’ve always considered yourself more of a kernel hacker doesn’t mean you shouldn’t give UI design a go, should that appeal to you).
If you are a minority student especially, be aware of stereotype threat be on active guard against it! Don’t let being intimidated by people who seem to have come out of the womb programming spoil your fun. Don’t worry if you feel incompetent at first. Everything comes with practice.