views:

3019

answers:

29

I'm 19 and have been a hobbiest programmer since I was a freshman in high school (2002). I recently graduated in May of '08. Right out of high school I had my first job programming contract work for a company (got noticed off of my personal website). Originally the CEO and I had discussed working for about a year from home before going out there, as recently graduated, no previous jobs, no money, and them wanting me to move across the United States, after 6 weeks of work and two projects I made my decision to stay with my family because my father might lose his job, and with my sister and mother trying to finish college I want to be here to help out in case things get real rough. - Contract work stopped there, which was fine with me, I expected it.

During my time working for them I learned at a rapid rate, and I was very eager and happy to work well over 12 hours a day to get whatever they threw at me done. I worked directly under a senior developer, whose a friend of mine and they seemed to like my work and that I was doing a good job. Working for them as a whole was very good, professional, and very comfortable.

I've always thought that school is a joke and doesn't really prove anything (my high school grades show it, minus all the technology classes I aced) - But I always feel that I don't truly know enough to secure a good programming job. Visual Basic .NET, C#, WinForms, sockets, are some of my skills.., but I am very modest about what I know, because there is just so much I need to learn.

Question is.. how valuable can college "really" be? How can I really polish my skills up and fill in the holes of knowledge I may be missing? How can I really find out what I need to focus on, and where to go next?

I find myself overwhelmed a lot of the time because I try to run a software development website, many projects, as well as helping other programmers who know much less than me, and of course personal life, its all very frustrating. I have many directions to go, but I'm paralyzed in which way to pick..

I've read many topics on this already here, and on the net, but I'm young still and it feels like a lot of it doesn't apply to me.

+3  A: 

I think the path you've chosen is great. You are doing something you are passionate about and getting paid for it. Lots of people your age enter university not knowing what they want to do with themselves, and end up wasting a lot of time and money studying something they will never touch again.

I would recommend that you continue developing your career, since in programming it matters more what you know than what your academic credentials are. I never had a formal computer science education, and I write code at a much higher level than my coworkers who have CS degrees. Why? Because I've been coding for years as a hobby. I did sit in on a few computer science degrees just for my fun and for my own self-growth.

Eventually, when you are ready to take things to the next level, go for a computer science degree (perhaps even a masters) part time and focus on just the things you are passionate about. Getting an academic degree gives you the double advantage of a deeper understanding and a higher salary. (The HR departments at most companies look at your years of industry experience and your academic credentials to determine your salary.)

davogones
+5  A: 

As one 19-year-old to another, learn a new language. Take time to learn new languages. It will help you think about things differently and expand your horizons. Plus, being self-taught shows (in my opinion) a lot of personal initiative. Which is widely considered to be a good thing.

Plus it's fun.

