Software Engineering: Art, Craft or Science?

Software Engineering is becoming very popular this days and there is some discussion about wether creating software should be considered an art, a craft or a science. All answers seem reasonable so let’s take a look.

Let’s start with the difference between art, craft and science. Art is the way of representing and showing knowledge, art is subjective while science is about acquiring that knowledge and being as objective and exact as possible while a craft is considered an activity involving skill in making things by hand. Now, the name might make some people be biased, when you think about engineering you think about complex stuff and science however I think that Software Engineering implies a little of each three of the categories.

When people wonder about wether software engineering is an art, a craft or a science, it is a science because we try to follow formal approaches when possible and reasonable, it is a craft because experience and practice makes the master and it is an art because there are situations that leave room for creative and even artistic solutions.