Several months later, a headhunter sent me to interview for that job, which was still open because they hadn't been able to find anyone with the necessary Unix experience before I applied.
I got the job.
They could have had me several months earlier, and without having to pay several thousand dollars to a headhunter, if they had not stuck on that requirement for a master's degree in their ad in the paper.
I've always ignored them and it's never been a problem.
At that time in my life, it wasn't even possible for me to have a computer science degree so this startup clearly wasn't affected.
It was around this time also (when faced with the prospect of wanting to go to University for a degree) that I look around at all of the courses available to me and did some research on what I wanted to do.
I really didn't like the look of a single CS degree. I was only really interested in the web and most courses which had any focus on "web technologies"/"the web in general" were so outdated. I didn't have anyone to ask for advice so I figured I could probably learn everything I needed to by hand. I still wanted a degree so I picked a degree which I knew would be well regarded for my entire life. I don't regret that at all.
The only gaping holes in my knowledge which I wish I could fill in, would be advanced maths, some cryptography theory and general algorithm knowledge.
I wouldn't say that I've suffered one bit by not doing a CS degree. The startup that I'm working on has applied to YCombinator and I've build up everything I've needed to through self taught work.
Clearly, depending on the field you want to go into, my path might not work for you, but I've not suffered.
I spent most of my time where I had to the choice of study on intellectual property. If in 5 years time things don't work out for me, I would have just one year left to qualify as a solicitor.
But saying that, I have at least 10 years worth of startup ideas so the liklihood of that is looking pretty slim!
I ended up joining a course but dropped out after less than a month; the first sign that it wasn't going to work out was at the initial interview where someone said "You've done some web work I see? I bet you'll be able to teach me a thing or two!" that person was the head lecturer.
Algorithms, advanced maths, and cryptography are also the areas I feel I lack.
All in all, I don't think I've suffered in the slightest either. Finding the first job was probably a bit tricker, but in hindsight I've had an additional 3/4 years earning good wages than those people who did do the degrees. I'm not strongly opinionated as to whether they're worthwhile or not, but I don't believe I've been negatively impacted by it.
I have thought a few times that the traditional style of education simply isn't applicable to some people; I was never very good at school, but flourished once I learnt how to teach myself what I wanted to learn.
to fill those gaps. I've taken both classes at my university and have learned more in the first few lectures of these free online classes than I learned all semester at university.
Here's what appears to be a third party uploading all the Algorithm videos: http://www.youtube.com/watch?v=u2TwK3fED8A&context=C4809...
If you'd like a copy of the assignments I can send them to you.
My guess is that they'll iterate over the material and open again next "semester." I'm at a loss as to why they're still operating under "semester" paradigms. Will likely be removed after a few iterations of the course.
I would very much appreciate a copy of the assignments. My email is in my profile (I'll happily use whichever transfer method is most convenient for you, of course - gist, etc.)
Contrary to many reports here, I found my time at uni quite rewarding. My professors had ties to local businesses (Ericsson/Sony Mobile) keeping the coursework relevant (one course actually covered programming in a team. 8 hours solid every Monday working in a team competing with other teams against a "customer", using XP methodology, pair programming, source control, the whole hog). I learned things in algorithms courses, optimizing compilers courses, networking (build an HTTP server device from MAC up), circuits (build a programmable computer on a breadboard starting with just a pile of transistors and working up, including all the boolean logic/karnaugh maps)
The only course that was out of date was web programming. Seemed like it was from the late 90's, teaching neural networks and agents and things.
I had pretty good growth when I was working for the big firms, so it did not affect me there. However, after starting up, I find that I really wish that I had some formal education in CS. It bothers me that I might be coming up with really inferior solutions to certain common problems. But my hands are a little full right now. Some day, perhaps.
Edit: Fixed a couple of grammatical errors.
Also, the contacts made can of course be very helpful. That's what got me my current job. These can also be made elsewhere, but it's easy to be surrounded with lots of other CS people when you're in school.
However, if you're motivated and a good self-learner starting out, I don't think most places care where you got your knowledge once you've had some real world experience.
But almost 15 years later I now find algorithms teaching in top universities completely out of touch with reality. Hardware changed drastically in the last decade and it seems they just gave up. It's turning into a cult of big-O theory with even tournaments with problem sets specifically picked to validate the books. Don't you dare point them to real algorithms, you'll get booed in a sec. This becomes worse in places like Google or fields like AI.
It's very sad, I'd love to see somebody taking the torch and teach concepts based on reality (measuring). Like they did back in the 60s. Mainstream sucks nowadays.
I was legitimately afraid that I would waste my time on things that would largely be irrelevant outside academia in the sense that I had to factor in a couple of years to learn how you realistically work and create something of value.
Algorithms are such a goddamn exciting subject, and it's a shame when someone manages to make it boring or unintelligible. I'd love to have studied CS at a good American university, but with visa rules and the slim chances of admission to a good college, I guess I have to find my own way - even though getting a work visa is probably going to be semi-impossible.
So it goes.
Edit: thanks for the anonymous downvotes validating my point; dissent must be suppressed.
While we are at it, probability theory should have a much stronger emphasis than calculus for CS. It's only seen on graduate CS on most universities. In my uni, we had 2.5 years of calculus and a miserable .5yr stats/probability course, wich was mostly stats and it was one of the less emphasized subjects. Why is it like that? I bet because engineering (and mainstream math) focus is somewhere else.
I never said it was supposed to be CS, I just showed the system... His response had nothing to do with anything... His words were just a quick self-defense he seemed very used to use, in a pretty destructive way.
It took me some time to know University was doing no good to me, but now I'm past detox and I'm glad I dropped out.
I don't care if 'it is not CS', I learn whatever it takes to build awesome stuff.
The course was structured around a single group project. We were assigned to a "customer" in the department, and we were responsible for soliciting (and formalizing) requirements, developing a design, implementing it, and testing it. Revision control was not optional, and we were taught how to use it. Our grade was based upon how well we completed the task, how well we presented ourselves to the instructor and "customer", and how we were assessed by our fellow teammates.
No one suffered any loss to their theoretical background, the universe didn't explode, and everyone left the class a better programmer than before. Since a CS degree is still, rightly or wrongly, considered the sole requirement for many programming jobs, I think it was time well spent.
I like calculus and math in general. But undergrad CS emphasis should be information theory, algorithms and discrete mathematics. They never used calculus to analyze algorithms, not even once. I've only seen it used on books (Knuth or Rivest et al.) In the majority of universities CS is still dominated by the same teaching body from math or engineering.
Since now we have videos of classes at top universities, there's no benefit of the doubt anymore.
Calculus and other basic math is just part of general numeracy and a university that failed to teach it, even emphasize it, is a failure, or a trade school.
To each their own, I guess.
I'm most curious about what you mean when you say "real algorithm". Can you offer an example?
It seems like such a trivial issue since most universities (I believe) now offer the distinction, but 20 years ago you would probably have been joining the 'young' Computer Engineering discipline. As an interesting data point, MIT still classifies the program as the "Department of Electrical Engineering and Computer Science"[1]
I kept telling myself though, that upper year would be more programming/cs and less math. Boy, was I wrong. Upper year "computer" science is as far from computers and academically possible. Before dropping out I was able to claim that in my previous 5 "CS" courses only 1 had anything to do with programming.
The professors loved their theory and academia, and while all well and good, I wanted something more applied, or real, to relate to the real world. No professor ever tried to relate some combinatorial concept to anything happening in the real world today, which made me a very depressed student.
I finally decided (after sleeping on the decision for almost a year) to drop out and pursue a "Computer Programming" course at a Canadian college. I'm currently doing some pretty rewarding (both financially and experientially) contract development work for a local company while I wait for the College classes to start in the Fall.
Dropping out may not be for everyone, but if you realize that what you're studying isn't what you want to do, it might be time to shake things up.
Also, if your professors didn't relate things back to the real world, that's a shame (and I would say a failing on their part). Lots of computer science concepts/techniques are useful for real world things.
The name of the field misleads a lot of people into thinking that CS is only about programming, but it's way more than that. Personally, I think all of my CS background from university is what distinguishes me as a software developer instead of just a "programmer".
I consider myself a software developer because I work on the software from top to bottom. From business requirements, to user interface and usability design, to architecture and algorithms. Someone who is responsible for all aspects of code, but not other areas of the application's development, is a programmer to me.
It's funny how all these labels we throw around in the industry have no generally accepted definition.
That title should be reserved for those who pass (a currently nonexistent) certification like other professional engineers, and indicates that they are capable of working on life-critical systems like car software, medical systems, space shuttles, etc.
Unfortunately startups and web/mobile app companies may abuse this and require engineering certification for job openings when it's just unnecessary.
I think I would have enjoyed more programming courses, but I wouldn't have learned anything particularly useful.
I feel like a CS degree based around learning programming languages would be a huge waste of time. Languages are what you should be able to pick up very quickly on your own. They are just a tool. It's more important to understand the concepts used in computers and software. Plenty of people learn programming languages as a hobby, or as a teenager, etc. A CS degree has more to offer than that.
Similarly, getting an art degree isn't about learning how to use photoshop.
I do not currently program for my job - I'm a product manager - so this is a counterpoint to the "no CS degree but I rock at programming" responses. I'm actually a mediocre programmer, but an excellent improviser and duct-taper.
However, I absolutely loved studying CS, especially the more theoretical parts, and even nearly ten years later, there are odd things that turn up that make me happy I studied CS rather than sticking with my original plan of maths. (for example a recent foray into compiler design, and a sidetracked conversation about memory, both of which were topics I hadn't touched as hobbies since my undergraduate years but which I had some base, stored-away knowledge of).
Perhaps I took the shortcut and self-teaching would have resulted in the same long-term results (except the whole immigration process, which was greatly expedited by my career-relevant Master's). I do wonder, however, if lack of role models and environment would have become an issue if I were slogging it alone. At university I had a fantastic mentor and a great environment where I could delight in logic and systems without worrying about anything else - employability, chromosomes, the real world.. ultimately, that latter was the downfall of my PhD.
My mom still wants me to finish a degree someday, but at almost 32 years old my work experience is worth a lot more, and I'm pretty sure any company that wouldn't hire me due to lack of a degree is not a place I'd be very happy at anyway.
My dad used to push me to get a degree. Now that I have a job he's cool about it. I still think he'd be happy if I finished college, but I prefer working on my music career in my spare time, which might not lead anywhere but is deeply satisfying.
I'm still somewhat bitter about dropping out. I don't particularly enjoyed school, as I always thought it kept me from learning the stuff I really cared about. But in retrospect I have to admit that I got exposed to a lot of stuff I might not have ever heard of elsewhere (like telecommunications engineering, Cisco administration, theoretical mathematics, and so on). Not that I learned much of of any of those, but I feel more rounded overall because of it.
Though the crowd might make you uncomfortable, you can take solace in the fact that you need not connect with all of them. Friends, or close friends, are mostly in single digit for most people.
> I also have severe depression and OCD which prevents me from getting things done.
Letting the mind wander isn't a bad thing, provided you get some stuff done as well. Plan for small tasks which you can get done. Are you familiar with lexers and parser? Implement an infix(a+b) to postfix(ab+) converter, where `a+b` can be an arbitrarily complex expression. Learning Python? Build a web app which takes a movie name as an input(use any web framework), searches twitter for mentions(use urlliib2 or equivalent), classifies tweets as negative/positivie(simple bayes classifier or use a library) and assigns a rating to the movie.
These are just examples. Getting things done makes you feel good and can help you counter the "disappointment" you mention.
Right now they're just feeding off each other. A big part of depression is feeling like you have no control over what's happening in your life. The OCD might be a way you're trying to feel like you have control over something again, even if it's just the formatting of your documents or when you wake up. Then when you can't achieve that you feel even more out of control and more depressed and the cycle is just going keep getting tighter.
I cannot recommend strongly enough that you go see someone and get this looked into. I know it's scary, I know it might feel like it's too hard or like it's pointless, but just do it. It took my mom actually showing up and physically taking me to the doctor before I started to get help, and by then school was ruined for me, and so was my credit. I had declare bankruptcy a few years later to shed the debt that I had run up while I was too depressed to make myself pay bills. Not the best way to start your mid-twenties.
You owe it to yourself to get this fixed.
I actually adored high school. There were 330 people in my graduating class. I graduated third, only a sliver of GPA away from salutatorian. There were 6 National Merit Finalists in my class (including myself) and one of the things that always drove me to excel in high school was the sense of competition with my very intelligent peers, along with the support of some amazing teachers who actually cared about us and would be actively disappointed when one of us didn't live up to our potential. Many of my advanced classes in high school were very small. We had 12 people in our AP Chem class.
Then I got to college and I was just another number. I lost my peer support group and any meaningful feedback on my work from my instructors and with it, my motivation.
Until that point in my life, I'd always had my sense of self and identity tangled up with academic achievement. I was a "smart kid". Doing poorly in college didn't just feel like a failure to get a particular grade, it made me feel like I was a failure as a person.
It took me years to get over that. In fact, I'm not 100% sure I am completely over it. But at least I don't let it consume me anymore.
You're more than your grades, you're more than college. There is so. much. more. to any single person than a single facet. If you think you'd do better in a smaller school, try to transfer before it's too late. Or if you decide that college isn't for you, don't beat yourself up about it. You can still well, especially in technical fields where skill is more important than a sheet of paper.
And get help for the depression, if you aren't already. I spent about a year on Effexor (and Ambien for the crippling insomnia that piggybacked onto my depression - it was terrible, I used to get auditory hallucinations of alarms clocks and phones ringing in the distance) and it truly made the difference. True clinical depression is a chemical blackhole in your own mind, and the drugs can give you the foothold you need to find your way back out of it.
I'm in the mathematics degree category as well, with a career mainly in numerical programming.
Of course, that's not to say that this would preclude someone from being employed in many of the same jobs offered to CS graduates, but it underlines the fact that the two disciplines are still very different, even if they involve related skills. If we only used the 'employable in the same jobs' benchmark, then psychology and sociology degrees might 'count' as history degrees.
Not knocking CS or journalism. But the best teams in both industries are made of a mix of disciplines.
The math, algorithm and data structure courses have been useful for my programming career.
I love coding, and I'm self-taught. I believe its possible to be a great programmer even without a formal degree, if you are passionate. The vice versa doesn't hold.
The course that I miss in the CS degree I dropped out is compilers.
Except for possibly your very first job, I don't think having a CS degree or not matters for most jobs. Experience and ability are all that matters.
In fact, looking back, most of the good people that I can remember personally had math, electrical engineering, mechanical engineering, or nothing. The two with nothing are stellar.
Today after 17 years of a tech job experience, I have a computer laboratory job which usually requires a Ph.D. Over 50% of my coworkers have Ph.D.s, but they don't wear it on their sleeves, and my knowledge and experience is valued just as much as theirs.
My last two employers did not mind the lack of degree -- in one, the recruiter even commented that I could peer up with double-Ph.D's -- her words, not mine. In the other, the HR representative herself doesn't have a degree.
I've had two employers who were interested in me, turn me down because of the degree. They said they could not hire me because the job description said a degree was required, and they cannot NOT discriminate against me on that -- apparently degree requirements are a way to legally get rid of undesireable applicants without it looking like racial or age discrimination. If they dropped the degree requirement they would get more applicants and it would be harder for them to decide who's best, as well as open them up to (in their view) more discrimination lawsuits. So they use the degree as a legal form of discrimination provided no exceptions are made to it.
Of course the effect of degree requirements, including degree requirements for foreign immigrants, has been degree inflation -- a Ph.D. today is worth what a MS was 30 years ago.
I have thought about getting a degree by examination, e.g., CLEP, or trying to get an honorary degree (I have professor friends), but I refuse to go back to undergraduate classrooms with lecture, homework and exam style learning. It doesn't work for me, even if done online. My learning process is different. I can and do read books -- I have over 500 math/CS books in my personal library -- but not in a linear way in a short semester.
I have a linguistics degree in which I did a good deal of computational linguistics, as well as a minor in CS, and grad classes in both the linguistics and cs departments at my university.
This is the trouble i have with "non-cs related" degrees. NAFTA doesn't recognize me for the degree I have, although at this point I have enough work experience that it doesn't matter.
Actually, taking the time to get a degree may have negatively impacted my career. Which is to say, I don't feel that having the piece of paper has really had much of anything to do with my career.
But maybe I wouldn't have worked out what I wanted to do without the time to screw around and learn whatever I felt like.
I guess what I'm saying is I hope this poll ends up saying that while not a requirement, it's nice to have a degree (mine's going to be in Math/Economics) else I've definitely wasted some time and money :)
Careerwise, not studying CS has not impacted my income, but it may have impacted my ability to get a job in CS. However, I blame this more on my own inability to signal CS competency.
Are you asking for your own rates or are you letting other people decide for you? At my previous company I saw a guy exactly our age get hired without any recruiter or anything and the amount of money he asked for was so low it was embarrassing, we hired him quickly due to how much he asked but honestly with his experience and knowledge he should've been paid much closer to what I got rather than we he asked for, but he was young so he didn't dare ask for something fair.
Don't undervalue yourself.
I don't have a CS degree, but it didn't affect my career at all. I feel that CS would be helpful for interviews and expressing the problem using CS terms. I used to read up on basic CS stuff and talk to CS friends to gain CS knowledge. As long as, one can read and write english and familiar with basic math (logarithms, algebra, calculus, probability etc.), CS is very easy to pick up.
I didn't plan it that way, it's just where the work has taken me, and I do enjoy programming slightly more, I think (maybe - I love both).
I've engaged in a ton of self-directed learning and have been fortunate to work for some extremely smart, and extremely patient people who were happy to teach and happy to give me challenging, real problems to solve.
I make it a point to learn something new every day.
I really doubt I would have been granted the interviews or handful of offers I received if I didn't go back. Even with the degree my 'unusual schooling choices' were commented on by virtually everyone.
Timing/location matters quite a bit. Having been in the industry for a few years now, some of the best coders I've worked with have degrees from other tangentially-related fields.
In my experience, HR departments can use these records for salary justification down the road. With policies like: 'experience may be substituted for education on a 2:1 basis' in effect, you may find yourself paid on par with people having advanced degrees, based only on your self-employment history. Your mileage may vary.
Hackers without a degree are not uncommon today but were unheard of in the 90s, when I graduated. It made it very hard for me to get the first the job, but if anything made me more motivated to prove myself. Within less than a year I became a team lead and had no issues since, because I had the track record.
I actually just took my first "real" job (start tomorrow) and having no degree was not much of an issue at all. It seems like to me if you can write code and answer the silly brain teaser questions that you should know reading absolutely any beginning CS books than you are good to go with getting a job.
While music is pretty far from CS, you do learn a lot about how to tackle and break down problems from music theory/analysis courses. In short, I feel like my music degrees taught me a lot about how to learn.
Knowledge you pick up in school is nice. But I'd say the real thing people get out of any degree program is some insight into how they learn. Those skills can happily be applied to any subject.
I also regretted getting that degree for the longest time, now it doesn't bother me so much. I wish I had gotten a CS degree.
Still, I agree that a CS degree is more relevant.
To be fair, it is taught by the engineering department and has most of the same curriculum as the "computer science" degree - which we don't have here in Uruguay.
We do have a Computer Engineer degree which requires taking exactly the same math as any other engineering degree, and quite a bit of physics and chemistry as well. It's demanding and takes more time than an U.S. degree, so an engineering graduate is equaled to an U.S. master's in Computer Science.
I sometimes regret dropping out of the public university and switching degrees, but there were lots of strikes at the time which set me back two years (to me, it's amazing to see people graduate at 23 in the U.S.).
But I still feel like completing my CS degree, just because it wouldn't hurt to have it, and just because there's some personal pride involved (first person in my family to pursue a degree).
I've got some ground to recover.
every now and then a degree will refer to a high school degree, but usually people say diploma or high school diploma, not degree.
in the US a bachelor's is at least 4 years of work (some degrees like architecture require 5) and from what my european friends (sample size <5) have told me, a US bachelors is about halfway between a european bacheolr's and master's degree. law degrees and medical degrees require a bachlor's degree before the school will admit you for your MD or JD (i've been told this isn't the cas in some parts of euroope).
master's degrees usually take about 2 years to complete. some require a thesis like a doctorate, but many just require taking classes. if you are combining a masters with a bachelors degree within the same program at the same school, then usually a masters only takes 1 year instead of two.
I still think getting the degree was the right choice. I learned some things and made some friends. Career-wise, I'm back to where I was ten years ago.