Learn something like Perl or Python or Ruby. Scripting langauges are fun because they make everything so easy! Learn something like C (or even assembly) to gain low-level knowledge. You might even want to learn Lisp (or, from what little I know about it, F#, since you already know C#) because it's so different from modern languages.

And whatever you do, don't spend too much time on one language. You'll grow rusty on your other languages. I started trying to process text 1 character at a time in Perl until I remembered that I had regular expressions.

Don't forget to enjoy it.

Chris Lutz
I actually started out programming in Win32 C++. I didn't go very far, minimal knowledge in Win32 GUI, and some sockets, but that's about it. When I first started into the .NET world, I did Visual C++/CLI for a long time before switching to C#. Maybe I'll dig into C++ again, or ASM.
David Anderson
+1 for recommending F#. Awesome language
Steve
+1 Lisp (pick Clojure)
Jules
@David - If you're considering assembly, try C first. I don't know how well you know C++, but it provides (from what I know) easy ways to abstract yourself from problems like buffer overflows and memory allocation. C doesn't, which will help you learn about those concepts. And assembly is a bitch.
Chris Lutz
and just how is this going to help this fellow get his life under control?
Steven A. Lowe
+2  A: 

I accept that real time experience is very important than what we study at college.

And again my advice is you to take up some college because you really get some fundamental knowledge in many topics. In a long run, this would be very helpful.

There are 2 ways of doing this, one is to continue with your work and then take a part time course or to leave the job and then take a full time course. Learn the subject well and then parallely spend some time in developing small projects. Concentrate and apply your knowledge your knowledge in your project. Anf if you have time take some part time programmer job.

Techmaddy
I appreciate the rather straight forward answer you gave, it helps people think about the decisions they are going to make, and it helps them understand better the things they should do. Kudos.
David Anderson
+6  A: 

It is much easier to get a degree when you are young than trying to go back later. When people are young they should do as much as they can before the responsibilities of life catch up. As a sad generalization I can say that my friends that went into careers after high school with the intention of getting a degree later rarely go back to school, never mind actually completing a degree program.

What you learn in school is not going to help tremendously for programming since you are already so advanced. What it will give you is excellent connections to like-minded people that can help further your career when you are done. With some luck you might meet a lot of people that are working on a hot startup then you can drop out, e.g. Bill Gates or the guys from DropBox.

Also if you ever find yourself in the position of searching for a job (as opposed to using your connections) having a degree will help your resume get to the top of the stack.

DavGarcia
AAAAAMEN! I didn't go to college after high school (long story involving looserism) and I went again at 27 (in 1996). It took me 12 years to finish (May 2008). Yet it was very very good, and not at all for the programming stuff.
Christopher Mahan
+1  A: 

Other can and will offer good advice. But one thing I want to add, learning is a lifelong task, if you see that then you can learn anywhere and anytime, college or no college. Book are a great help. Look up books on this board and start reading books like Code Complete etc can teach you a lot. Start from there and you can continue learning software engineering things a lot of engineers need to know. College and related aspects can be addressed too, in time.

omermuhammed
+5  A: 

Get an education. It allows you to take much more control over what work you end up doing. Most developers I know do not really care too much about "position", but they care a whole lot about being able to do the cool stuff. I really think that in a lot of places, an education gives you the option of choosing, otherwise you'll end up being chosen for.

krosenvold
Completely agree. I'm not quite finished with my Computer Engineering degree yet and it has already opened many more doors for me than I could have opened myself.
Bob Somers
+37  A: 
prestomation
+1 for commitment and economy
ccook
It may have just been me, but while in school eating every day was still a concern for me. :)
ScottS
@ScottS: He obviously means boarding school ;)
Ash
damn, great post. I learned a lot from this. i can say your opinion gels with my own :)
Brock Woolf
I really hate that "it shows you can stick with something" nonsense. There are plenty of people out there who are perfectly capable of "sticking with something" that are able to learn more quickly and efficiently outside of a classroom.
Ed Swangren
@Ed, It's not like college is the only way to show you can stick to something. If you DO go to college, its shows that you can in fact stick with something, but it's not exclusive; if you don't go, that doesn't necessarily mean that you can't stick with something. It's like what the accepted answer says, it sets you apart from the "script kiddies".
prestomation
+13  A: 

I'm someone who doesn't believe in university/ college I.T courses making someone a better programmer, but I do believe that uni/ college is valuable in a career.

I found uni to be a pointless exercise, I learnt a lot of non-useful programming, but what I did learn was how to learn.

Thanks to uni I am better at picking up concepts and running with them, learning at my rate and learning my way.

Slace
What did you get your degree in?
ccook
Comp. Sci with the focus on unix development. I've only ever been employed as a .NET developer (currently C# web dev)
Slace
What do you have against 'collages'?
A collage is a collection of pictures.
Bob Somers
they didn't help me learn to spell
Slace
+3  A: 

David, I found myself in a similar situation. I started an internship at 16 with a web development company and started working for them immediately afterwards, like you, while in high school. Fortunately they were local to where I am attending college and I have been able to keep my job for almost six years now.

When I was applying for college and choosing a degree I was in a similar situation. I ended up choosing Mechanical and Aerospace Engineering for similar concerns you have expressed. If you feel you know enough programming where programming might bore you in class (at least the first few years), I suggest an engineering degree in a field you are also interested in. I don't think anyone will say an engineering degree is not worth it, regardless of specialization.

The interesting thing about engineering degrees is in how much the different disciplines overlap. I can't tell you how often I have used concepts from say Astrodynamics in solving problems in a different setting (Lambert's problem). Further, with a second skill set you may find yourself in a lucrative niche market where a combination of strong programming and 'x' is highly prized.

I think in my case I tend to absorb myself in challenges. Web programming being simply the first I was exposed to. With the engineering program I have found I get just as absorbed and interested as I have been in web dev. Now, in my last semester of undergraduate, I am applying for a PhD program, where I will get a chance to focus on Computational Fluid Dynamics (an example of a niche between programming and 'x').

Food for thought, dont think your first skill is your only/last/favorite :)

ccook
+1  A: 

Thank you all for the great answers, they really help a lot. I hope to hear about many more peoples experiences and advice, I soak it up, and it helps me quite a bit. Kudos to you all.

David Anderson
good luck, have fun, and keep learning. Don't forget to ask here when you're stuck with some programming questions. ;)
andyk
+1  A: 

I think I was like you in the fact that I learnt programming entirely by myself. I would definitely agree that most of my learning happened because of me, not because of university. However, after having completed a degree, I have to say I really enjoyed it and learnt a lot. I think the biggest thing I got out of it was a much broadened perspective. I think it's like ccook said above, having a second skill set is actually very useful, you end up surprising yourself at how often you use it. There's many things which I would not have learnt (or have been interested in) had I not went to uni.

