Is coding an art or a craft?

Coding requires a wide range of abilities, which means one needs to be good at many things. Of the different required skills, some can be considered an art and some are mostly science. Achieving good performance, for example, is mostly a science. Still, even when talking about extremes, there is still some parts that could be considered art.

On the other hand, some aspects of coding are much more debatable. One specific area that could be considered either is software engineering. Even though there are a lot of rules and steps to follow, creativity plays a much bigger role. There are many ways to measure successful software engineering, which is why the art part is much more notable. In the performance example, time and steps are the only measurement of success.

Software Engineering can often include everything that has to do with a software project, meaning it very often deals with aspects outside of coding. Software Engineer Insider mentions that: “Software engineering differs from other branches of engineering in that professionals are building an intangible structure and not a tangible one”. I find this to be a key point in understanding S.E. Working with software projects differs greatly from working with other projects. Not relying on physical resources allows programmers to make many mistakes, which allows for a lot of testing.

Testing and trying new ideas is what adds the artistic aspect to S.E. While I think S. E. should mostly rely on science or engineering, there is always the opportunity to be artistic.