I dropped out of school when I was 17 as well (for reasons I won't go into here). I wound up doing well: I work at Cloudera, I wrote a book for O'Reilly (http://oreil.ly/LrD1FL), I speak at conferences, I've run data centers for small and large orgs, I've built a distributed system or two (or twenty)... point is that you aren't necessarily screwed, but you've absolutely picked, by choice or otherwise, a really tough path. You're going to hate it at times, but you don't have to eat beans out of a can for the rest of your life.

0. You're in it now. No matter what happens, no matter how unfair, this is your life now, and you're up to your neck in it. It's entirely up to you how this turns out, and it's going to suck.

1. Get your GED. One more test isn't going to kill you. Find the time, study, pass, get on with life. Yes, you need to do it. Yes, it gives you other options. Yes, if you don't do it now, you'll forget absolutely everything and never be able to do it later.

2. It's all about experience. I hire engineers for a living. The importance of your education is inversely proportional to the amount of experience you have. Ok, so that's not universally true; no one wants a self-taught doctor performing brain surgery, but you get the idea. From now on, your life will be about optimizing for the experience you'll receive. You need to collect it via self-generation (see later) or otherwise.

3. Mentors are paramount. Find a smart person, attach yourself to them like the leech you now must be, and drain them of their smarts. You are now an information parasite. Go forth and feed. When you enter a room, start a job, work on an open source project, your first task is to find someone that knows something (pretty much anything) and force them to teach you what they know, immediately. Give them a reason to do it. Show them you're worth it.

4. Become a voracious reader. I learned everything (technical) I needed to know for my first job from O'Reilly books. I lived on them. Steal them if you have to (I'll give you a PDF of mine for free, if you want it - see below). Read them, do the examples, build something that teaches you something. Once you've decided the system can't teach you, you become your own teacher. Sorry, but that's what you've signed up for.

5. Learn how to learn. Similar to the reading thing, figure out how you learn new things, and get insanely good at teaching yourself what you need to know. This is now your life. I found I was not so great at frontend work, but I could wrap my head around how distributed systems, especially data infrastructure, worked. Find what's intuitive to you and then figure out how you taken in new information. Then go do that. A lot.

6. Be your own cheerleader. Very few people are going to invest in you. It's going to hurt. You need to build your network (see below) but you're going to have to rely on yourself.

7. Build a network. One of the main things you need is a solid network of connections. These can be people you've worked with, want to work with, know from the open source world, meet at conferences and other events, and so on. Shake a lot of hands. Smile and nod. Be charming. Impress the living shit out of people without being a tool.

8. Generate a body of work. If you don't have anything to point to, no one is going to hire you. Freelance is just a series of micro-jobs (hint: it's harder than finding a job because you're effectively constantly applying). Join an open source project and become prolific. Fill github with evidence you know what you're doing. Join mailing lists and answer questions endlessly (we've hired people at Cloudera because of their participation in the Hadoop community alone). When you get tired, see #0 above.

9. Never let anyone tell you who you are or what you can do. For example, what makes you think you can't get a job? If you're starting with "I doubt..." you need to take a serious look in the mirror. I had a teacher in high school tell me I would never be anything, that someone had to pump gas in the world. "I'll show you," should be your new motto. Live by it, die by it, show them they're wrong.

10. Overcompensate. While not exclusive to someone in our shared position, make sure you push harder than anyone else around you. Learn more, think harder, be more tenacious, be more memorable. You'll always find people smarter than you, and that's OK, but you shouldn't ever stop trying to be smarter than them. It will make you better.

11. Hustle. You're already playing by a different set of rules. Always be hustlin'. To my earlier point about a free copy of my book, if you want it, come find me.

12. Give them a reason. You need to find someone who will take a chance on you. I got a job once by emailing the CEO and saying, "I want to work at XYZ, and here's why you're going to hire me." It worked. Stand out. Give them a reason to take that chance.

You can decide this is feel-good drivel, or you can trust that this is what I do (or at least try). I am not some beautiful and unique snowflake; if I can do it, you can. Go find a job. Screw freelancing. Don't talk yourself out of something because the rules say you can't have it. I believe in you. (I'm also pretty pissed off that you got me to post something on HN. Way to go, jerk.)

-es