"We say that computer science is like magic, and it's good that it's like magic. There's a bad side of computer science that's a lot like religion. In general, I believe that people who believe that you design everything before you implement it, are people who haven't designed very many things." - Harold Abelson