

Ask HN: How do I know I'm ready for an internship? - jamesbrewer

I want to get an internship for next summer but I'm not sure that I'll be ready by December (which is when I'll start applying). The last thing I want to do is show up for an interview and make a complete fool of myself. I don't have any projects and I haven't contributed to anything open-source. How do I know I'm ready to get a real programming job/internship?
======
JesseAldridge
Just apply and find out. Honestly, you may well end up making a fool of
yourself -- but at least you'll have an answer. Fear/ego is a pretty poor
excuse for not trying. I'm saying this as someone who has bombed a couple of
coding interviews recently. It's frustrating and embarrassing, but you just
pick yourself up, learn from your mistakes, and move on. If nothing else,
coding interviews are great learning experiences.

------
Wilduck
Here's how to not make a fool of yourself on the day of your interview: Don't
have the first contact with the company be the day of your interview.

What I mean is, make sure that you've talked to people in the company. Like
others have suggested, talk to people outside of the HR department. If you
need a suggestion for how to go about contacting them, I've had a lot of
success with finding someone who works there, sending them an email with a
subject "What's happening at <company name> this summer?" Inside the email,
include a sentence about why their company is cool, a sentence about why you'd
like to work/intern for them, and then ask them if they might have a place for
you.

Not only have emails like this been well received, they give you the chance to
craft your initial conversation with a company, and talk to many more
companies than going through HR would allow.

In my experience I had a much higher response rate than I expected, and while
many weren't looking for anyone, a follow up email asking if they knew anyone
who was hiring often produced another lead or two. Best of luck.

~~~
jamesbrewer
I'll give this a shot. I have a couple of companies in mind and I'm looking
for my things that interest me, so that should lead to a few more ideas as
well.

------
wisty
You don't need any projects or open-source commitments to get a job, let alone
an internship. Just find a company that you think is interesting, and ask
around. If it's a small company, they might not have a formal internship
program, and you might get a job just by having the initiative to ask.
Companies are always in a war for talent.

Be aware, companies are not monolithic entities. There's the "functional
departments" (HR, accounting), and they are easy to find. But they are useless
for making contacts. If the core business is IT (and you really want to be in
an IT shop, not just plugging in people's network cards) then you need to get
onto the project managers (or just project workers) in the company. HR is a
waste of time, unless you _must_ talk to them. Google, LinkedIn, the companies
website, email, and a phone are your friends. Find someone who looks like a
developer, email, then follow up with a call. It never hurts to ask.

If you want to do a demo project (and while you might not need it, but it
won't hurt), tell us your skills, and I'm sure someone will suggest a
reasonable "Hello world"y project you could do. It doesn't have to be
revolutionary, or even good. Just enough to show you know how to get stuff
working.

~~~
jamesbrewer
My experience is with Java and Python mainly. I have done a little with C,
C++, and JavaScript, but not enough that I would even consider including them
on my resume.

I'll be taking 4 CS courses this year (2 in the Fall, 2 in the Winter), they
are: Object-Oriented Programming II (Java), Data Analysis with Scripting
Languages (Python), Introduction to Algorithms and Data Structures (Java), and
Logic for Computer Science.

I don't consider myself incompetent by any means, but I still have a lot to
learn. I find problem solving fun, but unfortunately I get fed up if I get
stuck and can't make in progress towards finding a solution.

~~~
wisty
If you are into python web programming, just a simple blog engine thingy would
show you know a bit.

Steps (you can cut out anything that ends up being difficult - it's just a
demo thingy from a student):

\- hello world, using a web framework. Go for a minimal one, like flask /
bottle / web.py.

\- hello world, with a list of <a href="/1">Aricle 1</a> links. (hand written
html mock-up). Something like:

    
    
        def GET(self):
            return '''
        <body>
        <ol>
        <li><a href="/0/">Article 0</a></li>
        <li><a href="/1/">Article 1</a></li>
        <li><a href="/2/">Article 2</a></li>
        <li><a href="/3/">Article 3</a></li>
        </ol>
        </body>''') # does this need a head?
    
    

\- generate the html links in python, from a list ['my first article', 'my
second article', '<b>Escape html injections?</b>',u'\u4f60\u597d does unicode
work?']. The html should now be:

    
    
        (head)
        <body>
        <ol>
        <li><a href="/0/">Article 0</a></li>
        ...
        <li><a href="/3/">Article 3</a></li>
        </ol>
        </body>
    

Note, don't worry about titles. Titles are a pain (you convert them to url-
safe "slugs", but the slugs _might_ clash ... you could spend hours on it and
it's just not fun).

\- write the "article" pages. They should look like:

    
    
        <body>my first article</body>
    

For bonus points, make sure you can't inject html (the <b> post should _not_
be bold), and that unicode works OK.

\- Add a page where you can post. You will need a text box to post in.

\- Use a sqlite3 db instead of a list.

\- User authentication? Cookies? For a toy project, don't use passwords, just
log anyone on with whatever name they input. Use cookies to keep them logged
on. Password handling and secure HMAC cookies - (ask the interview how this
should be done - give them a chance to show you how smart _they are_ , or why
they just use a solid tested framework that does it all for them)

\- Finally, pimp the site a little. Eye candy _always_ impress. Just don't
waste time on it.

\- Check it into github.

That's about it. It's just a toy project, but gives them _something_ to look
at.

------
xuki
_The last thing I want to do is show up for an interview and make a complete
fool of myself._

Do this now so you know where you are, instead of finding it years from now
when being interviewed for a real job. The sooner the better.

~~~
jamesbrewer
Fair advice I suppose. Ideally I'd like to never have it happen though. :P

------
damoncali
1\. Just do it and ignore your fear. Fear is what holds us back.

2\. It takes less than a day to come up with a project. For example, I built a
facebook tab CMS in about 5 hours, and it's a pretty cool little demo. Is it a
big deal? No. It's not even enough to compete with the plethora of $5/month
offerings already on the market. But does it demonstrate some basic skills?
Absolutely. Take a saturday and write something simple. Make it work well
(FINISH IT), and you'll be surprised at how much credibility it gets you. In
fact, make your own facebook tab CMS. It doesn't have to be clever - it just
has to be real.

------
noeltock
Think that depends heavily on your age (pre-college, during, after?). If
you're already getting that higher education, you'll want to get the ball
rolling on just crushing it and learning as much as you can, maybe even
release something small on github. At the stage you're at, the only thing you
can be doing is shipping.

------
plunchete
As others said, don't be afraid, just try it.

Also, internships are there to learn, nobody expects you being a guru, they
expect someone with passion and a hard worker.

Good luck!

------
abbasmehdi
Let them decide. Go for it young man. If they are smart, they will "hire for
attitude, train for skills".