So I'd definitely recommend going to university because you learn about things which you would never have considered or thought about - even being as self-motivated as you are. Besides that, you make some lifelong friends, which in my opinion, is what makes it all worthwhile.

Ray Hidayat
+24  A: 

I've always thought that school is a joke and doesn't really prove anything (my high school grades show it, minus all the technology classes I aced)

The point of an education isn't to "prove" something at all. You get an education to learn in breadth about many topics and in depth about one. I'm not much older than you but I completely value and cherish the knowledge I've gained from my CS degree.

However, I can relate because your attitude was similar to mine at one point. I've matured now however, and have seen the light.

It is certainly possible to learn everything you learn in a degree on your own, but I'm going to tell you a secret: people don't.

I notice the difference when I study topics on my own. If they interest me I study them with a tremendous amount of vigor and depth. But that is the thing, if the topic is outside the narrow scope of my interest or if I have more interesting things to learn at that moment then I leave gaps in my knowledge.

It is too easy for me to skip over my Lexical Structure/Language Design homework if I'm the one giving it to myself. It is too easy for me to not do that Discrete Math homework if it starts to get hard and I would rather be writing some cool app. If I'm the one handing out the assignments, I'm not going to give myself that horribly nasty, recursive assembly language assignment.

If school does anything it forces me to learn things that I wouldn't have the motivation to learn on my own. It makes me dig deep into topics that aren't as appealing as other topics and it makes me soldier on. The knowledge doesn't come from some awe inspiring insight the professor gives (although that does occasionally happen), as far as I'm concerned he is simply there to be my guide when I get lost and keep me honest.

Simucal
Not necessarily education, but *school* :). If I go to college, I am not going for the degree, I am going to learn just like you are. Employers though only see a degree or no degree, and it seems like no one is willing to actually train people or pass on experience anymore, which is how we got here
David Anderson
@David Anderson, why should it be a companies job to train you for what they are hiring you for? You generally come with a pretty strong knowledge base in the area of employment. The only exception to this is if you are being hired as an intern. I've had software development internships where
Simucal
@David Anderson, they were fine with me having significant gaps in my knowledge. If you go to school to learn like you say, you'll have the right attitude and grades will come naturally. Schools need an effective way to screen an onslaught of applicants and one easy way is to only accept those who
Simucal
@David Anderson, they can verify that those individuals have at least spent 4 years studying the requisite material and been tested on it. There are exceptions of course and many well known rock-star developers with only a HS degree. However, they are rare. I wouldn't exclude a candidate
Simucal
@David Anderson, entirely based on no degree... but they would have 4 years of knowledge that they would need to prove to me in the interview they knew. They would have to work a little harder. Go to school, get your degree, really learn about computer science. You won't regret it.
Simucal
@Simucal - Oh its definitely not the employers job to teach you everything, but there's a large difference between actual work experience that you need to learn from the job, and educational knowledge
David Anderson
@David Anderson, I suppose there are two types of jobs. Those who want the requisite skills when you get there and more blue collar jobs that have a long history of having apprentices and teaching individuals on-the-job. SE is a little in the middle of the two depending on what you are doing.
Simucal
@David Anderson, take the 4 years of knowledge you learn at your CS degree. You need ~all~ of that and THEN you have so much that you are forced to learn on the job that they really, really need you to know that stuff. So it isn't like there isn't learning once you get hired, there is a ton.
Simucal
agree with Simucal. Schools provide you with curriculum, a flow to guide you learning through different stuff. It might seem ridiculous at some point, but there will be situations in the future, like "Hey, I already got some of this in college, I'll catch up in no time". damn300charslimit
andyk
.. and that might just help you when you least expected it.
andyk
@ Simucal "why should it be a companies job to train you for what they are hiring you for?" It wasn't too long ago when apprenticeships were the norm. Now companies are offsetting the cost to you because there's too many people in the world.
Unknown
This is the first time I've really wished I could vote up an answer more than once. I'd very much like to give this answer many, many upvotes.
Beska
+4  A: 

It isn't so much the facts that you learn getting a university or college degree but that:

  1. You're taught how to think methodically;
  2. You're taught how to teach yourself;
  3. You're taught how to deal with problems independently;
  4. Getting the degree is an indication that you're a completer.

Of course, if it's computer science you're talking about, you also get the benefit of learning the principals behind essential algorithms.

In my experience, generally speaking, someone with a degree is better suited to a programming job than someone without one, purely because they've mastered the skills above. Also, knowing that someone has a technical degree from a respectable university tells me that they have the grey matter to be able to handle hard problems.

Eric Smith
+7  A: 

Speaking as someone with 20 years of experience in software development, but no college degree I can tell you, get the degree.

When times are good, and employers can't fill all their job postings, then a degree is less important (though there are a number of people that simply won't hire you without a degree). But, when times are tough, like they are now, it's VERY hard to find a job without a degree.

