Any Mac laptop is good for writing, but if you're programming, you're bound to run into a specific set of problems.
Those problems include screen real estate, storage capacity, RAM overhead and the speed of the processor, at least when it comes to doing something with the code you're writing.
I'm planning to buy a new Mac laptop for writing Xcode, browsing the web, text editing and using other IDE's (Integrated Development Environments). Is the MacBook Air a good pick or should I go for a Pro or Air with upgraded RAM?
In truth, you can write code on anything. Even an iPad will work. So regardless of which Mac laptop you get, you'll have a superb machine for writing code to your heart's content.
Compiling code is a bit of a different story. You'll benefit from having a faster, more capable CPU, but whether going quad-core or i7 is worth the extra money is more a matter of your budget than it is a pure function of usability. The bottom line is that even a 13-inch MacBook Air is a good machine to use for development.
I'd make sure you have at least 8 GB RAM installed on any Mac you buy. More RAM is better if you can afford it. I imagine you'd prefer to have as much storage capacity as you can afford. 128 GB is scant for a machine that will be used for development and general purpose use, so think about paying a bit more for 256 GB if you can. Just make sure you budget enough money for a storage and backup plan for your Mac.
Regardless of which Mac laptop you buy, I'd consider having an external display (or two) to be an essential. You're probably going to have many apps and windows open simultaneously. It's really helpful to be able to spread out across a lot of desktop real estate rather than the cramped confines of a 13-inch or even a 15-inch display.
Even the Retina displays found on today's MacBook Pros run out of space quickly when you start popping up text editors and tool palettes and so on. Switching between different Spaces in OS X is an option — it can help you organize yourself a bit. It's so much more convenient just to be able to see what you're working on at a glance just by using more screens.