I am interested in technology, however I do not wish to go to university and after stumbling upon the MIT Challenge, I have taken it as a proof of concept. Clearly education is changing, and I would like to take a less traditional route. But before I go too far, I would like to set a road map, and stick to it. I am worried that the things I plan to do are not enough, or are not the right things, and so I would like some advice from those who are more experienced.
After accomplishing this I would work on a few smaller projects to make sure I have learned everything I need to about it, before moving onto the next stage. The next stage would be to learn native mobile development, Java for android and Blackberry, Objective C for ios, C# for windows phone, and C/++ for Ubuntu phone. While learning the languages I will go over algorithms and data structures and some programming challenges/kata using sites like top coder, hacker rank, etc. I will also purchase some books, hopefully having made some income from the web technology projects to fund my progress. The books would be concrete Mathematics, the art of computer programming volumes 1-4, programming pearls, the pragmatic programmer, and cracking the coding interview. Hopefully during learning these languages I would take part in a game jam like Ludum dare, and hopefully I will be writing clean, well commented and documented code that is modular and testable.
After this I would start some lower level stuff, learning assembly and trying to code a basic operating system (perhaps getting a book to help with it or learn from online resources), and perhaps contribute to or edit the linux kernel as an exercise. I would also try to learn about Ai programming and graphical programming, and attempt to program a game from scratch. Adding some multiplayer features as an exercise in network programming.
After this I would attempt to do some electronics, chip design and programming a small robot etc.
After all this would I be fairly competent? Or am I going about this all wrong?
Advice is greatly appreciated.
To sumarise, If I learn several programming langauges, assembly, complier design, software architecture, design patterns, to write clean code, electronics, some common libraries, data structures and algorithms, networking, database managamenet systems, front end and back end development, and some other core computer science topics (theory, formal methods, artifical inteligence, architecture and engineering, computer graphics and vision, security and cryptography, parallel and distributed systems, embeded systems, big data etc) and put each skill into a project as an exercise, would I become a fairly competent computer guy over the next 3 years?!