views:

396

answers:

15

Hi,

I've been programming as a hobby for a long time. I'm 23 years old and and haven't completed college. My job right now is not programming related (although it is in IT). I just started going back to college this year (a community college) and I'm finding it very difficult because the classes are extremely basic. I don't feel comfortable learning about HTML from a guy that doesn't understand it too well.

Here's some of the things I consider myself "knowing": Linux and GNOME platform libraries, web development, C#/.NET, Ruby/Rails, Javascript... I've even dabbled in Scheme and other lisps quite a bit.

I don't think school will make me a better developer. My end goal is to get a programming gig (maybe in a Rails or Linux company), but I have no experience and no degrees currently.

I'm wondering if it would be better if I just started producing code and contributing to open source to make a name for myself. If you're hiring someone are you more likely to look at degrees, or would you pick a candidate that has no degrees but has demonstrated their abilities?

I can't really do both, because I work full time and school is full time. I have a wife and a daughter, so what little time I have left over, needs to be spent with them. If I quit school it would give me time to work on other things and get my projects out there.

What do you guys think?

Update: Just so you get an idea of what this web development class is all about. The first day the teacher demonstrated the <h1> and <p> elements and using his HTML template (which doesn't declare a DOCTYPE and other important things). We were given the assignment to create a web page with a list of our favorite movies using the <p> element. I asked if I could use an unordered list (<ul>) and was told I would be counted off for not following the assignment.

I believe in semantic HTML and don't feel right using paragraphs for what are actually lists. I compromised by writing it as a paragraph ("My favorite movies are X, Y and Z.") instead of a list.

This is extremely lame.

Thanks for the help everyone! Your answers didn't make my decision easy like I thought, but at least I'll make a good decision now.

+2  A: 

I think you should go for the degree. It demonstrate to employers that you are capable of accomplishing non-trival tasks/projects and don't give up (drop-out).

Money-wise it is also good investment.

If the classes are too basic then maybe you can become a teaching assistent? This is good to have on your CV and it will strengthen your soft-skills (presentation, organising, managing). Set the goal and accomplish to be the best in your class / year. I am sure this would be noticed and could open up job opportunities you can only dream of now.

Peter Mortensen
If a company won't give you a try simply because you don't have a degree, then look elsewhere. You don't want to work for a company like that anyway.
Kenneth Reitz
FASFA (in this US) is paying for the college, they won't pay for a class I test out of and I can't afford to pay out of pocket. Which means I have to attend each of these ridiculously basic classes. Although, I am enjoying the non-computer-related classes, because I do not know them as well.
+1  A: 

Dude, definitely get yourself out there. School isn't going to help you at all at this point.

After seeing many talented executives come in without a college education, there seems to be a blueprint to succeed if you don’t have a college degree:

1) Learn how to sell. 2) Find a problem you’re passionate about solving. 3) Be courageous and more willing to take risk. 4) Make a lot of friends. 5) Develop instincts by failing quickly. Taken from http://caffeineoverflow.com/college-optional-thinking-about-thinking

Kenneth Reitz
+2  A: 

The shortest answer is "it depends."

Some employers will require a bachelor's degree, many in IT will not. You will find that there are a number of careers where you can only get promoted "so far" before you reach a glass ceiling of some sort. Management types will find that they need a masters of some sort (usually MBA) to get promoted.

My recommendation will be to get your bachelors at night. Since most community colleges only offer associate degrees, get an associate degree that can lead to other opportunities. Some of the more important classes in business are going to be on how to give presentations, because you'll find you'll do that a lot once you get away from being a grunt.

There are 2 types of managers: process oriented and results oriented. Process oriented managers are usually the ones obsessed with getting to work on time, is the correct cover sheet on the TPS report and whether you have the "right" kind of degree. Results oriented managers want things done: correctly and (hopefully) on time. Developers tend to have a hard time working for process oriented managers/employers.

Tangurena
+1  A: 

Almost all companies (at least here in Australia) will throw out your application if you don't have a degree. Don't forget that filtering of resume's is done by HR, which will most likely have no technical knowledge.

You really need the degree not so much for what you learn (even though you will learn !) but because you are really restricting the number of prospective employers who would even consider you with out one.

hhafez
+1  A: 

It depends if you would rather be working for yourself or working for an IT company. If you're going to be doing freelance work on your own, the most important thing is to get yourself out there. If you're going to want to go to work for an IT company, many want you to have a degree.

That being said, I'm currently at a university and getting my BA in a major that I would have never anticipated being interested in had I not been in school.

James Skidmore
+1  A: 

The interesting thing about programming is that people who have experience without a college education can be just as competitive and even BETTER than their well-schooled counterparts with no experience. I wouldn't trust a person who's applying for an engineering position with no educational background, but I'd be willing to consider a programmer that has extensive experience with no education.

I think this is because most universities teach their students to be computer SCIENTISTS, not programmers. In other words, they learn a lot of concepts about computer science as academia, such as algorithm run times and how to model scenarios into mathematical equations, but they only receive enough programming knowledge to 'get by'. As a result, they come out of college with a Master's or a Ph.D, but can't write FizzBuzz and other simple programs.

