Most of the work that I have done, ranging from device drivers to now, distributed systems, my macbook air sufficed.
Programming has never 'required' me to have a retina display. If you asked the question with the context of media or photo editing, my answer would be different.
My setup is as follows:
1. Macbook air 11" (portability is the key)
2. Apple wireless keyboard and mouse
3. Apple 27" display connected via thunderbolt. (wired network). You may substitute with any other good monitor.
The desktop setup is just a plain must. Anyone who says 11" or 13" or even 15" is enough for working, has just never worked on a big screen long enough. It just increases your productivity by an order of magnitude. Imagine the time saved by having multiple windows/terminals and documentation right in front of you and not having to switch between the two.
So, to end it all. Get a decent compact machine that you can take with you, and use on the go. And get yourself a good desktop setup when you want to get serious stuff done. Also, the desktop setup (personally) focuses you into a simple and distraction free zone, allowing you to be more productive.
So clearly you aren't buying either machine to learn to program C/C++ on. Any PC or computer made in the last thirty years would be equally good for that.
So tell us your real requirements (e.g. gaming, DVDs, digital video, etc) and what you really do day to day (e.g. mobile users, "workstation replacement," etc)?
You'll come to thank the Ubuntu / Debian package manager when it comes to setting up the dev env.. ;-)
You could also of course run Ubuntu on IBM, Lenovo, Dell, Apple or any other manufacturers box.
The MBP gives you the option of the Retina display though. My personal opinion is that that in and of itself is worth the extra cost :P. If you're going for the 13", be aware of the fact that it can be a little bit laggy when you're trying to something graphically intensive. Depending on your use case, you might be better off getting the standard MBP if that bothers you.
It basically comes down to high resolution vs half a pound in weight. Almost all developers I've worked with, prefer higher resolutions so the choice is simple for me.
Something to think about - if you are doing the majority of your work on the laptop screen, I do find its nice to have a 15".
I have a quad-core Linux desktop with 12gb of RAM. And an 11" Air with 4gb of RAM. For Java development I find them both adequate, unless I'm working with an 8gb dataset - but that might fall more into the testing category.
If it must be an Apple then the Air is more than suitable for a bit of coding.
Why? I'm looking into getting an Apple laptop and don't know which to get. I'm leaning towards the MBP just because I'm getting into music production and the extra hard drive space would be nice to have but I would also use it for programming as well.
Apple does overcharge on memory/disk upgrades (as does MS, just look at the ahem 32gb Surface with 16gb of free space).
But generally I find Apple a solid buy.
You can get very well built Toshiba, Dell, Lenovo (and more) laptops still cheaper than Mac hardware; and you can run Hackintosh or a Mac VM if you need access to Mac OS.
> generally I find Apple a solid buy.
So do I, all I was saying was that if he doesn't necessarily need an Apple machine then he could consider a Windows system.
> Such a '90s cliché
But to address your point: Is hackintosh (Apple OS X on non-Apple hardware) legal? Is it a legal grey area? Some people may legitimately want to avoid that. But your point is taken - computers and operating systems are tools and people have personal preferences and there's a lot to chose from.
edit: the standard MBP, I've heard terrible things about the retina pros being generally laggy