Answer (1 of 3): It's the same as any other company, really. You need to be good at algorithms, but perhaps the most important skill for any good programmer is what I call "surfing abstraction layers". You need to be able to understand an abstraction layer, and all that it implies, and then b...