You want second-order smart. Not just experienced in the technologies you happen to use (as OP alleges), and not just generally quick learning (first-order smart). You want introspective and seasoned second-order learners: people who've learned how to learn, even under adverse circumstances, how to figure out what's worth learning, and how to tell when you've learned enough that the right next step is to start doing.
One of the most useful things I've gotten out of my machine learning study and work on MOOCs is second-order learning. I've learned a lot about how I learn, especially under the added and somewhat artificial difficulty of having a full-time job. Very valuable second-order insights.
"Gets things done" is ridiculous. It's a good size-up for very junior level developers, but beyond that... you want "does the right thing". The idea that there's a large number of perfectionists or lazy people who are constitutionally incapable of "delivering" is nonsense. When to stop perfecting and optimizing is one of many important skills, but not a hard one to learn.
So... let's make it, second-order smart and does the right thing.
As someone who has taken engineering courses and holds a BS in applied physics and a minor in math, while working as a developer (for physics experiments), I'd have to say that physics, more than any other major, teaches you how to learn. In reality, the main reason a BS in Physics even exists is to teach you how to learn so you're prepared when you get to graduate school to work on new problems people haven't had to face before.
The unfortunate thing is that corporate american tends to highly undervalue the BS in Physics. While I graduated at the worst time possible time (2008/2009), it took me over a year and a half to find a "real" job. No, I didn't have two + years experience in developing with .Net. I did have 4 years of experience in everything from LabView to Verilog, photomultiplier tube calibration and particle detector design to advanced electrodynamics to CADD and machining, and all the calculus and linear algebra necessary to get there.
As someone who was perpetually frustrated by a lack of consideration when applying to jobs, I'd just like to recommend that anyone reading this comment to always consider a candidate with a background in the hard sciences, even if they don't have the relevant experience.
I think that may be the shitty economy more than the BS in Physics. When all the on-campus recruiters were visiting my senior year in 2004, I'd go to these info sessions for investment banks or consulting firms and they'd ask my major, and then when I said "Physics", they were like, "Oh, you should have no problem. I was just worried you were an English major or something."
I ended up switching to CS my last semester, so nobody knows I was a physics major for most of my college career and that basically all of my programming knowledge is self-taught, but I've never felt at a disadvantage to all the folks who bulked up on CS courses in undergrad.
I was in a similar situation (majored in pure Math.) The best answer is to learn something like SAS. It only takes a few weeks to learn the language and get certified, but it gets you past a lot of the bullshit keyword filters and lets you start actually working on interesting Statistical work in a corporate environment, which also opens the doors to a lot of jobs that seriously value your Scientific background.
Learn R and machine learning (this will take a while). Move to a major city. One of the biggest career benefits you have as a scientist is experience with real data. If you can't get a job in the sciences, get a data science job. You are very qualified for a better job than most companies will give you at the entry-level with a hard-science BS.
This is a perilous route. Learning R and "machine learning" (probably meant as a catch-all for graphs, statistics, machine learning, and a dash of distributed systems) is necessary but not sufficient, since you'll be competing against people who know all of these things and have significant research experience, given the oversupply of PhDs in various hard sciences (the Python astrophysics community is booming, for example--they'd be immediate "data science" hires).
The net result is that you might end up in a BD-type analyst role, which may not be bad depending on your goals. It wouldn't really hit the engineering target, though.
Hah, yes. I don't know if the comment before yours was intended to be advice to me, but I'm one of those python astrophysics people (professionally). I deal much more on the data and distributed systems side much more than the analysis side, or really... I write software and frameworks that the analysis guys (from several very large experiments) use.
I think it depends on the company. There are a lot of terrible companies that won't look at you for an ML/data science role without a PhD. That's true. There are others that will hire smart people and give them a chance.
What will probably happen is that the pool of "data science" jobs will grow, but the bottom half won't be real DS.
I don't mean to imply that a person can become a decent data scientist overnight. It takes years, but it can be done.
On Wall Street this sort of role is called a "quant", although there's less machine learning in finance than one would expect (hard to audit). "Data scientist" is a startup quant. Just as with quant jobs, some firms will only hire PhDs with research experience, while others will take chances on smart people without it.
There are a lot of terrible companies that won't look at you for an ML/data science role without a PhD.
I'm arguing that it's more serious than this: there are so many PhDs out there right now, companies will have no lack of skilled, well-credentialed candidates to choose from. Going down the "do it yourself" DS route is thus (a) very difficult, and (b) not very likely to pay off.
One of the most useful things I've gotten out of my machine learning study and work on MOOCs is second-order learning. I've learned a lot about how I learn, especially under the added and somewhat artificial difficulty of having a full-time job. Very valuable second-order insights.
"Gets things done" is ridiculous. It's a good size-up for very junior level developers, but beyond that... you want "does the right thing". The idea that there's a large number of perfectionists or lazy people who are constitutionally incapable of "delivering" is nonsense. When to stop perfecting and optimizing is one of many important skills, but not a hard one to learn.
So... let's make it, second-order smart and does the right thing.