Developers should use the lowest-end hardware that their users might use.
If I make an iOS app, my development and testing phone will be the cheapest one I can buy that runs iOS 10, which is the iPhone 5c. This has the slowest CPU, in fact a 32-bit one, when 64-bit iPhones have been available since 2013. The 5c has the least memory, at 1GB. It has the minimum storage, at 8GB, which is also slower than the flash memory in more recent iPhones.
Using this phone will help me understand what the worst experience among all my customers is like. If I make my app fast on this phone, it will be awesome on newer phones. Whereas, if I used a 6s, the app may work fine on it but be really slow or even run out of memory and crash on a 5c. If that’s going to happen, I should be the first to know, not my users, who will then inform me via one-star reviews.
When I work on a 4-inch screen, I will also make sure the UI works great on this tiny screen. Whereas UIs built for larger screens are often too cramped on 4-inch screens.
This goes for Android as well: if I make an Android app, I’ll test it on the cheapest phone that runs Marshmallow, which is a ₹4k phone.
Likewise, if I build a Mac app, I’ll work on the 12-inch Macbook, and make sure my app performs well on the slow processor and 12-inch screen. If that forces UI simplification, eliminating clutter and distraction, that will help everyone. As opposed to an app that works fine on a 27-inch iMac but is too cramped on the 12-inch Macbook.
Programmers (and designers and product managers) should all use the lowest-end hardware their customers might be using.