

Ask HN: Should I practice competitive programming and stop doing side projects - elon_musk

I am a junior undergrad studying CS at one of the top universities. I have co founded a company, participated in Google Summer of Code and done interesting projects (some of which even won prizes).<p>I applied to some companies like Dropbox, Google, Palantir and Facebook for a summer internship but got rejected from them at some stage in the interview process (even after reaching the host matching stage for Google). I see my friends who were able to get those internships inspite of having almost no software development experience just because they are good at competitive programming and wonder if this is all that companies care about? Should I stop building stuff and improve my competitive programming skills if I plan to get a job after graduating?
======
throwaway19935
If you get past the resume screening stage (which it sounds like you'll have
no trouble doing, with your resume), then those four companies you mentioned
only care about your interview performance. You're correct that side projects
won't get you a job at Palantir. What you should do is practice, practice,
practice technical interview questions. Get Cracking the Coding interview and
do every problem.

Getting a job / internship offer at those four companies is the exception,
rather than the rule, so don't feel bad about getting unlucky this year. I
squeaked by Facebook intern interviews, but was rejected from Dropbox, Google,
and Palantir.

Better luck next year!

------
mathgeek
Let me preface this by saying that above all else, your soft skills are
important. Learn to interview. Read Cracking the Coding Interview. Practice
your people skills. It's likely that your friends who "were able to get those
internships inspite of having almost no software development experience just
because they are good at competitive programming" are really good at the soft
skills in addition to being good problem solvers.

Assuming that your soft skills are up to task...

It really depends on how many side projects you already have, either open
sourced on GitHub or tangibly published (such as iOS apps on the App Store,
for example).

You're best served by having a balance of tools in your skill set. If you
already have side projects that you're proud of, getting better at
"competitive programming" (which is really just getting better at solving
problems in certain domains quickly) will make you a better candidate overall.

Companies like Google want junior devs and interns to be problem solvers that
they can mold into senior developers. That's what "competitive programming"
tests for. However, if you have the soft skills and the pedigree of
presentable projects to demonstrate, you can make it work.

------
RedGreenCode
You need a certain amount of programming puzzle skill to get past the
interview process at most tech companies. Competitive programming is a good
way to practice this skill, but you don't have to do it at the exclusion of
other types of programming. You may want to take a break from side projects
for a few weeks or months while you work on your coding interview/competitive
programming skills. After a certain point, there are diminishing returns
unless you get interested in the competitive programming world and want to
keep competing.

If you want more information on this topic, it is often discussed on Quora.
Here are a few relevant posts:

* Why tech interviews are the way they are: [http://www.quora.com/What-do-you-think-about-the-current-tec...](http://www.quora.com/What-do-you-think-about-the-current-tech-interview-process)

* Preparing for a coding interview: [http://www.quora.com/How-do-I-prepare-for-a-software-enginee...](http://www.quora.com/How-do-I-prepare-for-a-software-engineering-job-interview)

* Possible reasons for getting rejected after an interview: [http://www.quora.com/What-are-possible-reasons-for-getting-r...](http://www.quora.com/What-are-possible-reasons-for-getting-rejected-for-a-programming-internship-after-a-phone-interview-after-writing-correct-code)

------
alain94040
On the contrary, continue with your side projects. That's probably why you
even managed to get interviews with those companies. Did you compute the odds
of landing an internship at Google? How many people apply? How many people get
in?

Make yourself really good. Write code that amazes. Then you'll be able to
control your destiny.

