Someone asked me about how to get a programming internship from a
career fair. I've had a bit of experience at career fairs on the
interviewer side, and I thought I'd outline some of the points for me

If your interested in how to do well on an actual interview, just look up
resources on how to do well on programming interviews in general: the
process for interviewing interns is pretty similar to the process for
interviewing full-time hires.

Looking and Acting Professional Helps

It's definitely true that once you have a software engineering job,
your day-to-day attire is not particularly important (I'm often a
t-shirt and shorts guy myself). However, I definitely add extra points
to someone who dresses well, and also represents themselves
professionally as well. My suggestion for all genders would be a nice
dress shirt. Anything beyond that is fine as well, as long as it looks
like you care.

Side Projects

If you stick to only coding for classes, you'll end up with the exact
same body of work as everyone else. What really sets people aside for
me is if you're passionate enough about programming to do side projects.

It could be something small like you wrote a game for a hackathon, or
something large like a multi-month research project crafting machine
learning systems. Either way, it shows coding is more than just a future 9-5
for you: it's a passion, or a medium that you use to express

Open Source your code

I love to see a github (or other open source hosting) link on
someone's resume. It tells me that they've at least explored the
concept of opening their code up or contributing to an existing open

It also makes it really easy for me to look up and read some code
they've written.

Knowing the tools of the trade

These days academic curriculums are starting to talk more about the
practices and tools that the professional world uses. That said, it's
always a plus for me if you have experience with the following:

  • version control (svn / git / etc)
  • testing (experience with an xunit based testing framework)
  • bug tracking (github issues / bugzilla / trac)

Ability to apply Apply critical reasoning

Software design typically involves thinking deeply about your
problems, and reasoning between the trade-offs of one solution versus
the other. I typically like to see the same in prospective
interns. Having strong opinions with facts and experiences to back it
up is great: it shows that you've given these types of problems a lot
of thought. I'll typically ask what your favorite programming language
is and why: if you've had experiences with a couple, you've probably
had some time to build some opinions about it. It's a way to figure
out if your decisions are motivated by reasoning from thinking about the problems
you're given, or just doing things as instructed and not really thinking too hard
about why.