It really sounds like old me. My major was MIS, but got an programmer job after I graduated. I did not learn much programming at school, everything I learned is coming from my work.
都知道一些,但是不精深. I love learning, learned a lot of different programming languages, but not good on any of them.
My suggestion: try to look for an entry level job. Then start from there, learn whatever your new job requires, and stick with that for a reasonable long time to be an expert.
My problem is: can't stay at the same job for long time, from past over 10 years, I always switch my job, that means I had to learn something new each time I switch. I did learn a lot, but not expert on any!
My hope is that I can stay at a same job for several years, but it is hard for me to do that. At beginning, I am always excited about my new job, whenever I can manage everything, I lost my interest. Then I start looking for a new one. I am getting older, maybe I will become more stable.
42 is not old, you should be OK.