People who aren't specialists design interfaces they think they'd like. Programmers, therefore, design interfaces for programmers. This is going to suck for consumer apps, of course, because most people aren't programmers - but this is actually a good thing for other programmers. Take a look at Emacs or Vi - is there ANY way they can get more confusing and badly designed from a consumer-app point of view? Yet they're perfect for the programmer.