You don't have to compete with CS grads. There aren't enough of them. (Even if we assume that they are all brilliant and charming and competent and productive and interested in working on what the customers need and will pay for... which we do, of course. ;)
Moreover, much of what needs to be done with programming doesn't require CS knowledge as such, but rather a lot of ancillary skills that aren't taught in any school; some of them are barely even mentioned in books. There you and the CS majors start out tied.
Conspicuous among that set of skills are business skills: Not MBA stuff, but things like "here is a potential customer: what are their actual problems, can I help solve them, can I prove that to myself, can I prove that to them using words they will understand and like, will they really pay me?" So much of your work will be about these things, in programming or in physics, and CS training doesn't teach them any more than stat mech class does.
Moreover, much of what needs to be done with programming doesn't require CS knowledge as such, but rather a lot of ancillary skills that aren't taught in any school; some of them are barely even mentioned in books. There you and the CS majors start out tied.
Conspicuous among that set of skills are business skills: Not MBA stuff, but things like "here is a potential customer: what are their actual problems, can I help solve them, can I prove that to myself, can I prove that to them using words they will understand and like, will they really pay me?" So much of your work will be about these things, in programming or in physics, and CS training doesn't teach them any more than stat mech class does.