This is just awesome, congrats on being a major bad-ass.
As a 30 year old, I only wish I had half the talent as you and got into programming as young as yourself. I had the nack of it already at school, but I went off on a tangent doing a BSc in an unrelated field, and then realised on completion 3 years later that programming is actually my forte.
I was fortunate in that my Dad set me up with some shares when I was 20 around 2003, right at the start of the run-up, and I went wild for the stock "sale" in 2008, so I've done well with my investments, except for a few dud stock picks that went south (Which I chose based on bad advice, *never* take someone's word for it that XYZ is going to "go through the roof" and is the "Next best thing TM", no matter how experienced an "investor" they seem to be). Nothing close to 35% though, maybe 10% at my last estimate. I started at a basic starter salary instead of the 6 figure, and had to work my way up into a decent programming position.
I hope that young people reading your story will be inspired to follow your foot steps.
What could be learnt from your experience (In maybe a format that will connect with us mere humans ;) ) :
A) Pick a career based on what returns a decent salary as well as what you're good at. Obviously JOSH wouldn't be earning such $$$ if he was an average programmer.
B) Get into earning money as soon as possible. Skip the Masters and get into the field rather, those 2 or 3 years are priceless in terms of experience, and in certain fields I've found that the higher education holds you back without experience to back it up.
C) Start investing as soon as possible with your parents help. The experience is priceless. Get an online broker so that you can log in and view your investments, the market, and start learning about how to read the value of the market. Indexes are the best way to start, I think Josh is extremely lucky, or is an investing genius, or put his programming skills to very good use :)
D) Start working through school - you can save money as well as get "people experience" that will count towards your first job (It helped for me!).
E) Keep expenses low - I so got suckered into the spending game at college/first job, I just went wild with the gadgets, sunglasses, restaurants, gifts, stuff...
F) Get a scholarship/sponsorship to a local college if you can. I got a high grades scholarship that paid for 80% of my BSc, so at least it wasn't a colossal waste of money :P JOSH didn't specify I think, but doesn't sound like he had any college expenses, I guess he got a full scholarship considering he got in so early. Nice if you can get it!
Edit: Just wanted to note, that even if your BSc doesn't match up to your job in the end, it still counts for something, especially for the first job. You might want to back up your skills eventually with a trade qualification, but see what would be most effective in terms of qualification cost in money and time vs how much future employers will view it. For programming, the Microsoft qualifications will be looked on favourably, and are quick to do. The longer 1 or 2 year "Learn ITz - we wants your money" qualifications run by local companies might raise an eyebrow but not hold much water.
G) Stay with your parents for as long as mentally/emotionally/financially possible - I would've gone crazy staying with my folks for another year at one point, but the crazy savings if I had.... I should have stayed another few years!!
Thanks for sharing your story JOSH, and all the best for your early retirement!