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.
I initially plan to study mathematics and work on some projects using web technology, html5, css3, JavaScript, and a LAMP stack python/Django with MySql for the backend (and sqlite for the hybrid mobile apps?). Then after building a fairly complex website, I would attempt to build a hybrid mobile app using the same backend as the website.
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?!

Recommended Answers

All 7 Replies

over the next 3 years?!

That's the punch-line!! From your description, it's more like in the next 30 years (at which point, most of it will be obsolete anyways, I guess). I haven't even done half of that, and I've been at it pretty hard for about 15 years. So, I speak from experience.

If you actually manage to touch (and I say "touch") upon all these within 3 years, I doubt you will be able to call yourself "competent" at any of these things.

I am personally quite a multi-talented guy, and mostly self-taught (at least, when it comes to programming, computers and electronics), and I do cherish those competences and consider them to be a strong asset because they can be very handy at times. But it's important to understand the difference between having enough skills in other domains that you can do some things without being too lost, and having enough skills to declare yourself "competent" in that domain (implying that someone would pay you specifically for that "competence"). You cannot be an expert at everything, there simply is not enough time in a life-time to be able to acquire that kind of skill in so many domains. The best you can hope for is to be an expert in a few core and strongly related areas, and have a decent set of skills in many of the peripheral areas. For example, I am not by any means an expert in electronics, but being able to design printed circuit boards and being skilled with a soldering iron has certainly been very useful here and there, and that is sufficient for me.

There is no issue (in my point of view, at least) with going the "self-taught" route and showing your skill by projects and accomplishments. In many ways, that's very much what I have done, in semi-parallel to my university studies. I am not sure that all employers, especially in bigger companies, will necessarily ever look at your CV if you fail the initial screenings for what kind of degree you have. But certainly, the IT industry has been traditionally more welcoming of self-taught people than other industries for sure (e.g., good luck trying to get an engineering job without an engineering degree!). But remember, basic little toy projects (like the top-coder stuff) are not all the impressive, in fact, quite the opposite, these things are introductory material.

Your agenda seems to be all over the place. You definitely will need to focus it more on one area. Think about it in terms of potential employers. If I'm gonna hire you for a web-oriented development job, why would I care that you can do electronics or that you know assembly, both of which being completely useless in that domain.

first learn to write coherently. Your wall of text causes most people (including me) to simply give up after a few sentences (if they even get started).
So the only thing I got from your rant was that you want to become some sort of super programmer without ever actually putting in any effort to get the training to become one.

Not a good impression, is it?

Thank you for the answers! I realize I have gone about this quite poorly. I would only expect to have in depth knowledge of a few specific areas, particularly graphics programming, mobile development and web development are interesting to me. I already have some knowledge in web development and I have a very slight understanding of each of the other areas, but have never really explored them. I was under the impression that in university they would briefly cover each of these fields. So what I'm trying to ask is, would I be at least equally competent to a university graduate?

I am sorry for the wall of text, I wrote it up in word and it lost its formatting when I posted, kept telling me my code was improperly indented !! or some such..

Would my efforts be better spent focussing on the fundementals, some major concepts and the specific areas that I would like to work in?

p.s I know that all the things I wrote about would take longer than three years, but the question was about competence within three years, and not completing many projects and studies within that time frame.

university they would briefly cover each of these fields.

This totally depends on the University and/or the choice of course you study. Most are programming based (in the UK) but it's very unlikly (unless you study a Games related course) that they will cover "Graphics Porgramming" however, Web Developer and Mobile Development are becoming more dominant in the market so these would be covered.

So what I'm trying to ask is, would I be at least equally competent to a university graduate?

Universties "teach" you how to research independantly and within a group. I wouldn't go to University and expect them to teach you EVERYTHING there is to know about programming/languages/compilers/operating systems/algorithms etc.. So, it depends on your personal prospective; if you decide not to choose a University course, and gain experience and knowlege then I doubt that will go against you when applying for jobs, since, most graduate jobs these days require experience over a "piece of paper" so it all depends.

With regards to your first post:

code a basic operating system

Why? What would be the point in this? The latter, getting involved with the Linux community and helping developing something - This would be ideal.. Not creating your own operating system.

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?!

Yes! Will your brain fry? Probably so. Will you fail? Probably so. Your ideas and your areas are way too broad. You should pick something that you're interesting in and excel at that before you go and tackle the worlds problem with regards to computing. You don't have to learn several languages because the truth is, you won't be able to do it. Every day you will learn something new and these projects that you want to do, will most likly fail. Again, pick a project that:

A) You will enjoy

B) You know (no matter how much time it will take) that you will complete it

From there, you can build up and up thus gaining more knowlege.

You can do anything you put your mind to, no matter how much time you have :)

Hope this helps

You should pick something that you're interesting in and excel at that before you go and tackle the worlds problem with regards to computing.

what @phorce said, is 100% right according to me.

Once you excel in one field, you will automatically know which one you want to excel next...

Likewise you should go on...

There is no end for learning at all...

You managed to inspire me with your speech to study programming. Even though I am not particularly strong in mathematics, I was interested in learning programming.

Greetings, I am working on a project. For this purpose, I am getting some information about the importance of education in Islam right now. Reply to me that what do you think about it.

commented: My advice is to not bury your comments and questions under an 8 year old discussion. +16
Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.