I got a BFA from my state university in "Digital Arts", which for me was a combination of filmmaking, ceramics, and graphic design. I didn't start programming until my last year of school when I wanted to make stupid simple blinking lights with microcontrollers[1].
I agree with lots of responses in this thread about the roles of conceptual integrity and openness to criticism.
The other thing I would add is that my path to programming seems to have given me an orientation towards the outer shell of what I'm delivering, whether that thing is sensory or not (i.e. GUI or API). That's not to say I don't care about internals and constructs, but that I care about them _in service_ of that outer thing[2]. Midway through my programming career I learned about real outside-in TDD and it was like a lightning bolt where everything came together and anything seemed possible.
It saddens me to hear about the supposed importance of STEM education, as if the only thing left to do in today's economy is to deliver predictable implementations of finite technical problems. IMHO, this attitude is doing a great disservice to society, to individuals, and to the field of engineering itself.
[1] I needed CS 121 for a math credit that year and failed. In retrospect I realize that the class was entirely focused on for loops and divorced from the eventual goal of writing software. As a study in contrast, I was simultaneously taking "Programming for Artists" taught by the creator of Kid Pix. I learned a smaller set of skills, but really caught the bug for learning more. (Teach them to yearn for the sea and all that.)
[2] Ok not entirely. Some programming constructs are beautiful in their own right (e.g. map/reduce, CQRS, polymorphism...).