As for you, the average reader, go/stay in school and get a degree. Life throws all kinds of curves at you. At 20-something it might be cool and trendy to be a modern hippie-techie drinking latte's and coding for Google, Facebook or whoever. One day you might wake up in an entirely different landscape at thirty, fourty or fifty years of age and regret the fact that you did not take the time to complete a degree before your life got more complicated. I've seen this happen.
Not everyone is going to drop out of high school or college and launch a billion dollar company.
Don't be a moron. Get a degree.
BTW, I am not just talking about CS degrees. A friend of mine was rejected for a sales engineering job over someone with a BS in Architectural Landscaping. He had years of experience as a technology developer, just didn't have a degree. The large corporation a a strict requirement for BS degrees as a minimum, even if the degree was bullshit or unrelated. He was told they wanted to hire him but could not due to the lack of a college degree.
Neither did this guy. Most of us without degrees did something similar to what this guy did; do a high dollar job for a while for a low-dollar wage, and eventually you build up enough reputation that you can get paid market rate.
>As for you, the average reader, go/stay in school and get a degree. Life throws all kinds of curves at you. At 20-something it might be cool and trendy to be a modern hippie-techie drinking latte's and coding for Google, Facebook or whoever. One day you might wake up in an entirely different landscape at thirty, fourty or fifty years of age and regret the fact that you did not take the time to complete a degree before your life got more complicated. I've seen this happen.
Serious question: What is the downside to going back to school later?
I mean, sure, if you have someone giving you free money to go to school, yeah, that might be a time-limited offer, and you should take it. All other things being equal, you should take free money. But for those of us who have to pay our own way? seems to me like it would be much easier to go back to school when you can make a bunch of money working part time.
I mean, I don't know; I haven't seriously attempted to go to school. But I can tell you that when I work part-time, my hourly rate is more than 10x what I could get when I was 17, and trying to go to school while working. My cost of living isn't much higher than it was then, either. (biggest difference, probably is that I've gotta pay for health insurance now.) - I could live pretty comfortably and pay reasonable state school fees, contracting myself out 1/3rd of the time.
So from where I stand now, in my early '30s? it looks like going to school would be way easier than it was when I was 17, and thinking I needed a degree to increase my salary above sustenance levels. But then, I haven't seriously tried to go back, so I don't know.
That being said, the actual schoolwork was way easier in many ways than during my first foray from my 20s. I had time management skills, a supportive wife and stable home situation, and years of experience in the software industry that gave me a reasonable baseline of knowledge.
At some level I am suggesting this has nothing to do with earning more money but rather being able to get a job and not loose it to someone with a degree.
I don't know the answer to this question: How many technical people work at places like SpaceX without having at least a BS? Probably few, if any. You'd have to have a pretty serious track record to get past the filters at companies like that.
I am not being elitist here. Not at all. I am merely suggesting that the reader consider want it might mean not to have a degree later in life.
Also, you might feel out of place in a regular college.
Not that I recommend schooling for the sake of schooling. I'm now doing it myself at the age of 29 (nearly done), and I keep wondering whether I'm doing something wildly irrational.
According to the stats for my region, 56% of women and 45% of men start into a degree program, yet the degree attainment rate is only 25%. I find this attitude a little bit troubling when such a large percentage of the population are already trying and failing.
Given the costs – actual and opportunity – involved, unless you are certain you are in the top ~25% of students and can derive value from that expense, it seems rather foolish to follow said advice. Do what feels right for you and your situation. You know yourself better than anyone else and if you are truly doing what you want to do, there should be no regrets either way.
Look, I've also seen the opposite. I've seen PhD's who are just about worthless. I mean, not a clue. Can't connect the dots. I've seen enough of this to be absolutely biased against PhD's (sorry). Great for academic research but stay the fuck away from work where anything has to be done in the real world.
People need to stop treating a "degree" as being equivalent to "an education." Instead of filtering by whether someone completed years of irrelevant, understimulating general education coursework, why not look at actual past performance and work sample tests? There needs to be an option for already "educated" people to bypass the process of getting a "degree".
lol.
>" The large corporation a a strict requirement for BS degrees as a minimum, even if the degree was bullshit or unrelated. He was told they wanted to hire him but could not due to the lack of a college degree."
Sounds like a place I wouldn't want to work at.
College has been productized to a disgusting degree. If you can do it, you absolutely should not waste years of your life going to college for something dumb vs. doing what you love. You CAN be successful without a degree if you really want it.
There are exceptions though. And even for those exceptions it's not as if going to college hinders them. At most it delays what they would have done had they not gone to college.
Truth is most people out of high school don't know what they want to do. Most probably don't have any marketable skills, aren't self driven enough to succeed without the safety net of a degree and don't have anything productive they'd do otherwise. College is the best option.
However, if you're out of high school, driven and have acquired valuable skills and want to turn that into a business then you better think twice about jumping right into college.
You're right, things do get complicated when you're 30 and with kids. It's 10x harder to go back to college OR start a company OR do the peace corps.
This isn't a debate about what the value of college is (skills, connections, experience, etc.).
American secondary/high-school education, outside of schools and communities outside the norm, is horribly bad. This is the reason Americans have a reputation for being ignorant. And that they are. I would venture to say that the average European secondary school graduate runs circles around American kids. I do realize I am generalizing to a grotesque degree. However, I have had the experience of hiring and working with a number of first year college students. A few surprise you because they are outside the norm: thoughtful, respectful, inquisitive and reasonably well informed. They generally came from families that valued education and somewhat old-fashioned cultural values. The rest? Well, let's just say they never lasted very long.
College, for some, is a required level of remedial education. Kids are coming out of schools valuing drinking, partying and drugs far more than hard work, dedication, the ability to communicate, think and write.
I have seen horrible examples of non-degreed individuals interacting in the context of a professional business environment.
So, yeah, you get to 30, 40 or 50 years of age and things are very different. The cool coder with the dreadlocks and no degree might still be able to get a job. However, unless you are a superstar or run your own business you will have to go up against others with degrees during your job search. In a lot of cases you will loose, regardless of what your actual capabilities might be.
Seems like he wouldn't have even made it to the interview phase if the BS was a hard requirement imposed from above. Are you sure your friend wasn't just rationalizing why he didn't get hired?
That said, I agree with your message -- get a degree folks...
If you are worried about the debt there are plenty of great universities which are not all that expensive. Many schools also have the option of GA/TA where your tuition will be completely or partially waived off.
I will tell you right now that having a degree will not guarantee you even get to try that one thing. Likewise, not having a degree does not free you to work on anything your heart desires. Earning a degree is one way to grow your strengths or fill in your weaknesses in a field. I can't see any situation where having a degree in any subject will make you worse off than not having a degree. It just has to be worth the time, effort, and money to the person in question.
Anyway, the answer is because it is engineering. Not in the capital "E" sense of engineering where you have some sort of official certification from some governmental or professional body that states that You Are An Engineer, By Golly. But it certainly is lowercase "e" engineering in the sense that it is a highly technical discipline that lies squarely in the middle of the spectrum between an art and a science.
Plus, it's just common terminology in the field, so there you have it.
When a credentialed engineer puts their signature to the statement that a particular design is sound, the engineer is liable. Not the company. The engineer. If that bridge collapses, the engineer can be sued. And if the company cannot find an engineer who is willing to sign, that bridge cannot be built.
This is very important. Before we instituted this system, the USA had an average of one bridge collapse per week. And it wasn't nearly as large a country as it is today.
As long as I do not have this kind of liability, and likewise lack the power to tell a company that they are not allowed to release a website with the defects that I can identify, I do not consider myself an engineer. I may be forced to accept that my job title says "engineer", but I am firmly of the opinion that I am not one, and anyone who thinks that I am is uninformed on what it means.
The creative application of scientific principles...
Programming primarily applies logic and mathematics, which is why I have always considered programming/computer science to be more of an "applied mathematics" field, than engineering.Christ, computer science and mathematics are the only two fields I know of that care about graph theory. To my understanding, graph theory is a post-graduate discipline in mathematics, and a computer scientist's bread-and-butter. What does that tell you?
Anyway, this all kind of hinges on whether mathematics is a science. Personally, it never seemed like a science to me- and I don't mean to denigrate mathematics. Rather, it seems completely apart.
And if you are a technical programmer you are doing engineering eg writing weather simulations for the met office or modeling a nuclear rector.
It's simply a discussion people aren't interested in having, and at the end of the day it's the participants who decide what gets up or downvoted.
But in general it's probably more efficient to just to go to college and get a degree.
Pros:
* Cost $0
* Flexible
Cons: * Probably more difficult than going to college.
* You do it alone.
* No networking opportunities, no new friends.
* No credential.
Still, I feel like I'm due for some serious topcoder sessions.I've not exactly had trouble finding work, and make more than most college graduates. I'm going back because:
* I don't want my resume thrown out because I don't have a degree. The climate is great for developers right now, but that may not always be the case. I can handle taking classes for the two years it will take me to finish the degree for a little extra job security.
* I want to learn the stuff! Being as I'm gainfully employed without a college degree, it would appear that I'm an excellent self-learner. Sure, maybe I am, but I know myself, and I know I'll be more likely to stick with learning artificial intelligence and computation theory if I'm concerned about keeping my grade up.
* Also, on that end, I'm not good with advanced data structures. When interviewers break out questions that deal with these problems, I struggle. I could study more and learn them on my own, but the structure of a class makes it easier (to me).
* My employer is paying for most of the tuition costs. I probably wouldn't consider it worth it if they weren't.>You do it alone.
I actually consider both of these to be pros rather than cons.
I also don't really sweat the lack of credentials, but I can't argue that it's a pro with a straight face. It could certainly be used to weed out certain types of companies who place too much emphasis on a degree.
I am however terrified of programming challenges (topcoder, spoj, interview-street, etc.) I have tried solving some problems there using Ruby (back when it was 1.8.x, too slow for these kind of problems) and given up. Maybe I should give it a shot with C. Any ideas how to start, considering these competitive coding websites are quite important when interviewing at certain companies?
- participating in SRMs is great practice for interviews because you're forced to learn to think clearly while under intense time pressure.
- The TopCoder tutorials are a great resource. In addition to review of useful mathematics, data structures and algorithms they'll give you an introduction into how to participate well. For example time management between the easy, medium and hard problems.
- You have four language choices for SRMs. My preference is C#. I like using Visual Studio because the auto-complete/intellisense comes in handy when you have to write a bit of boilerplate code (like "new Dictionary<int, int>();". I've also used MonoDevelop on OS X. It worked well. iirc almost all problems are solveable using C# except a few where, to my knowledge, C++ was necessary. Read-up on Petr's advice. I believe he's a fan of C#.
- My knowledge of C# isn't particularly deep so don't let learning a new language scare you away. imo you just have to effectively use dynamic arrays (List<T>), hashtables (Dictionary<Tkey, TValue>), static arrays and strings. Also a sorted key-value store like SortedDictionary comes in handy once in a while.
- Last bit of advice: solve lots of problems and have fun! You can access a vast archive of problems from previous competitions and match editorials which usually have decent explanations for the problem solutions.
In my most recent interview I was given a computer hooked up to a projector and a real world challenge to solve. I went step by step, describing to my interviewer what I was doing. I got the job.
Watch computer science lectures on iTunes U. These days all the top schools put their lectures online. Try to do some of the homework assignments. If it's too hard, figure out what part you don't know and find an online course on it. Then try again.
Education is meant to produce a difference in job performance; it's good for the worker, not directly to the employer. If I with my college degree can't get a better job than a HS-graduate, it's on me to change.
My parents find my lack of ego around this subject so weird. Also, the world at large is probably more similar to my parents.
Most people weren't really aware - many came from other teams, so they didn't interview each other, and it just never came up. Everyone is just known by their title/responsibilities.
There were two people in particular that were carrying a lot of that team. Not only did they do the most work, they fixed broken design, and other engineers relied on them for support as subject matter experts. One of them happened to be the HS grad, call him Sam, another had a BSc.
It came to be interview time for a new hire, and the hiring engineer (head engineer made team hiring decisions there, manager just signed) asked me for feedback on the candidates. "That guy? He didn't even have a degree!", was his response, even though this guy did objectively better in the interviews than anyone else.
Confused that he would be surprised that I would vote for the clear winner, I said, "Huh, since when has that been a consideration here? Sam is one of our strongest contributors and his lack of a degree sure doesn't seem to be a problem, right?"
"What do you mean? He only has his Bachelor's? Wow! Really?" he said, completely shocked.
"No, Sam doesn't have any degree. He didn't even go to college at all."
After some feelings of both shock and skepticism, he muttered something about being uncomfortable with it, and legal liability, then walked off.
Just a few weeks prior, I watched this guy rave to the VP like a fanboy about how smart Sam was. His favorite employee, until then judged on his merits over the last year, was perhaps not up to his standards now. Boggled my mind. I always thought that a degree is one of a few positive signals that you have a worthy candidate. If someone is already proven, how can it possibly matter?
You can ask yourself "how can it possibly matter" all day long but it doesn't matter. Just get the degree. You'll thank yourself later.
1. The company doesn't value education. It only cares if somebody can do the hard work and maybe pick up what he/she needs to perform at the same level of other people who have degrees.
2. The university program you attended did not give you any skills that can provide a differential in the market. It is clear that several degrees give that differential, such as psychology, electrical engineering, medicine, just to mention a few.
I think both issues are true for CS degrees. Companies are too interested in getting bodies to do their programming jobs, and don't care if the people have the right kind of education (especially at big companies like Google). Universities, on the other hand, are doing a lousy job of preparing people for the profession.
In many professions this isn't feasible, but development? Everything is online. That doesn't mean universities don't provide value. If you were expecting that they would provide exclusive value, as if they have some kind of monopoly on knowledge, and no one could possibly learn the same material in a self-directed way, your expectations need some adjusting.
It is difficult to evaluate, say, a doctor - possibly not the best example, but the first that came to mind - based on his past surgeries because much of that data is never recorded, and what is recorded is impossible to access for a variety of reasons. Therefore you need some kind of system to say that, yes, this doctor is capable of doing the job.
Programmers do not really have that problem. Everything you do is recorded, and in many cases that data is accessible for any prospective employers. Worst-case, if you really have nothing else to show, is that you have to spend a few weeks writing some software to publish to GitHub. With that data, you can prove some level of competency, which is already everything a degree can do and more.
So it is not that education is not valued. It certainly is: You would never be able to do the job without some kind of education. It is that your work speaks for itself, so the degree does not need to be valued.
That being said, Java and C++ ARE still the primary languages for production applications coding at Google (with Go starting to pick up speed). If you're interviewing as a software engineer, you're probably going to want to know something about object-oriented programming (even if that's in C#, Ruby, Python, etc.). A SWE candidate that ONLY knows a purely functional language is going to have an interesting time.
What you DON'T want to do is feel like you have to go out and get a "Learn Python/Java/C++ in 21 Days" book when you have 5 years of Ruby or C# experience. As long as the interviewer can understand your code, you should be fine.
I personally have interviewed several people for my group whose primary language is TCL (yes, really!), Matlab, or Perl. As long as they can walk me through their code, or even solve the interview problems using pseudocode, I won't ding their interview scores just because they don't know Python. I'm not interviewing for traditional SWE roles, though.
The important bit is being a good developer, not which language.
Can't speak for Google though. Just if you were thinking in general terms.
After telephone interviews and on-site interviews in Mountain View (got to meet my friend again on Google's dime!) I got the offer. Up until that point it had been "what the heck, we'll see what happens". Now it was real. We decided to pack up our stuff and leave the country and now I work at Google in MTV.
The only reason I mention all this is because I don't have a degree either. Getting into the United States turned out to be more tricky than getting getting into Google.
All that said a degree will make it easier to get to the interview stage at Google so even though I work there and don't have a degree myself I recognize that having a degree does give you an edge over someone else.
And once you're there, you won't be able to get a Green Card in a year or two, like all your colleagues. No advanced STEM degree; you go to the back of the line. You're looking at waiting a decade or more to really be in control of your own life. Possible, maybe, for someone in their early 20s, but if you are that young, why wouldn't you just get a degree?
Knowing exact solutions to exact problems is not helpful.
That is one interesting question. It can be solved trivially with BFS, but there is also some crazy way of doing it without using the stack (or a queue). I am sure the MS Paint uses what I call it the smart zamboni algorithm. You basically pretend you are a zamboni driver, and paint the screen avoiding obstacles but being careful not never paint yourself in a corner. It is complex but uses no stack space. I don't imagine there are any people that could implement it on the whiteboard. I was glad to see that he didn't do some impossible feat.
In the end, I was savvy enough to know that the rate they were paying me to develop their sites and the amount they were paid was a huge margin.
But I like industrial design, and two years ago had created a few designs that anticipated products/patents/concepts that companies like Microsoft, Nokia, Apple announced only recently.
I wonder if Google would like to hire people like me, especially since now they are also building hardware?
I still had a LOT to learn, and Google is a fantastic place to soak up as much knowledge as possible. Mostly everything I learned about distributed systems came from Google.
The other side of this, however, is that yes, I've done fine without a degree, building countless line-of-business apps, a few games, and doing some amount of administration. I also fix my own large appliances and boats when they break, instead of calling someone. What I'm getting at, is that I am not a computer scientist, or a Rockstar Programmer, just a Handy Guy. And if your ambition only goes as far as line-of-business apps and living comfortably, being a Handy Guy is often enough. Everyone wants guys like us on their team, after all.
I've never dealt with discrete math or graph problems, but only now at the age of almost-36 (and being a computer professional since age 15), am I beginning to think about learning computer science. Or maybe not. It's looking like a decent fishing day. It seems likely, however, that a degree that taught me some of these things, would yield more interesting jobs, and perhaps more enthusiasm for work.
Working at Google is something that intrigues me. After doing (my own) startups for 10+ years, it's one of the few big companies I'd consider working for. It's also one of the few reasons I've considered finishing the last year of my CS degree.
"Those people are not the norm, they are the special case. Well yeah, you’ll not know you’re a special case unless you took a chance. And that’s the hard thing about it."
I've got a lot of the former and none of the latter. While building websites for random clients and studying at a University, I've discovered my interest in the digital world has waned.
I'm saying this because for nearly EVERYONE getting a bachelors degree is the correct path, and if you can get into a program that will let you do a masters degree in less than the usual 2 years then it's a great idea. Less risk, same reward. My high school GPA wasn't quite as bad as OP's, but I had a 2.7.
I've been considering trying to see if I can get a masters in CS, to supplement.
Now take a high school graduate who sucks at math, but may be a great web developer. My advice to them, should they want to work at Google, is graduate from college.
0. Found a startup
1. Get acqui-hired
After all, as they say, "startups are the new grad school".