Why? Simple. When an employer gets 300 resumes for a job, the first thing they do is toss out everything without a degree, without looking at any other factors. So all your knowledge and experience are useless if they can't get communicated to the hiring person.

A degree opens doors. It's up to you to put your foot in the jam to keep it open.

Mystere Man
SELECT * FROM Candidates where CV LIKE '%Degree%'; I agree that this is what most HR directors start with.
Martin Brown
+5  A: 

By not getting a degree, you are just putting an unnecessary hurdle in your life that you don't need. A lot of people try to rebel against school because they were programming since they were nine. But guess what, most of the really good computer science students were too. You've learned a lot so far and in college your professors will notice you. Typically, the students will be placed in a couple piles: those that are there taking classes just to get a degree and those really interested in learning about computer science, and not just how to build a web site with the latest fad dynamic language. You'll get access to really smart people and many of the jobs you might work at won't necessarily have a very high caliber of programmers. In many cases, you might be the best one, which is a bad thing, especially when you are young. College is a lot different than high school. If you really breeze through all your courses then do research; that's what your professors will actually be doing themselves. But, the courses might not be as easy as you think. :)

BobbyShaftoe
+2  A: 

1. Read and Use Getting Things Done

The system in this book will help you get your multiple-projects life under control.

2. Choose a Direction

  1. college, then work (year-round or summer break for coding/fun)
  2. college with part-time work
  3. college with internship (aka co-op job) in summer
  4. work without college degree (can be difficult to get jobs early on)
  5. entrepeneur (consulting, development, sell products)

From your description, it sounds like you need to get organized and then decide on a career direction.

Everything else is largely irrelevant at this point.

Though it is never too late to go to college, it is much easier now while you have no family, mortgage, etc. If you choose college then pick a school that will challenge you (avoid java-only schools and uncertified schools) and commit to completing it in stages (2-year degree, then 4-year degree, for example). The friends and contacts you make in school may be enjoyable and even useful for the rest of your life.

If (or when) you choose entrepeneur, first learn about business, finance, investing, and marketing. Then don't be afraid to fail; as long as you learn from it (and don't hock the family farm) you'll do better next time. Note that selling products scales better than selling your time.

Good luck!

Steven A. Lowe
+1  A: 

I don't believe that a college or even university degree is an indication that a programmer has skills. But it is not useless: it provides auxiliary skills which will be useful later on. While in college I'd suggest taking time to study more abstract things like algebras, algorithms and programming paradigms to improve your thinking and problem-solving skills. Will help you become more flexible in terms of technologies and languages. And with a degree you will most likely be paid more than without it.

In my opinion you will develop most programming skills while doing real work, which will most likely have little or no direct relation to what you have studied (unless your college takes a very practical approach).

Then again, it's a purely theoretical opinion: I'm still a student at a university (applied mathematics) and haven't had any real development jobs.

frgtn
+1  A: 

From my own experience of going to school and then working on software projects with friends who have been self taught I have found that although they can often get the problems done and working, the way they often go about it is not always the "best practice" approach.

I find that school (depending on how motivating your professors are) can make you appreciate the value in things like design patterns, and different programming paradigms which are to easy to overlook when teaching yourself.

leaf dev
+11  A: 

It sounds like a Computer Science degree may be a bad choice, but that doesn't mean some other degree would be.

I came from a similar situation as you. I was a strong programmer that had been working in the web development industry for 3 years already when I graduated from high school. I chose to pursue a Computer Engineering degree because I already felt like I was a strong programmer and wanted to try something related, but a little different.

My first year (when I was working through the intro CS classes) I had no problem breezing through most of them, and many times I wondered if perhaps I should forget college and jump straight into industry. My interests and personal projects at the time we so more advanced than what we were doing in class... was all this work really worth it?

My second year I went through my intro hardware (EE) classes. At first they were easy as they weren't much more than basic circuit analysis that I'd learned in AP Physics, but they got very difficult very quickly for me (there is a special circle in hell for Nikola Tesla and AC power) and I grew to resent the hardware side of my degree. Why did I resent it? Looking back it was because it did not come easily to me. It was easy to say that because largely to this point (only intro classes) the hardware and software side of the degree was completely separated.

My third year I took a class titled, "Digital Electronics and Integrated Circuits". This hardware class was brutally hard, but I learned more about EE in that class than any previous class combined. The lights also finally turned on about how this stuff is useful in the context of computers.

I also took some courses in embedded systems. Now had I disowned hardware when I didn't like it and switched my major to CS (or even dropped out) I never would have gotten to these embedded classes. These are quite simply the most fun I've ever had. I find the mixing of hardware and software to be ridiculous amounts of fun and am looking to find a career in the embedded market when I graduate.

To boil all these anecdotes down to their points... here are the morals of my story (which somehow ended up being longer than the story...)

  1. You may feel like you're badass now, but college has a way of showing you that you are most certainly not. Not only did hardware put me in my place, but I've definitely had some programming classes that I had to work really, really hard in to get a good grade. There is a lot more programming out there than high-level business logic and web development, and a lot of it is much, much harder. (For example, low-level networks, OS, or embedded programming.)

  2. College will expose you to many of the specializations in your field. Had I not gone to college, I probably would have continued working for the web development company I worked for in high school, and it would have been extremely difficult to break out from that. At the time I didn't want to do anything else, but everything else was outside my comfort zone. College will push you outside your comfort zone and sometimes you won't like it and sometimes you'll find it to be the coolest thing since sliced bread. In my case I would have never found out that I loved embedded development without having taken college courses in it.

  3. Not all colleges are created equal. Some schools are a terrific waste of time, like you said. Others are not. For reference, I attend Cal Poly in San Luis Obispo, CA. The reason I love this school is because their motto is "Learn By Doing", which they take extremely seriously. Almost every single one of my engineering courses has had a lab component where we get our hands dirty and put theoretical concepts into practice, learning how they differ from the real world. Higher level courses are very much team-project based, a lot like industry. You don't have to go to Cal Poly to get this kind of educational experience, but you do need to do some research to find a school like this near you. I think it absolutely makes a difference in the quality of what you learn.

  4. College will open many doors for you that you are unlikely to be able to open for yourself. Again, this depends on the school. In getting an Computer Engineering degree, I can pursue almost any job in the hardware or software arena and feel comfortable that I have the knowledge necessary. Had I not gone to college, I probably would have been doing web development for a very, very long time (because it's what I knew how to do). That's not a very flexible career move, and when the economy is in bad shape you need to be as flexible as possible when it comes to your skill set. Also, many colleges will have career centers and job fairs that can hook you up with industry contacts for some very sweet engineering careers, that typically pay more than your average programmer job.

  5. One of the most valuable lessons you can learn is the one where your parents give you asparagus, you say you don't like it, and they say "How do you know? You've never tried it!" You might say to yourself now "but I'll never want to do low-level networks/OS/embedded programming now, all I'll want to do is high-level business logic and web development. First off, you have no idea how long that will last before you get burned out (everyone gets burned out at what they do at some point) and when you do you might not have anything to fall back on or enough expertise in other areas to shift the focus of your career. Trying things you think you won't like will surprise you sometimes, and when they do, it's usually a really awesome surprise (like embedded systems for me).

Bob Somers
Very good bold points. If you're having too easy a time in college, you're not going to a good enough school yet. I remember some *very* smart people talking about their college saying they loved it precisely because it kicked their patootie (non-offensive term used).
Beska
+8  A: 

I want to add that university is fun.

You get to meet diverse people, and opportunities to try cool extracurricular activities - I can't think of any other environment where you can dip into interests so readily (because SU societies will let you try them out for a while before you commit and pay them a sub).

On the academic side, it's an easier and more rewarding way to learn than just reading books. Fine, for easy subjects just read the book, but for tough topics it's great to be able to discuss things with your peers, at tutorials, or directly with lecturers.

Finally, when it comes to project work: what an opportunity to work full-time producing something cool, without having to worry about it being profitable.

slim
+13  A: 

University (and comp sci) is not about learning how to program.

It's been alluded to in several places, but it's worth a bold header all on its own. You shouldn't go to university just to learn (more) programming, and if you choose to, you will be very disappointed. Especially if you already know how to program. If all you want is to improve some technical skills, find a 2-year diploma program that teaches something you don't already know.

A good university comp sci program will not and should not teach you anything useful about practical program that you couldn't figure out on your own, and it's not going to make you a better day to day programmer. It might make you a better designer and "big-picture" system thinker, but there's a lot of intuition that complements the formalism there, and being good on one can compensate substantially for deficiencies in the other.

University is about breadth of knowledge and curiosity for the sake of it. It's about expanding your horizons and exposing yourself to a wide range of information and viewpoints that you simply don't come across on a day to day basis. Not just about computers or computer science, but about all sorts of topics. If you did not do well academically in HS because of the structure and social environment, you may find university more appealing because you generally get to be treated as an adult, make your own choices, and are responsible for your own education. This can be quite liberating compared to a HS environment. However, if you did not do well academically in HS because you were simply not interested in most of the subject matter, then university will be a waste of your time.

A good test is Wikipedia. When you go to Wikipedia, do you get stuck there clicking on random inter-woven subject matter, becoming completely lost on topics totally unrelated to your original entry point? If so, university may be a good place to go. If not, I'd spend time learning more specific technical skills (maybe through a 2-year program) or looking for an apprenticeship somewhere to increase your practical skill base.

nezroy
+1  A: 

The purpose of a college degree is not really to prepare you for a career, in my opinion, although I suppose that there are many who would argue the point. I think that the purpose of a college level education is to widen your horizons so that you can appreciate your journey through life. You are only going to get to make this journey once, you might want to make the most of it.

leed25d
+3  A: 

College with co-op rotations sounds like what would fit you best. I was terrible in school until I took some time off in the middle of college: I came back and had a 3.9 GPA after working for a year. I still finished college in 4 years, too. Suddenly school just got a lot easier than it ever had been once I had been working. I had a much greater self-confidence from co-oping.

Don't skimp out on college. You'll be forever stuck at a lower salary and fewer doors will be open for you.

But more importantly, college is a time to learn in a semi-structured environment and be around other young excited people who are also learning. It's not just about CS, math, or even school but learning about yourself, exchanging ideas, eating lame cafeteria food, geeking out with a physics professor--college is the one time you will have in your life where you don't have to be so focused on money, a dumb client, a stupid boss, a hateful co-worker, closing a round of financing, trying to get a patent or a product out first, or watching wealth evaporate in the stock market.

And college is the best time to meet women. No kidding, once you're out of school, it's very difficult to meet single women.

Mitch Haile
"And college is the best time to meet women... once you're out of school, it's very difficult to meet single women." Its very hard to meet single women in college too. 95% of them are in liberal arts classes with frat boyfriends while you will be stuck in classes with 1-2 arrogant and bloated girls.
Unknown
I like the arrogant ones
Fire Crow
+60  A: 

I'll give you my observations as someone who didn't get a degree until after I'd started working nad have now been in the industry since the mid 90s.

My situation was a little different to yours in that in high school I had mixed grades through the first 3 years (high school is 5 years where I'm from) but I turned that around for the last 2 and ended up, if I understand the American system rightly, the equivalent of valedictorian by a pretty large margin, although this was at a regional government high schol so is certainly nothing to brag about. The point I wanted to make was that academically I was capable.

To make a long story short, I didn't do much in university. I just wasn't motivated. I managed to scrape by in first year because it's easy but I crashed and burned the second year and that was that. The university in question was reasonably well regarded but very non-practical for many reasons eg you learnt Pascal the first year but in the second year you were expected to do C on UNIX with the benefit of simply an 8 page handout; there was no C course.

I ended up going to a technical college. I'm not sure if you Americans have an equivalent but let's for argument's sake call it a junior college. Now this was actually a good move on my part (as it turned out) because this place was incredibly practically focused and I learnt some pretty damn solid C/C++/SQL/database skills that held me in good stead for my subsequent career.

After that I started working, first doing tech support for an ISP back when we had to explain to people how to get Winsock working on Windows 3.1. It was a terrible job but also introduced me to the Web and Perl/CGI programming. This was 1995 so pretty early days.

That lasted about 6 months and from then on I got real programming jobs.

Now like you through this period I claimed with some justification that a degree was a waste of time. This argument was bolstered by the fact that the C/C++ code I was producing was typically done at a prodigious rate (in one job it was 500-1000 lines of C code written and tested a day) and the code was robust (in one case I found it was still being used unchanged 6 years later in spite of their being at least 2 major Windows version releases in the interim) so please forgive me if this sounds like I'm blowing sunshine up my... well, you know where. But the simple fact was I could code rings around most graduates I met.

Anyway at the same time my lack of a degree was a hindrance. I didn't get a look-in at some places and I had to struggle to be taken seriously. And this was long before truck drivers read "Teach Yourself Java in 24 hours" and then applied for programming jobs so the signal-to-noise ratio now is no doubt much worse.

Anyway a distance laerning option became available for getting a university degree and I decided to take it. Some of it was useful and some of it was a complete waste of my time. For example the university insisted I do "Introduction to Java" since it was a second year unit in their computing stream even though by this stage I'd been a Java programmer professionally for 2-3 years (I got 99.5% for that course).

In the end I did get a degree and I can tell you: I'm incredibly glad I did. The advantages are:

  • Some companies will divide CVs into two piles: those with degrees and those without. The second pile gets filed in the cicular filing cabinet. You can argue the point that this isn't justified but it doesn't change the fact that it does happen so having a degree will give you a wider range of opportunities;
  • In IT they don't to care where your degreee is from or the quality of your grades (beyond your first and possibly second job), so you can get a degree from a nothing university and it still has value (more on this in a second);
  • A degree (in any profession) is also a demonstration of your persistence. It shows something about you as a person to be able to stick to a degree for 3-4 years and to finish it. In IT the ability to finish what you start is actually of incredible importance;
  • It makes working overseas that much easier (something I recommend you do at some point in your career);
  • It separates you from the "script kiddies" (more on this in a second too);
  • By having to do papers and the like you learn and practice skills that are useful in business, namely the ability to communicate (verbally and written) effectively; and
  • A degree opens up the ability to go into graduate programs in large companies (and the government). This can be a great way to start a career.

College

Now returning to the point of the quality of the university/college you go to and the quality of it's CS/IT program, I just wanted to expand on that a little. I said (and truly beleive) the most value is obtained from whether you have a degree or not rather than the quality of the program (second place) or the quality of the school (third place). That being said, those things still have value.

Firstly, the quality of the school: obviously someone who went to MIT is going to stand out against someone who graduated from the University of Idaho (actually that's just a guess; for all I know that might be a great school). I'm not sure that justifies the $150k+ you drop on an education at MIT however.

Secondly, the quality of the program. The "better" schools/programs will often concentrate on theory and teach you things like discrete mathematics and really theoretical computer science. Now these things have value and transcend whatever the hyped up technologies of the day are. But they can also be taken too far to the point where graduates actually have no useful skills and have to spend their first three years of work learning how to program.

At the other end of the spectrum are those schools that teach you nothing but the practical. If you have a program that teaches you how to solve programs by using the Java collections classes but doesn't teach you how such things actually work then that school has done you a disservice. Once you know the theory using those classes is trivial.

So look into the program. You'll probably find that many state university systems have excellent programs. A friend of mine went to the University of Texas at Austin (where she grew up) and loved it. As she was a Texas resident it was also cheaper than an out-of-state and/or private school. Your state might not have a good option available.

Also if you have not great grades you may have to go to a junior college and then transfer. This can also be useful if you do go to a new state as the 1-2 years there will probably qualify you as resident and then you'll get lower tutition costs. An ex-coworker's wife went to UCLA this way.

Script Kiddies and Cowboys

Particularly prevelant in the Web world are what I call "script kiddies". These are people who typically have no formal education and can throw together a site in PHP, Ruby on Rails or whatever the current fad is. They're also typically quite young (although I've seen people in their 30s do this too) and they tend to be vocal about their chosen technology proselytizing to all and sundry and dismissing any criticism. You see this in certain areas here too.

Often they'll base their opinions on having once written a guestbook application that gets 3 hits a month and then translate those opinions to, say, a transactional clustered application that has 10k+ concurrent users and processes millions of transactions a day.

Now in one respect I like these guys because I could make a living to the end of my days cleaning up their messes. Call them script kiddies, cowboys or just plain hacks. Whatever the case the propensity for them to produce unreliable code that's typically riddled with security problems is well-known and oft-demonstrated.

The danger you face in that getting no education you will end up being lumped with these guys.

This may not hurt you immediately but it will hurt you at some point. I guarantee it. So I would urge you to investigate education options. You have a bit of an advantage in that you have work you can do remotely and that can help to pay the bills. As for staying at home, if you can then great. If not, I'm sure your parents will understand and actually be quite pleased about (you going to college--even junior college).

Junior colleges and state school systems are where you need to look. Just working now is an easy option but one, based almost 20 years post-high school I would urge you to reconsider.

cletus
Excellent point regarding the script kiddies/cowboys. You *really* don't want to be lumped in with them if you're trying to get a serious job.
Bob Somers
I have definitely reconsidered, and I decided I am going to go to college :). I have two college courses under my belt that I was able to take during my senior year of high school, so that is a good start. I'm going to get my geneds done at a community college, and transfer to a uni later (to save$)
David Anderson
I have applied where my sister works and have an screening monday (hopefully an interview too), any job is better than nothing, and at least it can get me by for now. I'm going to apply when courses start up again and get my geneds out of the way at our community college where I had classes before:)
David Anderson
The U of Idaho actually is a decent school.
Paul Nathan
Can u please summarize
Tim Matthews
+1 for the script kiddie observation - I have a regular contract at the moment clearing up after on of those guys - he fits the description perfectly
Cruachan
Spot on, thanks for the writeup Cletus. Good luck David!
brism
To add to cletus' point... going to University is more than just getting a CS degree. You learn how to think and reason through problems. In fact, I'd say getting a degree in something other than a computer related field will help you become a more rounded person and developer.
Metro Smurf
@cletus: We do have technical colleges here in the states, the most recognizable being ITT Tech and Devry. They're somewhat derided and generally not held in very high regard, but like you said, if you apply yourself and graduate it doesn't really matter where it was or how good your grades were.
Dave Swersky
+1  A: 

This is my experience:

  • University degree (or whatever the equivalent is in the US) helps to broaden your own horizons and teaches you about many things you never even knew about. That said, it's pretty useless in everyday work. It just gives you directions in which you can look further. Although it also enhances your thinking, so there is some use for it in everyday work as well. All in all I'd say it was worth it.
  • Empoyers wish for a degree can vary among countries. Probably even among different employers. AFAIK in my country employers don't tend to give much credit to University degrees. Experience and recommendations are far more valuable here.
  • In these troubled economical times you might prefer to get a work instead of going to a University. Education is good, but survival comes first. No good to be a well educated homeless person.
  • If you start to work and think "I'll do that University thing next year" - it'll be hell tough to do it. Work is WAY more interesting than studies. I know people who are older than me (and some even smarter) but are still putting it off. It's possible, but you will need a LOT of willpower to do it.
  • Again, this varies among countries/Universities/etc. but sometimes it's possible to do both University and work. Actually, in my country it's more or less a norm that most students also have jobs. I did. One may discuss in great length of the pros and cons of this, but it is sort of a "middle road". You can earn money for survival AND end up getting that degree/knowledge. This will require more work adn willpower on your part though.
Vilx-
+1  A: 

I dropped out of college with only one semester to go because I had to work. I'm not really a programmer, nor am I tech-savvy, but I think that regardless of profession, college does count for some things. What everybody else has said (in the comments above) about some companies hiring people depending on the uni they went to is unfair but true.

Btw, I think it's great that a company hired you fresh off high school - that just screams POTENTIAL and a real PLUS on your resume.

It's not my place to tell you to skip or go to college. You've obviously heard from both sides of the fence.

Personally though, most of the things I remember about the things I learned while I was there, aren't really relevant to my job now BUT I still wish I stayed and finished my last sem (for a lot of the reasons mentioned above, and personal reasons too). In fact, that's what I'm saving up for now and hopefully I get to go back before I'm 30. Hehe. (I'm only 24 but times are tough and you never know what tomorrow's going to bring.)

Hopefully you can find a job that would sponsor your college education eh! I think that would be really sweet deal.

I hope things turn out well for you, David!

excel gamine
A: 

If you're thinking people won't take you seriously without a degree then your issue isn't the lack of degree but a lack of self-belief and confidence. If you have these, ability, experience and can point to things that you've made that serve customers/users then a degree should not be important.

Sure some people will hold it against you because they wish to validate their own degree by forcing others to have it, but these are just childish people. In my experience, most educated and decent developers/managers look past this. For me the must have degree part of any job advertisement shows that the person who is looking probably isn't technical, very good or possibly doesn't have confidence in their interviewing abilities.

I applied for a contract a number years back and got turned down without even an interview cause I didn't have a degree. I applied again for a contract there a few years later (i didn't realise it was the same place), got the job and it turned out the last few years of their development had been an utter disaster. I became one of their tech leads and we released some awesome software. Go figure.

I got my break by learning to code while holding down a telesales position and then convincing the company I was on the phones for that I could improve their software. I got a trial period, proved my skills and made them some software. A friend of mine also got me a contract on the side for some hand-held software for a major company to further bolster my CV. Once those two were on my CV finding work wasn't difficult.

The things people are concerned about is that without a degree you don't have a thorough grounding in the core parts of development. However you can do this without college, learn about bits and bytes, learn about encodings, big O theory, functional programming, proper OO design, pick up books and read, try out crazy architectures to see if they work, write a compiler for kicks. Doing all of this is equivalent if not better than a CS degree. If you can do this side-by-side with a real job then you've earned dollar and gained experience. If I was looking to employ either a CS degree holder fresh out of college or someone who coded cool shit in their spare time plus had a bit of experience then i'd be leaning towards the latter to be honest.

Sure such an approach might be more risky and less formulaic than most other paths but if it's what you want then I wouldn't fear it. Helps you grow up more quickly too whereas parts of college can be a distraction.

College can be fun, but to me pulling some software out of the hat on a tight deadline, satisfying the client and making users more efficient is both real-world and AWESOME.

Quibblesome
A: 

With business becoming more global, you need the degree. Even if you never leave your country, the influence of international business is immense, and not having a degree in some countries will get you absolutely nowhere, no matter how smart and knowledgeable you are.

I'm another one of those who never got his degree and haver now returned to college to achieve it. And believe me, at age 38, it's very difficult. I can only attend part-time, and often have to forfeit semesters. Do it now. During hard economic times, you'll be thankful you did.

cloudhead
A: 

1.) what people say about college doesn't matter.

2.) college matters

What people say about college doesn't matter because you will always find a job because of your own initiative and accomplishments.

College matters in large part because it is habit forming. Stamina, Stress management, and intellectual rigor in the chosen field are extremely valuable. This conditioning must be part of your character before you begin climbing the career ladder as the workplace will do more to distract you than help you focus.

That said, college will mean more to you, as it does to me, when you are ready for it. I've spent 6 years working before going to college. It's easier to invest in your education when you've had some thrills. But if you want to be a key player, you will eventually need formal education. It's just the most efficient way to grow beyond a certain point.

Fire Crow