Tips for computer science students: a top 10 list
As a computer science degree holder who is not nearly as successful as planned, I feel I’m in the perfect situation to give advice to current students. I can attest first-hand that not following these 10 rules can result in a less-than-desirable career.
Some of these are shamelessly stolen from Jeff Atwood and Joel Spolsky, but that’s because their advice is just so good. In fact, if you have read both of their archives in their entireties, go do it now. And when you get done, consider my thoughts:
- Get a job as an intern. There is no substitute for real-world experience. A real job is nothing like hobby-coding, homework assignments, or research work. If you spend a summer as an intern you will have three months more experience when you graduate. Plus it looks great on a resume.
- Go to class. You now have the freedom to skip class whenever you feel like it. Lectures are boring. Half the stuff you know already, and the rest is in the textbook, right? Wrong. Well, it’s probably right, but there’s more to class than that. A lot of what you learn in class comes from the way it’s explained and the asides the professor goes on. You might be able to learn everything on your own, but you’ll learn it a lot better with help. Plus, the professor will notice if you’re not in class, and he probably won’t like it. Which brings me to…
- Get to know your professor. Go to office hours once in a while. Ask questions after class. Even if you feel like you understand everything, talk about related topics or alternatives to what was presented. Show him you care. If the professor knows who you are, other than the name at the top of your homework, there’s a good chance he can help set you up with an internship or even a full-time job.
- Contribute to an open-source project. It’s not as good as real work, but it’s better than coding alone. Working on an established project will give you experience reading and understanding other people’s code and working in a team. Plus you could make some new friends. And it looks good on a resume.
- Keep an open mind. I’m not talking about all the crazy political, religious, and social ravings you’ll undoubtably hear on campus. I’m talking about opinions on languages, coding conventions, and development methods. Even though you know C# is the greatest thing ever and there’s no reason to learn anything else, some people prefer Java and you will have to expose yourself to it sometime.
- Care about your GPA. GPA isn’t everything. After a few years of real experience, it means nothing. But it will be a factor when looking for your first job or two. Having a 3.5 instead of 3.6 probably won’t cost you anything, but if it’s too low, recruiters will think you either don’t understand programming, or you just don’t care.
- Create a portfolio. Saying “I worked on massively multiplayer games with revolutionary graphics” sounds nice, but recruiters won’t care much unless you can show them something.
- Read. Read blogs. Read books. Read blogs about books. You’ll learn what people mean when they say things like “factory pattern”, “DRY”, or “fix broken windows”. Reading isn’t a substitute for coding, but unless you learn about alternatives and better solutions, you’ll just repeat the same mistakes again and again.
- Get a job as an intern. Important enough to be listed twice.
- Have fun. If you don’t have fun developing software, maybe you shouldn’t be a software developer.
If I could give a single, cliched suggestion it would be, “Just do it”. Whatever “it” is: code, read, learn, listen. You don’t have to spent your entire life obsessing over every detail and every new concept, but you probably need to spend more time on it than people going into other industries. Successful software developers don’t just put in their 8-5 and forget about programming all night and weekend.