Since you are just 21 I think you should try to motivate yourself to finish a degree. Because 5-10 years down the road it is going to be a lot harder to go back to school. If you think motivating yourself is hard now, it is nothing against what it is going to be like in 10 years.

I can understand that you find going to a university boring and uninspiring. I did. I fund it painfully boring and eventually I quit because I didn't see the point in torturing myself with horribly bad lecturers. But I had a few advantages. First off, I already had about 10 years of solid work experience when I quit. Second, I stayed at the university and worked there for about 5 years after I quit. Meaning I had the benefit of getting to know a lot of people. Third, just because I stopped following the university program didn't mean I stopped studying. It just meant that I could focus on what I found interesting. Now this is risky, because university programs are diverse for a reason. Luckily the stuff I was interested in turned out to become immensely important later and I had a head-start when my classmates graduated a few years later. But, of course, I didn't have a degree.

Meeting people is critical. I cannot stress this enough. During your time at the university you are going to meet a lot of people. If you hang out with the right sort of people, it will greatly affect your professional life later. For the past 15 years I have ended up working with a lot of people I got to know during the university years. I did a startup with some of them and I have worked on a few world class projects with them. Many of them were great -- extremely few of them would have been great if they had been on their own.

Your network of talented people whom you know personally is more important than what they teach you at school.

This is something not a lot of people think about when choosing universities, but it would be a good idea to pick a university in an area you would like to stay later. Preferably somewhere people care to go when doing startups.

Also, at 21 you might think that you are hot shit because you have some software development knowledge. The short version is: most likely you are not. In all likelihood you are an above average newbie. Swallow your pride and let it fuel ambition instead.

There is no replacement for having a broad and diverse professional background and in the years to come, you are going to look back many times and think of your self "what a naive idiot I was". That is normal. It shows that you are developing and maturing.

What people look for when hiring senior developers is track record. What have you delivered before? What role did you play? What are the strengths that make you stand out. Are you able to plan 12 months ahead?

There are hundreds of thousands of people who would do well in programming contests, but who are only fit for entry level software engineer jobs because of lack of maturity and experience.

My advice is:

- finish a degree. if you are smart enough: try to keep
your scores well in the top 5%

- work on a challenging open source project while going
to school -- become a visible/key contributor.

- work as an intern during the summers. aim for top tier
companies that have challenging work and name
recognition. do well. don't coast.

- when you graduate, prioritize getting a job where you
can learn a lot over an easy, dead-end job where you
can earn more. your first few years in the business
should be about learning and gaining experience.

- if you are doing a start-up, understand the risks, be
prepared to work your ass off and talk to other people
who have done startups. most important of all: make
sure you know the right people to involve. also, dare
to fail.

- be retrospective/introspective. take notes and read
them years later. you will discover how much you
mature over time and it will make you more grounded
and more humble. it will also highlight that you need
to learn *constantly*.