Choosing a good domain is a challenge in itself, quite separate from executing well once the choice is made. Programmers who don't explicitly tackle that challenge will tend to drift into writing stuff they would use themselves, which obviously means going where the low-hanging fruit has been scoured terribly clean; looked at that way, it is a testimony to Fog Creek's execution skills that they can stay in business at New York living costs at all.