I just finished reading A Conversation with Alan Kay. Alan Kay invented Smalltalk, worked at Xerox PARC, and is in general a computer science badass. Here's a few passages from the interview that intrigued me:
It’s not that people are completely stupid, but if there’s a big idea and you have deadlines and you have expedience and you have competitors, very likely what you’ll do is take a low-pass filter on that idea and implement one part of it and miss what has to be done next. This happens over and over again.
...most undergraduate degrees in computer science these days are basically Java vocational training.
Corporate buyers often buy in terms of feature sets. But at PARC our idea was, since you never step in the same river twice, the number-one thing you want to make the user interface be is a learning environment—something that’s explorable in various ways, something that is going to change over the lifetime of the user using this environment.
But the flip side of the coin was that even good programmers and language designers tended to do terrible extensions when they were in the heat of programming, because design is something that is best done slowly and carefully.