Daniel T.
+1  A: 

Skip the basic classes -- there ought to be a way to get together with a guidance counselor, department head, or someone else with the authority to let you pass on those to get to the interesting things. When I went back to school for my MS in CS, I was not going to take intro to C++ or Java classes. And I didn't have to! It wasn't a big deal at all. I got credit for some, got waived requirements for others, and got to take more interesting classes.

I definitely wouldn't take an HTML class, period. Really, I wouldn't suggest taking any language classes at all. If you're comfortable with data structures (and know your trees, hashtables, and other things), skip that too (but cruise the syllabus).

Go for these: architecture, analysis, algorithms, operating systems, maybe compilers, parallel processing, design patterns, OO. And then you can get into the fun electives.

(I may be describing my MS in CS program more than I'm describing what's available at your school. If so... are there other local options? I started my classes in person, but wound up finishing remotely, due to marriage. I recommend taking classes in person if you can do it.)

khedron
Unfortunately this is a tech school, so I was aiming for an associates then go to university... I'll talk to a counselor and see what I can do.
khedron
+1  A: 

Some perspective from someone who graduated in CS 5 years ago: almost my whole time studying CS was to waste. The disciplines most useful to me were physics- and math-related. I made the mistake of studying CS already knowing how to program very well expecting to learn some magic but guess what there's no magic, it only dragged me back.

I had started mechanical engineering and quit before starting CS and that's one thing I regret now because if I graduated ME I'd still know CS just as well as I do and then know mechanics.

So if I may offer some advice, it's this:

  • if you want to become a better programmer go for a math course - programming is nothing but maths with added syntatic sugar
  • if you want to maximize your job opportunities go for a degree in a related field yet not CS: electrical engineering, biology (hey biotech is booming) where you can learn a new set of skills to complement what you already know.
  • as you already noted, CS is just wasting your time. Just quit it.

Regading the skill/degrees thing: you don't WANT to work for a business where they value degrees over demostrable skill. Helping open source projects is a nice way to begin. Or get an internship if nothing else.

Kristoffon
Excellent points. I graduated with an EE degree and found I learned far more in my engineering classes than I ever did in the CS classes I took.
Joel Potter
That's good thinking. I really love hacking on electronics, but found it pretty difficult to understand everything from what's available on the web. Thanks.
I don't know if you simply had bad teachers or bad curriculum, based on your experiences you discuss here. CS and programming are not synonymous, though many think so.
Marc
I'd have to disagree with your assessment of programming is nothing but maths with added sugar. That is way of the mark. For example, what does the MVC pattern have anything to do with mathematics?Also I disagree with you saying CS degree is a waste of time. Depends where you do it. A CS degree that teaches you HTML in the first year does sound a like a waste of time but not all CS degrees are like that. In my course we learnt C and Haskell in the first year along with Mathematics/EE/Digital Signals/Micocontrollers etc... If you are not learning anything then look elsewhere don't give up!
hhafez
Keep in mind ... you *still* had the CS degree. Who knows how things may have played out early on if you had followed your own advice here! The points sound valid to me, however.
rpflo
A: 

A lot of otherwise-good firms apply "does he or she have an applicable college degree" as a filter to do a first skim of the huge numbers of resumes &c they get. Typically a bachelor (often known as a "4-year degree", though in Europe with the Bologna process it can be reached in 3 years after high school... but then, high school's typically 5 years in Europe vs 4 in the US;-) in CS, IT, some applicable form of Engineering, etc, will be the threshold.

The very best firms may add an "or otherwise comparable experience" provision to that rule, but that typically means many years doing successful professional-level development, with strong references to support it, etc; and besides taking longer than achieving a Bachelor degree would, there's something a catch-22 nature to such provisions -- to get hired you need experience, but how DO you get the experience without first getting hired?-)

If your plan is to go in business for yourself -- i.e., found a startup -- then the degree is less of a block; you MAY have a bit more issues getting VC funding, perhaps, but if your business plan includes bootstrapping (making it to IPO without a drop of outside funds) then that's not a real problem. Steve Jobs and Bill Gates did have pretty successful careers without first achieving their bachelor degrees, after all!

OTOH, unless you do fancy yourself as the new Bill or Steve, even if you do manage to get some job now you may still in the future regret the decision to forego getting a degree; you may find that the lack of it hampers your career progression in the future (excluding some firms or limiting your promotion level in some others). I did have a couple of personal friends in similar situations in the past.

So, it's YOUR decision, just be aware of everything that's being pointed out in these many answers!-)

Alex Martelli
Side point to your "otherwise-good firms" note: I remember looking at NASA's application policies after I graduated from college. As I recall, they explicitly said, "PhD, or Masters + 2 years experience, or BA + 4 years experience". I appreciated that.Not having the college degree at all isn't necessarily a killer ... but you have to be lucky, and it really does help.
khedron
@khedron, yep, nice of them to specify so precisely what they'll take for "equivalent experience" -- few employers bother to!-)
Alex Martelli
+13  A: 

