Just a note on the Ph.D, generally, it's ideal to have something like a masters in your field before pursuing such a thing (at least, most of the people I've met have done this.)

Just know that if you want to get a job programming, you may really want to think twice about getting a Ph.D: it's for those interested in research-oriented positions. Once you have a Ph.D, you can have much problem getting hired anywhere non-research oriented such as a coding position. In that instance, you would probably be better off with just a Masters.

A Ph.D is a lot of things, but you have to really see if it's for you before you get into it; otherwise you're wasting your time and efforts for little benefit.
You can look here for further information.