Hacker Newsnew | past | comments | ask | show | jobs | submitlogin
Ask HN: How can I increase my 'clock speed' in problem solving?
6 points by sabatier on Feb 18, 2015 | hide | past | favorite | 7 comments
I'm getting increasingly discouraged at how long it takes me to solve technical problems, whether it's during programming interviews or doing puzzles on the internet. I know the most common advice is to practice practice practice and that is what I have been doing - online puzzles, TopCoder etc etc, but I don't seem to be getting better. I have friends who are always able to solve these things much faster than me, seemingly without any practice.

This is holding me back from getting the job I want because I'm always so slow to come up with an answer during interviews.

The sad thing is that I have a PhD in CS from a top university, and an IQ in the high 130's, so on paper I'm not exactly stupid... But I always rationalize this and say that the only reason I got accepted was because of good grades due to excellent rote learning skills, not smartness.

Does anyone have any pearls of wisdom?



I am horrible at crossword puzzles. Does that mean I'm not smart? No!

You are not the fastest at solving programming puzzles. Does that mean you're not smart? No.

Personally I think you are one of many who overvalue the importance of solving technical problems quickly. Quoting a Google analysis from two years ago at http://www.nytimes.com/2013/06/20/business/in-head-hunting-b... :

> Years ago, we did a study to determine whether anyone at Google is particularly good at hiring. We looked at tens of thousands of interviews, and everyone who had done the interviews and what they scored the candidate, and how that person ultimately performed in their job. We found zero relationship. It’s a complete random mess, except for one guy who was highly predictive because he only interviewed people for a very specialized area, where he happened to be the world’s leading expert.

It sucks that you didn't get the job you want. Don't conclude that you are not smart because of it. Throw your rationalization out the window - by analogy, chess playing computers are all about "rote learning skills", and they play better chess then pretty much every human. It's all too easy to be caught up in the idea that hard work isn't as important as some sort of innate genius.

See also http://www.kolotv.com/home/headlines/Praise-That-Backfires-W... which is one of many pieces (https://www.khanacademy.org/about/blog/post/95208400815/the-... is another) on how praise for smartness can backfire. Eg:

> In Dweck's research, she split kids into two groups. As one group solved puzzles, her team would tell the kids they were smart upon completing the task. She found that these kids started to avoid doing anything tougher. ...

> "If you try hard, it's almost like, 'Oh, you just really didn't have the talent to do it,'" said Barone.

> With sports, it's accepted that being the best means practicing. But if the brain is a muscle, just like your body, why is the body praised for going through the struggle, and the other, stigmatized?

> "In the U.S., struggle is seen by kids -- we've studied this -- as something that makes them feel incompetent," said Dweck. "They think, if you're really really smart or talented, it should come easily."


I recall reading a mathematician say that after solving a difficult problem, he would force himself, now with the answer in hand, to reexamine the problem and think about what questions he could have asked, or what techniques he could have used, to get to the truth in a more direct way.


Do you indeed have good rote learning skills tho? In my experience the people that do well at TopCoder etc. tend to be good rote learners. Sounds to me like you actually got accepted for the smartness, not the other way around.

Most of the TC like problems seem to be about quickly associating the problem with an already known algo/s and adjusting it to fit the problem? I did Informatics Olympiads in middle school. The people that did well seemed to basically memorize TAOCP or Cormen.


Keep up the practice. I'm working with similar puzzles and have found that the simpler ones are becoming easier over time.

The next level up seems to be problems that require composing algorithms. This type of problem takes creativity, some insight into how to combine, for example, graph algorithms with dynamic programming to come up with "optimal" solutions. These are quite hard for me, especially dynamic programming - it seems to be a favored component in many problems.

Maybe consider downloading 5 or 10 years worth of ACM programming contest problems. Take your time, work through each one, and add to a notebook (or even something like Anki) for regular review.

There is a book on competitive programming at https://sites.google.com/site/stevenhalim/ The first edition is freely available there as a pdf.

Stepping away from your question, you mention that your puzzle solving speed is holding you back from getting your desired job. This is a tough situation - it sounds like the job you want is at a company where these puzzle interviews are prized. If it is possible, maybe you could try to create some working sample code that addresses the job requirements. A portfolio you could put forward and talk about with interviewers instead?

I sometimes try to think from the perspective of how would I setup a course to teach someone to be good at some specific subject. Occasionally I even manage to do that and turn around and make myself the student in that course. You've got a PhD already, so determination isn't a problem for you. Keep grinding!


Practice.


[flagged]


I'm a woman.


OK, this was relevant to the original post.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: