I'm a self-taught programmer and have just started a computer science degree to supplement my knowledge and fill in the gaps.

However, I'm already debating the direction of my education. I want a 4 year bachelor's degree for sure, but after that, I'm not sure: Is it worth it to get an M.Sc? What about a Ph.D.? What opportunities do these degrees open up?

Currently my goal is to be a software developer, but there are a number of fascinating fields in the software industry and I'm certainly interested in investigating many of them. It is in this respect that I think a higher degree may be worth it -- even if it wouldn't necessarily help a career of software development.

So will it be worth it? Will grad school open doors?

Getting a PhD does two things to you and it uses up 4 or more years. You will need to decide whether those two things are worth the time. First, it gives you some initials after your name. For the rest of time, people who see those initials will think "wow, you must be really smart!" (and often, they will say it out loud.) On a resume it will generally help you, though in some circumstances it might hurt you, with people thinking you're overqualified or an egghead.

Second, and more importantly in my opinion, is the changes in your brain and your attitude that happen over the course of the degree. You will end up knowing more about some small part of the world than any other person. You will stand in front of 3 or 4 people who are experts, sometimes world-renowned experts, and teach them about your work. When you walk in, those experts will be supervisor, examiner, "bosses" of a sort and when you walk out they will be your peers. You  will learn a lot about one corner of computer science and a lot more about yourself and your capabilities. You will be confident being "the expert" when required. And that changes everything.

Unless you know now you want to be a prof, or to join a particular research lab, it seems unusual to me that you could decide about the PhD before doing the undergrad work. Go do the undergrad, and make friends with some grad students. They will tell you all you want to know about the life of a grad student, the life of a baby prof, the job prospects when you're out, and more.

I don't regret the time I spent on my PhD. It has opened many doors for me. It has made me more memorable ("right, you're the woman with the PhD, aren't you?") and been an asset to some of my teams independent of my abilities or knowledge ("we have a PhD on our team!"). But the industry I joined then is not the industry you're joining now. Talk to people who are in the thick of it now and then make a decision as you finish the undergrad work.
