Here's my two cents: a laptop, which has smallish display (so its mobile when needed), powerful CPU, as much RAM as possible, SSD and good keyboard (for those mobile sessions). Normally, this laptop should be used with a dock, and external monitors / keyboard / mouse. Then developer has more screen estate to use (like IDE in another monitor and document in another) and external keyboard makes coding more pleasant.
However, there might be situtations, when developer needs to work mobile, like when having a meeting with customer etc. Thats why the machine should be a laptop, so developer can take it with him/her. And the laptop should be lightweight, so its easier to carry with you.
I'm personally fond of Lenovo Thinkpads - I think they have great keyboards, one can get them with different setups (screen size, CPU, RAM etc) so there's lot of choice. And many of Thinkpad are certified for Ubuntu, so one can use it instead of Windows 10, if preferred. I'll suggest you see if, say, Lenovo Thinkpad X280 suits your needs.