I was reading Founders at Work, and found this great quote by Philip Greenspun:
To my mind, a programmer is not an engineer, because an engineer is somebody who starts with a social problem that an organization or a society has and says, “OK, here’s this problem that we have– how can we solve it?” … That’s engineering. If you look at civil engineers, architects, they’re all dealing directly with the customer and going through the whole process.
It’s hard to describe it any better than that.