One of the biggest mistakes that I made in my life was thinking that "programming" was computer science.

I learned to program when I was 8 years old (in 1973). By the time I was a freshman in college I had been programming for 10 years, had written an accounting system for my father, and had done two years of research in molecular modeling and graphics at a nearby college. I thought that I knew all there was to know about CS, so I didn't major in CS, I majored in Chemistry.

When I graduated I got a number of jobs as a programmer. I was very good. Had a really good time. Made a lot of money. It was the 1980s and I wrote my own window system for a client, wrote a write-once file system, and did some really cool stuff with medical imaging.

Looking back, I really wish that I had gotten a degree in CS. I could have done so much more if I had gotten a strong grounding in algorithms, math, cryptography, etc. I would have spent a lot of time researching new stuff, rather than reimplementing stuff that other people had done 5-10 years earlier. I would have really contributed to the state-of-the-art. Ultimately I would have contributed a lot more and (incidentally) made a lot more money.

I think that I know what I'm talking about because in 2002 I did go back to college. This time I went for a PhD in computer science. I learned a huge amount of stuff, had a great time, and now I really am contributing. But I do wonder how much more I could have done if I had gotten a more thorough and systematic grounding in the field.

vy32
<b>Update:</b> Sounds like you are in the wrong class.
vy32
A: 

I think you would be well served by a degree, although not necessarily a CS degree for the reasons mentioned above. The math and logic taught in some CS programs can be very useful when you are working on a seemingly novel problem or when the available libraries are insufficient to the task at hand.

That said, get the hell out of the community/Vo-tech school. You sound like a smart guy and I think you'll see a difference in some of the better Comp sci programs. There is a great deal of variation between Universities and even programs within Universities. Seek out the school with the best program you are interested in and can afford. I would suggest a hard-science with plenty of math. Some folks have mentioned Electrical Engineering, which I think would work nicely, but anything which focuses on the scientific method and opens up higher level math will work

Rob Allen
A: 

I graduated in Economics, done a lot of sales, and for some reason ended up teaching myself to program (PHP, Ruby, Rails, HTML/CSS).

I went freelance to build up a some experience for my resume on the side of my regular job, thinking I'd like to interview for a developer position somewhere.

Turns out a degree in CS, or the experience doesn't matter anymore as I've started my own web design/development LLC which is keeping me busy full-time.

If you're the entrepreneurial type (sorta sounds like you could be) you could try freelance to build up the resume--or end up employing yourself.

rpflo
A: 

If you really want to see if you can make it as a programmer try the following:

  • Cut back your hours for school from full time to part time.

  • Think about what kind of programmer you want to be? Contractor/full time employee?

  • Think about developing a portfolio to show off your skills. Create your own personal website.

  • Look at you current pay and compare it to a programmer position. Depending on the opportunity you usaully will start on the low end of the stick.

  • See if your current employer needs help in the developer positions. Maybe you can sneak in as a junior developer.

  • Join a user group in your area.

Don't quit school! Going back to school now seems dull but just wait. School helps you get organized and turns on the learning part of your brain.

The hardest part of your quest in the beginning is just getting some real world experience you can put down on resume. Depending on how much money you currently make you could try to go to a it head hunter and see if you can find a job that incorporates your current skill set with some programming.

Remember when changing paths the first job you get will suck but it will lead to better things.

A little bit of patience will pay off! Your only 23 years old so you have time on your side.

+1  A: 

There are really two parts to your questions; “What will help me get a programming gig” and “What will make me a better programmer”. The education may help you with getting the gig if the employer focuses on certifications but in my opinion, it will be far less effective at making you a better programmer.

The examples you gave from your class are a perfect illustration. You’ll find people who are absolute aces at academia and but lack the real world skills needed by a professional software developer. I’ve interviewed a lot of people over the years and often you’ll see CVs with excellent scholarly credentials then you begin asking simple, real world questions and the wheels fall off (seems particularly prevalent when peoples have masters degrees).

I’m sure there’s a lot of different reasons for this but I think one of the key ones is that CS degrees tend to cover a pretty broad range of technologies (and things not related to technology!) whereas you’ll most likely be going for a job to perform a very specific function such as a Rails developer. While you’re learning everything from discrete maths to chemistry as part of the degree, other people are out there doing nothing but Rails all day long and becoming true subject matter experts in it.

At the end of the day, the qualifications are a piece of paper and don’t prove anything beyond being able to rote learn and pass tests within a predictable, controlled environment. Compare this to the value of an active online profile (Stack Overflow, writing blogs, tweets, community projects etc) which actually shows what you’ve been involved in and where your level of competence is through practical examples. If I had access to these kinds of resources during my uni days I would have taken a very different path.

Troy Hunt
A: 

Computer Science or degree in general isn't as important as you might think. I may be wrong, but my experience tells me that degrees (especially in the Ruby on Rails world) aren't nearly as important as your public Open Source projects.

I'm running a small Ruby Shop myself and I would rather hire a guy with a few Open Source projects on GitHub than a CS guy. That said, it would be even better if you had both, a degree in CS and an Open Source project.

Christoph Schiessl