One private room per team works very well for programmers without the expense justification. The two most productive jobs I've ever had in an office were with that arrangement, not cubicles or open offices.
Cubicles are OK as long as there isn't a lot of chatter, people being on the phone all the time, talking loud, etc. Though of course id rather be in my own room no doubt.