3 ms·
Yes, we just had a period after 2008 when open positions dried up, and I remember 2000-2001 when the economy hit the tech companies specifically (I went to work
by Ologn 11y ago
Yes, we just had a period after 2008 when open positions dried up, and I remember 2000-2001 when the economy hit the tech companies specifically (I went to work at an investment bank). People shouldn't ask if they and their co-workers have CS degrees, they should ask what percentage of programmers in their 40s and 50s they have met have CS degrees (or at least math/physics/EE degrees). 1999 was even more of a go-go time than now, then suddenly everyone was laid off and looking for work, and the few positions open that didn't require a BSCS would have HR go over your educational background asking about it. A lot of the ones without degrees who got jobs when people were desperate to hire got washed out when times got hard, and never came back to the industry. Something to think about when you see all the 20 somethings sitting around you (where are the older people?) and tell yourself a BSCS does not matter.
One point people make is the best programmers without degrees are better than the worst programmers with degrees. This is true but does not mean much.
I took courses in Java and C++, and self-taught programmers tend to know as much as I learned in those classes. What they tend to skip is the theoretical foundations. Calculus, graph theory, theory of computation, mu-recursive functions.
I took two classes (one was elective) which dealt with mutual exclusion, race conditions, critical sections etc. I spent months studying them, writing complex homeworks dealing with them, being quizzed on them etc. This came to be helpful, sometimes very helpful for me. Obviously people are not learning about this as I run across race conditions in code far too often, and I have heard others say this as well. I had to sit down and learn to deal with this for some months and some programmers never do.
I don't understand the comments from people who say they already knew what was taught in class so it was a waste. Class is one fourth of the time, then you're supposed to spend three hours studying for each hour in class. So if you know 100% of what was taught in class you just saved yourself three hours to do something else. I was a Unix sysadmin for a long time and yes, the class where we learned "ls", "cd", "pwd", "chmod" etc. was not that educational. But the next class our homework was to study the process scheduler for Mac, Windows and Linux. I had always put off doing this, so I finally sat down and studied how Linux's completely fair scheduler worked and learned a lot. I learned what actually happened in full when an add instruction came in for two registers on a processor, and what logic gates they would go through. So even what I specialized in was filled out.
Another thing - often it is not what you know you don't know, but what you don't know you don't know. If I know a heap is a good data structure to quickly find the highest number in a list, then I can learn about heaps. If I never heard of a heap I might use a slower method. Or a real world example - in class I learn about Goedel numbers. Then a year later at work I have to take a (short) list of (small) numbers and make them into a hash. But how? Then I remember Goedel numbers. Again, it's not what you know you don't know, it's what you don't know you don't know. To learn by yourself, you have to know what to look for, and you often don't.
As I said, I worked a while as a Unix sysadmin. I went back to finish my BSCS. I'm not rationalizing a decision I made at 18 by talking it up, I realized how important it was to filling in gaps of knowledge, as well as to getting a job, especially when one is needed. A lot of people reading this are too young to have been working when most of the startups and dot-com's folded in 2000, and the few IT positions at traditional companies were flooded with applicants, many with college degrees. Things can turn on a dime, and having 4 years experience in RoR or Node.JS can quickly go from meaning a $120k job to meaning next to nothing.
- gravypod 11y agoSo what you are saying is that the classes are just there to force you to learn by yourself? If I am paying money for class, then shouldn't I be taught the material? Not do something I can do for a free 2-year stint with a computer.
- Ologn 11y agoHow does my three years of reading get compressed to two years? As I said, most recommend each hour of lecture time to be followed by three hours of self-study. Also, if someone is going to do those three years of non-class study (after class in my case) so they can have my equivalent non-class study - why not just do the extra year of in-class work and get the diploma? The attitude perplexes me - "I will study three years like you, but won't get a diploma that will help in employment". No one is forcing me to go to class. But if I am taking a class on theory of computation, with quizzes etc., then it makes sense that that will be the months in which I read about pushdown automata outside of class. So after I choose which class to take in a semester, I am in a sense "forced" to study that topic outside class for the next four months. I can also e-mail my professor or classmates or wait after class or go to office hours if something confuses me.
- argonaut 11y ago1) You will spend 10x the time in those 2 years struggling by yourself (or asking questions online). 2) You will have gaps because you missed things 3) You won't retain the knowledge as well because you won't be tested on it. 4) If you're someone who isn't good at math, good luck motivating yourself to study real analysis, optimization theory, statistical learning theory, etc.