source | link

I agree with everything that's already been stated, but I want to emphasize that you should never forget these general (and soft) skills in lieu of being a technical expert. You should work on both, but I'd much rather have an intermediate who can communicate what they know then have a master who'd rather work alone.

Also, don't spend too much time with your nose in a book. Books are good, great even, but if you spend most of your time reading and less of your time working, you're not going to get half as much out of those books.