Taro Logo

Solve interesting problems, improve your skills, and get well-paid

Principal Software Engineer
Current Employee
Has worked at Nvidia for 9 years
January 9, 2017
Santa Clara, California
4.0
RecommendsPositive OutlookApproves of CEO
Pros
  1. Important, interesting problems to work on.

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.

  1. 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.

  2. 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.

  3. 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).

  1. There are lots of projects, and they change quickly, too. This is also a Con, though. :)

  2. 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.

Cons
  1. Many of those colleagues are too overbooked to spend much time with you.

  2. 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.

  3. 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.

  4. 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!" :)

  5. Despite some recent improvements, the next chip decisions are still too strongly influenced by the engineers who happen to be implementing it in hardware.

Advice to Management
  1. Hire an army of technical writers and properly document the chip interface. It simply takes time and money, but it will pay off in a wide variety of ways.

Reducing new engineer ramp-up time (and frustration) is going to become a bigger and bigger deal as the company continues to grow.

  1. 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.

  2. 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.

Was this helpful?

Nvidia Interview Experiences