I've worked on three successful projects (freelanced) throughout my highschool career; however, they primarily involve web technologies. I know that I'm proficient in setting up LAMP stacks, working with PHP, databases, and designing with strict markup, version control, usability testing, and all that fun stuff but since I began programming, I've seen an evident gap between the complexity from hash maps to binary search trees (Java is the ultimate PL for learning no matter its condition in the industry).

Although I'm attempting to pursue some multifarious career in software design, is it really necessary to push for a University education (Berkley or Stanford ideally in CS) before I fully commit myself to programming?

Are three successful projects regarding web design, web development, and video streaming (and all concomitant technologies) enough to be regarded as "experienced"? Could that experience get me hired?

Ultimately, when is there enough experience such that University degrees become irrelevant?

4 Answers
4

No, you don't need a university education, but it can really help. Employers see the degree as saying two things about you: you can finish something, and you know how to think.

There is not any amount of experience that renders the degree irrelevant, because there will always be a substantial percentage of employers that will require the degree before they will consider you for a job.

Of course, that doesn't mean that you won't find work without the degree, it just means that the pool of employers that will hire you will be smaller and, all other things being equal, you will always make less money without the degree.

To follow on from what instanceOfTom said, which I would agree with, until you have a formal education in software engineering from a top-flight university, you do not appreciate what you did not fully understand before.

I went to Imperial, London (which if you've not heard of it, is rather like the UK/European version of MIT (see general rankings, though it is top for Computing in particular over the other european institutions)). As I started coding when I was 7, the knowledge I went in with was substantial, indeed I knew the majority of the first and second year syllabus in advance which made things much easier. However, I did not know them half as well as I thought I did and as someone with a strong background, I was able to absorb the true depth of the material, rather than coming fresh to the concepts put forward. This is a key point of mine, a really good professional education benefits an already competent engineer to a greater level than someone who is less experienced and might 'need' to do the course more.

Be aware you will need very strong mathematical skills. As someone who is responsible for recruiting decent software engineers, I am never endingly shocked by the poor mathematical skills of some programmers, particularly the self taught. The degrees will have many mathematical courses on offer, there is a good reason for this.

The web-end of programming can be very simplistic, it is not by any means always so, but quite often is. There is a huge difference between being able to produce good mark up and being able to write a compiler or the lower levels of an OS for instance. It is one thing to be able to put a JPEG in the right place on a page, it is another to understand and be able to replicate the compression algorithms that create them.

The quality of the university makes a huge difference to the content of a "software engineering" degree. At the lower end, it will be making web pages, being taught Java, C#, how to use Excel properly. The top-flight universities will not teach you languages, well not for more than a few minutes. They teach you the fundamentals of the different tools of the trade, exposing you to the types of language you will encounter and when to use them, more importantly the concepts of algorithms, how to form them, apply them to logically breaking down the issues at hand. In short, they train you to be a scientist and an engineer; not an advanced computer operator.

Whether you yourself need to attend university to further your knowledge is a matter for you to decide. It should be made on your knowledge of your own capabilities, your interest in the subject matter (which is not going to be primarily web technologies at a good university) and the career needs of such a large temporal and fiscal investment.

Just remembered I used the word university throughout that, British word for college, we use college for the 16-18 age range and for institutions within universities.
–
OrblingNov 21 '10 at 8:55

Also, looking at US course content and knowing them reasonably well as I have had contact with researchers in the past. MIT, Caltech, Berkeley and Stanford are probably the best for computing in the US.
–
OrblingNov 21 '10 at 8:57

I've seen and worked with a number of very successful s/w developers who have no university education.

They have all been good.

HOWEVER they all have one weakness: they have a lesser knowledge base than those who are more educated. When it comes to solving weird knotty problems, more knowledge is better.

If you have the time, aptitude, ability, and money, get a university education. Make it as broad and rounded as you possibly can (don't stick too closely to a narrow disciple). Specialising too early is not good.

More knowledge = more ability to solve the hard stuff = more valuable = more employable.

"Make it as broad and rounded as you possibly can (don't stick too closely to a narrow disciple). Specialising too early is not good." -- I think that's some great advice because I've learned a lot from moving between various PLs that all seem to interweave at some point.
–
Gio BorjeNov 21 '10 at 8:28

Judging by your questions you are already on the right track- awareness is key.

Rovery Harvey's answer hits on some key points so I wont reiterate those, but I will add something about my experience.

I too had a decent amount of web technology/software development experience by the time I was wrapping up high school, but after going through the university system it was clear that what you gain there is different than the kind of knowledge that you accrue from project experience. If you are seriously interested in software development you will thank youself for studying computer science in a university.

By going through the computer science program at my university I was exposed to all of the necessary details to form a mental model of software and design; I was exposed to the necessary elements to form a model that starts at the hardware and grows upward until you reach the high languages that many of us love so. This was just one of the many benefits of going through a program, so even though you may be able to find a software development job without a degree, you may not want to.

Always great to find someone with similar experiences. Do you think higher education could offer chances to get involved (as in participation in research and projects) in some innovative new technologies that small startups can't offer?--because I've heard of how slow the education system can be in technology because of standards. I think that would be my primary motivation to tackle a degree at a well-known university.
–
Gio BorjeNov 21 '10 at 7:01

@Gio Borje, It would depend on the university, mine had a problem along those lines- however certain professors were more current than others. The things professors will make you aware of and subsequently all of the things you will discover in your exploration will be worthwhile, well-known university or not.
–
instanceofTomNov 21 '10 at 7:11