I'm not sure which of these factors contributed most to getting out of my bad spot, but in no particular order:
1. Running. (Strength training is good for many other goals, but frankly handling heavy objects isn't safe when you're severely fucked up and can't see straight. I can run even when I'm pretty deep in the hole and it has an almost curative effect.)
2. Making friends.
3. Starting a project I was actually successful at.
4. Learning not to tie my self-worth quite so tightly to my performance. The notion of "human dignity" -- the idea that all people have worth, even the ones who have personal flaws or make mistakes -- is really important.
I learned sporadically: I fooled around in Scheme and Java when I was a kid, and used MATLAB as a student doing research, and learned the modicum of Unix that everybody in a math department knows, but it didn't really stick. Until recently, when I realized that everything I care about scientifically needs a good programmer to implement it. So I started a learning project and quickly discovered that programming is not hard. I wish someone had told me this a long time ago. Programming is just, in essence, writing extremely clearly.
Test and iterate is obvious.
What's not obvious here is just how early and where: test the idea before you have a project, test on a high-traffic site instead of picking a group of test users to play in a private setting.
Networking can mean two different things and the author's conflating them.
1. You have a connection with a successful professional and so you're closer to promising job opportunities.
2. Your social circle contains a lot of rich people who have the habits and lifestyle typical of the rich, and you absorb a lot of their behavior by osmosis, which helps you succeed.
It's really hard to extend the benefits of the second kind of "networking" to more than a few poor people, and usually they have to be children. (Prep for Prep, college admissions decisions.)
On the other hand, it would be quite possible to develop online institutions to help with the first kind of networking. Create alternative, non-college ways to signal ability, and create ways for employers to connect with those able but isolated people. (I'm working on a project that has applications in that direction.)
I understand that nobody wants to be "brutally" honest. And, being only human, on some level I'd prefer to hear that I'm awesome. But it's more important to know if I'm doing something stupid. So is it better to prompt the advice-giver with my own concerns, like "I'm worried that my inexperience at X is going to be a problem"? How do you get people to be straight with you?
Also note that high schoolers who apply to college are applying to more colleges. Ever since the Common App made it convenient there's an arms race to apply to more schools every year.
I think this is more a matter of transferability. If you're good at one quantitative or technical skill, it's not so hard to learn another, and you can do it pretty quickly. Teaching yourself to become an artist is a bigger gap. I can appreciate design (although I never studied it formally) but I can recognize that it may be more efficient to get someone else to do it for me. The optimal degree of specialization isn't always "none."
I weighed the advice/secrecy tradeoff myself, and I figured I needed the advice more than I could benefit from secrecy. Never sharing your ideas just seems idiotic if you're a novice and you need input.
Learning on your own != learning as a college CS student, it seems. I'd be curious to compare and contrast "Hacker's Paths" for students versus people trying to squeeze in a few hours a day. (My intuition is that the theory-first approach makes more sense for students than for the self-taught.)
Python first (because it's intuitive and I want to build motivation by completing a project right away), and then C (to learn memory management and other subtleties.) That sound reasonable?
Try an experiment: tell some people it's called "Sfalma" and tell other people it's called "The Bug Eater" and see which group is more likely to create an account within 2 weeks.
I'd guess that obscure names aren't good, but you never know.
These questions are important, but I doubt it's best to define the laws before developing the technology, if the risk is on the order of killing a person per upload.