Pros
The code is definitely my favorite part of the job. I like that projects are always varying, but I generally keep to the C++ side of things (my favorite language). There is the full stack here though. Some people work on the low level C firmware for the boards (Like embedded linux drivers that interface with the hardware). Others do C++ above that layer (but still on the crypto cards) doing stuff like implementing algorithms or formats according to standard specifications or customer requirements. Then there's the applications and special projects teams that write the code outside the cards that run the application servers or client interfaces. Most of the current applications stack is C++, however the web teams take the stack all the way up to the new fancy javascript frameworks like Vue.js. Between test scripts, functional testing frameworks, and some middlewares, everyone ends up doing Python at some point. I've had to work on customer code (SDKs or examples) in Java and C#. This is a linux shop, so inevitably you will end up running into some bash.
Outside of languages, the technology stack includes fun stuff like docker and Jenkins CI. In the last couple years we've been migrating to new tools like Gitlab and Jira, and adopting an agile workflow.
The consistent technology progression makes sure my engineering itch gets scratched. It's definitely been an adventure to watch the technology stack grow and evolve.
Cons
They do make me write Java and C# sometimes (I'm responsible enough to manage my own memory thank you very much!). Only recently have all the code bases got to C++11 (due to legacy hardware and customer environment requirements).