all of the above based on the context and depth.
- it is craft when we're producing things (best practices for example)
- it is art when we express our thoughts (aesthetics of code)
- it is science when we discover something new (cryptography)
- it is engineering when we design complex systems (framework design)
that's at least my opinion.