I heard the following story from Christos Papadimitriou. I couldn’t find the source on the Internet, so I’m just posting my version here.
People often ask me: “Professor, I’ve been coding all my life. Do I need algorithms? What’s the difference between coding and algorithms?”
You know, that’s not an easy question, because algorithms is coding and coding is algorithms. How can I explain the difference? The only way I can do it is by appealing to the Asian martial arts. So imagine the following.
You are watching two very well-trained people fighting one of these very sophisticated martial arts. And you watch them both. Both do impeccable, beautiful, acrobatic, perfect moves, one after the other. But you know something: you know that one of them is a master, while the other is not. But they are both so perfect, how can you tell who is the master?
You watch, you keep watching. They are both fighting perfectly with extreme concentration. And then, you notice something: the master is fighting with a smile on his face. That’s the difference.
And that’s my point. Algorithms is coding with a smile on your face.