I'm a mechanical engineer by training (B.S. and M.S.) but most of my day to day work is software development, testing, analysis, etc in the aviation industry. I haven't done anything "mechanical" for money since graduating.<p>Unless you want to do web development, you shouldn't try to sell yourself as "just a programmer." If a company is only looking for someone with programming skills they will probably favor someone with a CS degree.<p>Instead, leverage your background. There are lots of companies in the US (West Coast included) that do embedded software, robotics, and other types of software development where the software doesn't run on x86. Often it needs to run in real time and be qualified for safety. The methodical persistence and attention to detail that companies associate with a PhD is an asset for these types of positions. Your Matlab & Python experience will show that you can do both quick prototyping and heavy analysis, while your C++ experience and interest in Cuda, etc will show that you care about performant software and don't mind thinking about the actual hardware your code runs on.<p>If you have any knowledge of sensors, statistics, or signal processing, you'll probably be an instant hire for this type of company. Companies of this type (which aren't "software companies" by the usual definition, but which have software as a major competitive advantage/requirement) have trouble finding people with the right background. Traditional engineers who can't program don't fill the role, and neither do most CS grads who don't have the engineering knowledge to work with the hardware.