Software development tends to be regarded as an engineering practice. But something dear to me is that it's also creative work. Writing words, creating entities, giving them behaviour and meaning, that is very much what an author does when writing fiction. It's an art and a craft. That's personally why I like doing it.

This engineering vs art duality is not recognized nearly enough. Computers talk in ones and zeros, but writing software is far from an exact science.

@steveroy funny thing is, in French "art" can be a synonym of "work" and "skill", and we have engineering schools named with "art" in it (like the "Ecole des Arts et Métiers" which only train engineers).
I like this definition because it explain why we refer paintings with "fine art" instead of just "art".

Also, software development can be seen like translator's work: we translate badly expressed human needs in a computer understandable language. And translators needs to have a very good knowledge of syntax and meaning to do so. 🙂
@NicolasConstant I love your translator analogy!

@steveroy it's not recognized enough, *and* not made separate enough. And it needs to be separate.

There's plenty of art one can create with engineering skills. But when building a bridge or a tunnel, the focus needs to be on reliability and safety.

In software development we get artisanal approach to infrastructure, and so our software bridges keep collapsing on themselves constantly...

We need more "software art", of course. But not when it's supposed to be a part of basic infrastructure.

@rysiek Good point. There is a looseness in the engineering practice of software development that you don’t see in other engineering fields. Leading to what you describe. 👍🏻

@steveroy so the next question is: how do we fix that? Can we fix both? How can we make software *engineering* more engineer-y, and at the same time make software artisanship more recognizable and appreciated?

There is a thing called "engineering ethos". I find there's not enough of it in the tech sector, writ large. "Move fast and break things" is not engineering. Startup culture is not engineering.

@steveroy I tend to distinguish between coding, hacking or even programming as words for the creative process; and software engineering as the term for the aspects of the craft that are more of an engineering discipline.

But there's no reason to assume engineering in general can't be creative, either. It tends to be, by definition, because it's about creating and changing things.

@steveroy I'd regard more conventional engineering as an art as well. It's all about coming up with unique solutions that are almost never the most logical conclusion. Whether the material is metal or data it all has to utilize very creative decisions and ideas in order to work.