As a senior Computer Science student, it's hard to miss the absolutely abysmal education that hackers get. Instead of spending my time in all-night coding sessions, I find my time disrupted by homework and classes that are tangentially related to my career at best, horrible time sucks at worst. I'm not here to discuss why this horrible tragedy has occurred, but rather to investigate what I think makes for a good environment to learn hacking in. Just a note, this isn't to say that you aren't a hacker if you lack these (I missed a few myself) but to investigate the "hacker primordial soup."
First and foremost, I think that good hackers need access to a free coding environment from a young age. "Free" has multiple meanings here. The environment needs to be free of charge (at least to the aspiring hacker) as well as free from rules. The average full-time programmer began learning at 13. It's amazing that such a useful skill can be learned at such a young age.
It's hugely important that the environment be as free from rules as possible. Mistakes should be both allowed and appreciated. Too often we create narrow-minded tutorials that teach, but never allow room to hack.
I think that starting young is important because us adults haven't ruined the child's mind yet with their silly rules. The forced conformity (at least from adults) starts at around 9th grade when we begin to pester the child about college. The free flow of imagination is incredibly important to the magic that is hacking and early experimentation can cement the fairy dust before grownups can blow it away.
Secondly, our young hacker needs a mentor. I have several friends who found their mentor in their programming classes in high school, while others just found an older student to learn from. Personally, I think that the best place to find a mentor is in an active online community. The mentor can provide direction and provide feedback far beyond what a compiler can provide.
Finally, our hacker should have a job. I can't decide if the job should be a grueling minimum-wage one or entry-level programming. Either way, this teaches what the "real world" is like and just how much a job sucks. The burger-flipping level shows just how little those above you care about anything other than your ability to produce. The programming intern position also teaches that to a lesser extent, but more importantly, it teaches us how much fun is lost when the coding is entirely directed by someone else.
I think that these three things will give any hacker-in-training a great head start. There are many other things that I haven't delved into here (a passionate willingness to learn), but that's a topic for future essays.
I'd love it if you joined in on the conversation at Hacker News.