For a software engineer who doesn't find competitive programming interesting but would like to … by Kostadis Roussos
Answer by Kostadis Roussos:
Over the last 18 years I have been involved in growing several engineering organizations at SGI, NetApp, Zynga. I have hired several hundred if not a thousand people over my career. I have been aggressively involved in the process and strategy of hiring from colleges.
I have mentored many many many junior engineers across my career. Several whom have made significant careers of their own.
Until I discovered quora I had no clue that such a thing as competitive programming existed.
Let me observe competitive programming is *fundamentally* opposed to what professional programming is about.
We are not *competing* we are not *trying to solve the problem* what we are doing is collaborating and trying to create the most value for the customer. There is no "winning" or "losing" other than delighting the customer.
What skills are relevant to get a great job at a great company:
Being able to quickly solve a problem under time pressure is not an interesting or relevant skill.
Being able to write "clever" code is not valuable.
Being able to read large amounts of code is valuable.
Being able to write clear code is valuable.
Being able to work with other people is valuable.
Being able to think carefully not under constrained time pressure is valuable.
Being able to work on problems that are ambiguous and being able to define a correct solution when no correct solution exists is valuable.
Being able to think about customer value proposition is valuable.
Deep and broad knowledge of computer systems and technologies is valuable.
Competitive programming is not an exclusive indicator of any of this. And to be honest, it's unclear if it is any indicator. Having never looked for people who competed in programming and having found people with the abilities I look for, I can assert with confidence that competitive programming is unnecessary.
Want to work at a great company build the skills I talked about. Senior technologists will look for those skills.
If you want to do competitive programming because it is fun, do that.
Follow up to Anonymous
There is obviously a lot of passion about competitive programming.
The Original Question was whether it is necessary to get hired.
And some of the answers feel compelled to argue that there is value. Some anonymous person felt compelled to point out that algorithms are a key part of scaling and that competitive programming is essential to learning about algorithms.
The guys who figured out how to scale zynga to 300+ million MAU and 60 million DAU, that had the largest FB game of all time didn't spend their time doing competitive programming.
My claim is that competitive programming is not necessary to getting hired.
Let me repeat it's not.
And it's never been a decision criteria in 18 years of hiring many many people.
And given that it's not necessary and never been a decision criteria, then I think it's useless.
You're more likely to impress someone who is hiring with a pet project on github that other people use.
As engineers we are more impressed with things that are built that other people use than any number of competitions you may win.
We spend more time scouring github for people to hire than we do scouring lists of winners of competitive programming.
If you want to add value to your resume go do that. Go build something on github.
And you know what you'll be better off.
But what can I do?
After I read my answer, I realized what I had done was only answer part of the question, the one related to competitive programming, not the "what else can I do"?
Don't Approach Jobs like College Admissions
First off, let me observe that there are a lot of great, great companies in the valley. In college I used to think – partly because this is how we think about college admissions – that I had to go to the best company and that if I didn't it would be a disaster. The reality is that unlike colleges where there is a strict ranking, companies are vastly more fluid.
Great companies come and go and come and go.
Just to make it concrete:
In 2006, Facebook felt like yet another social network for college kids. In 2000, Google was just another search company. In 1996 Yahoo was a web page on akebono.stanford.edu. In 1997 NetApp was a toaster company. In 2008 Zynga was a stupid poker company.
Approach finding a job as a dating game
The key to finding your first or any job is to find a manager you like. Turns out that the biggest determinant of your future success is you, and the second biggest is your manager. Have a good manager who creates opportunities, then the sky's the limit. Have a bad manager, and you'll be looking for a new job very quickly. Have a good manager who can help you grow, then you will grow.
The second key is the team. You don't have to want to hang out with your coworkers after work, but you have to like them. They have to feel like people you trust, people you can learn from, people that can help you grow. More importantly they have to feel like a team. You don't want to join a group of people who don't like each other.
The third key is growth. Sheryl Sandberg said it best: go to growth. Always pursue opportunities where there is growth. When things grow, there is always more opportunity to learn, to expand your skillsets, to get promoted. Always look for a company that is about to grow very fast. And in most cases that's not the FB's or Google's of the world but the ones that are going to be those kind of companies.
So what do I do, Kostadis?
There is a lot of stuff on quora about getting hired at a great company. There is a lot on the internet.
Getting hired is a dating game. The job has to be there. The opportunity has to be there. Not getting a job doesn't reflect on you, necessarily, it may just be the wrong timing.
I wrote a pretty good answer to this question here:
Go read that. And read some of the other answers as well…