A PhD is something some people are convinced is a waste of time, and that others enjoy. I'm not really sure where I stand. At the very least, I'm not going to do one right away after finishing my bachelor's. I'm too fed up with meaningless, endless assignments, studying minutaie that won't matter in a year so I can do well on exams, and living in slums. Maybe that's a tad cynical, but it really isn't that much of an exaggeration.
The funny thing about ComputerScience is that you can really build real, useful products really easily. I mean, you just sit there and write some code. And there! Something useful! So that temptation is always there, and it's easy to get sick of doing "nonsense" assignments with all kinds of assumptions and fake pieces "for the sake of learning." I personally learn best by doing stuff. Real stuff. Not silly [NachOS] where you get to use a host operating system's VM to implement your own, or writing "fake" TCP stacks in Java. I mean, give me a break. That kind of thing will only lead to confusion about the actual real things that people actually use. If I want to learn how to write a TCP stack, I'll bloody well write a TCP stack.
That's why I decided to do the TripleCrown at Waterloo. But even then, there's still plenty of minutiae and nonsense in other courses. So no more school for me. At least not for a while. I think a PhD makes a lot more sense in other fields, though, where things aren't so inherently practical. I mean you can prove theorems about algorithms, I guess, but it just isn't exciting for me until you use those theorems to actually do something cool.