NVIDIA at its core is a company focused on making faster computers. That's a deep and broad mission that gives you room to work on a huge variety of specialities. Furthermore, you are helping move the state of the art forward, and contributing to a lot of deeply important solutions: CUDA is being used to research cancer and HIV, to implement AI (artificial intelligence), and much more than I can list here.
This really is the center of a lot of incredibly important work, and you can feel the energy and excitement from that.
Competent, accomplished colleagues: you can easily find experts in various fields who are very good at what they do. You can learn some very advanced, cutting-edge things from them, as well as lore and history of why things work as they do.
The company is getting large, but so far it is still small enough that you can make a real difference. And if you do, you'll be recognized and appreciated.
Polite, amiable culture.
More smiling than frowning in most meetings, and lots of people really enjoy what they do and enjoy working with you. Definitely one of the nicest, most friendly places I've worked. There is technical and political conflict, of course, but not the sort that leads to engineers getting stressed out (except for the resulting project schedules—see Cons, item 2, below. Heh).
There are lots of projects, and they change quickly, too. This is also a Con, though. :)
There is a formal Technical career track as well as a Management career track. This allows you to progress and move up without transferring over into management if you like.
Many of those colleagues are too overbooked to spend much time with you.
Software estimation is an elusive art, here and probably everywhere. This can easily lead to working a lot of overtime in order to meet an unrealistic schedule.
The company does not, in its heart, believe that there is significant value in writing down documentation on how either the chip or the software drivers are designed. Much of the chip interface, rather than being in datasheet-style documentation, is implicitly documented in the driver (and in bug reports). The driver was written by software engineers who have close email and personal links with the hardware engineers who wrote various parts of the chip. Everyone else has to suffer along with second-level information.
Plans and projects change quickly and often result in, "Can you please get this done in a few weeks? You can, right? Great, thanks, good luck!" :)
Despite some recent improvements, the next chip decisions are still too strongly influenced by the engineers who happen to be implementing it in hardware.
Reducing new engineer ramp-up time (and frustration) is going to become a bigger and bigger deal as the company continues to grow.
Invest more in the long-term software infrastructure (beyond chip bring-ups), so that people don't have to spend their nights and weekends stabilizing the driver.
Invest more in infrastructure, across the board. Jensen reports that he has got this message, and investment is getting better now, but I feel it's important to list it here anyway.
A 45-minute phone interview was conducted over MS Teams. The interviewer spent approximately 30 minutes explaining the position and the team. Following that, they shared a Google Doc containing an algorithm problem and asked me to solve it, writing
It was good. They asked some technical questions about C++ and low-level systems. Then we went over OOP (Object-Oriented Programming) concepts. He was genuinely nice and interested to hear about my experience.
I was contacted by a recruiter after applying. Then, all correspondence seemed like boilerplate scheduling emails; I don't think the recruiter/scheduler spent any time crafting custom responses. I did an initial informational/technical screening, fo
A 45-minute phone interview was conducted over MS Teams. The interviewer spent approximately 30 minutes explaining the position and the team. Following that, they shared a Google Doc containing an algorithm problem and asked me to solve it, writing
It was good. They asked some technical questions about C++ and low-level systems. Then we went over OOP (Object-Oriented Programming) concepts. He was genuinely nice and interested to hear about my experience.
I was contacted by a recruiter after applying. Then, all correspondence seemed like boilerplate scheduling emails; I don't think the recruiter/scheduler spent any time crafting custom responses. I did an initial informational/technical screening, fo