My question from professional programmers out there is, considering where I stand, what would be the fastest and most reliable strategy among the following to focus on in order to improve my odds of getting a programming job:
1. Learning new skills toward a particular niche such as web development, mobile apps, etc., instead of learning more what I already know?
2. Finding non-paid internships in a particular niche, instead of working on my own projects?
3. Creating self-directed projects, and publishing codes in Github etc., and keep applying for jobs?
4. Getting involved in online open source projects.
Thanks in advance. And my apologies if this question sounds redundant to some of you.
Your physics/maths degree could be a useful selling point in many business sectors e.g. financial services, engineering, telecoms, scientific computing, etc. It might be worth researching recruiters in those industries to see if you can turn up some graduate-entry level opportunities. After all, it's probably easier to teach a physics/maths grad to program, than to teach a computing grad about physics and maths. Also, as you've already started looking at machine learning etc, look into entry level "big data" roles for "data scientists" - one informal definition of a data scientist is somebody who knows more about statistics than the average programmer, and more about programming than the average statistician. Could be you!
Finally, join your local Java User Group, go along to any tech events locally, and generally look out for ways to network with people in your area who might know more about opportunities in your local IT industry.