Understand TCP/IP To The Level Where you could (if need be) implement it all in RAW sockets. (Dont actually do this if you dont have a death wish, but just understand it enough)
Learn to Program, I suggest C(++) and ASM as your low Level Programs, and Python and Shell Scripts as your Higher Level.
Learn the CLI, it is all possible in the GTK, but nothing beats a good old:
ls -Rla / | grep -e "wsr" -e "\-sr" -e "ws\-" -e "\-s\-"
To get a list of SUID Binaries on the system. (In case anyone didnt get it)
I hate to sound Cliche, but learn Linux, aside from the obvious (tools are made for it), theres also the whole "you get way more freedom to do things like inject modules and all that great stuff"
If at all possible, learn physical security, and social engineering + hardware hacking. I havent really found my niche yet, but being able to tailgate to get in to a building, pick a lock to get into the sesitive areas where tailgating isnt possible. Then slice an ethernet cable and make my own connection into their network is a nice feeling.


)
