We hired an non-native English speaker as a programmer. We thought it wouldn't be a big deal but we were wrong--it was a big deal. We didn't realize how important English communication skills were until we were working with someone who didn't have them.
We'd ask this programmer to build something and he'd misunderstand and build it incorrectly. And then it would take forever to communicate the problems with his work and get him back on track.
We started getting him to repeat back what he was going to do but he'd still get it wrong more often than we could accept.
I'd get emails from him and I would have to read them five times trying to figure out what he was trying to tell me. All communication with this person took a very long time and had a high rate of misunderstanding.
Naming things is a difficult problem in programming (classes, methods, variables, etc.). And because his vocabulary was so limited, his naming skills were really poor, which made his code difficult to understand.
He was slow at everything because he was working so hard to deal with a second language. And every interaction we with him or his writing (including code) was slow.
I don't know anything about the hiring practices in Silicon Valley. But coding is a kind of writing and I expect that you'll have a difficult time writing quality code in English unless you are fluent in English.
Thank you so much for your lucid explanations.
Good luck to you.
We're a place where coders share, stay up-to-date and grow their careers.
We strive for transparency and don't collect excess data.