FAQ
These questions are based on anecdotal observations of common questions that I've received or seen on StackOverflow, in person, by email, or by some other means. It's not a rigorous science. If you have a question that you'd like to see here but isn't, feel free to ask me, and if I hear it often enough, I just might add it to this list.
It depends on what kind of application you are writing, but my personal recommendation is:
- Android: choose Java (or C++ if necessary)
- iOS: choose Objective-C (or Swift)
- Server-side: choose Python for rapid iteration, Java for large/stable projects
- Browser: use HTML, CSS (or Sass), and JavaScript (or Dart)
See Which programming language should I learn? for a more detailed answer.
One could argue either way, but in my personal opinion, it is better to learn C++, first; C++ may be more difficult, but it is essential to understanding the fundamentals much in the same way that doing arithmetic by hand is harder than doing it with a calculator but is necessary to fully grasp the mechanics of how those operations work. In C++, there are often multiple ways of doing the same thing (such as both pass-by-value and pass-by-reference), which makes it possible to compare and therefore understand the approaches; in another, simpler language with only one of those choices, understanding or appreciating the choice is difficult without a basis for comparison.
I wouldn't really worry about that when choosing a programming language (though I would consider overall language popularity as an indicator of how likely it is that employers use that language). While some employers do look for people with knowledge in a very specific language, Google tends to look for general coding skills (not necessarily language-specific expertise, though you should be an expert in at least one language) in addition to strong algorithmic knowledge, good object-oriented and system design skills, good engineering/testing practices, and a close culture fit.
It really depends on the product or project. There are many languages used within Google, including C++, Java, Python, HTML, CSS, JavaScript, Go, and Dart among many others. In addition to these, there are various other proprietary, domain-specific languages (DSLs) in use for various different projects. And lots and lots of protocol buffers.
Most of my day-to-day programming is in Java with some code in HTML, CSS, JavaScript, and a proprietary internal templating engine. I also use C++ and, to a lesser extent, Python on ocassion. It can vary quite a bit.
Please see the credits page for the list of languages and technologies used to create this website, though the short answer is JavaScript, HTML, and CSS for the client-side code and Python for the server-side code.