If you want to be a generalist, you may want to learn things which are useful independently of the programming language.
Some books that would qualify in my opinion (as examples):
- Code Complete: A Practical Handbook of Software Construction, Second Edition by Steve McConnell
https://www.amazon.com/Code-Complete-Practical-Handbook-Cons...
- Facts and Fallacies of Software Engineering by Robert L. Glass
https://www.amazon.com/Facts-Fallacies-Software-Engineering-...
Learning the different approches taken by multiple programming languages is certainly useful. It may not be that much relevant which language it is unless you want a job specifically in that language.
I can't speak for Google but I guess it is more relevant how familiar you are with software development practices and general knowledge about architecture, design, testing, algorithms to name a few than a specific language.
and how do you know the others solutions
are really secure? Linux is going to get
the most eyes, critics, scrutiny on this
because is way more widely used ...
This is commonly known as the "given enough eyeballs" fallacy[1]. While it might help when more people have an opportunity to review security critical subsystems, a given OS' popularity certainly does not guarantee this. Heartbleed[2] is often cited as an exemplar for this very situation.1 - http://www.amazon.com/Facts-Fallacies-Software-Engineering-R...
My take is that there is much to learn from science about how to evaluate propositions regarding software engineering (most, but not all, of them are unsupported) but few new useful ideas.
Another reference along these lines: http://www.amazon.com/Facts-Fallacies-Software-Engineering-R...
Some possibly helpful resources which you may have already seen:
http://www.amazon.com/Peopleware-Productive-Projects-Teams-S...
http://www.joelonsoftware.com/ (right sidebar has a ton of articles)
http://www.amazon.com/Facts-Fallacies-Software-Engineering-R...
Go read Peopleware. You will find described very carefully set up coding comparisons that routinely found a factor of 10 productivity difference between different experienced programmers on the same task, and also a discussion of what organizational factors lead to those productivity differences.
There is other research on the topic as well. For instance http://www.computer.org/portal/web/buildyourcareer/fa035?utm... cites "individual differences" research that found a 30 fold difference between mediocre programmers and the top programmers. That article is supposed to be a distillation of http://www.amazon.com/Facts-Fallacies-Software-Engineering-R... so I'd look there if you want citations into how that research was done and what exactly they found.
It's quite concise (224 pages), but it's chock full of quite excellent advice. Each one of these points (and many others) is fleshed out in a separate chapter that gives a good deal of background, clarification, and supporting evidence.
[1] https://www.amazon.com/Facts-Fallacies-Software-Engineering-...