Interesting question, as I just handed in my two weeks notice for my day job of nearly 20 years (so I guess I'm a senior engineer, but I suffer from imposter syndrome and think I still don't know what I'm doing after all this time).
I'll second the interesting work and keeping people busy, as the job was boring me to tears. Part of it is on me, as I was having problems giving 100%, and that's unacceptable to me as a professional. But if I was being tasked, I don't think it would be as much of an issue.
I'll also second bare minimum raises. It's not about the money, but rather that the Trinity study found that inflation averaged 3% YoY. If salary isn't going up by at least that much, you're cutting my pay every year.
While I can sling bits in just about anything and have system administrator experience to boot (running my personal domains and mail servers on the open Internet for decades), I have to insist that my personal development seat is Emacs running in Linux. Apart from the fact of it sucking less, I'm so experienced with them both, it's a waste of my time to force me to use other tooling. I can (and have) cross-developed software for Windows, OSX and vxWorks (and soon to pickup Android and maybe iOS), but I've done it all from Emacs under Linux with no issues. I have no issues learning new SDKs, toolkits, frameworks, languages, etc, I just have 20+ years of Linux and Emacs experience under my belt, it's one of my skillsets that is a feature.
And last, I'm never going to work in an office again if I can manage it. No, I don't care how awesome your team or office is, I'm happier, healthier and more productive at home. Other tech firms have realized this[0], figure it out or I don't want to work for you.
ETA: Ooh, another big factor is leave. I don't need money, in fact I'm probably a bargain, but I want to work less hours, not more, and in my free time I rescue people off mountains. But this requires I be in a state of semi-on call, able to drop things at a moments notice to go rescue people. I always make up the time later (or take annual leave), but part of what I like about software development is the "episodic" nature, where I can cut to something else for a day or two, then come back to the project fresh.
[0] - https://stackoverflow.blog/2013/02/01/why-we-still-believe-i...