Fantastic. The OP scored.<p>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.<p>Not everyone is going to drop out of high school or college and launch a billion dollar company.<p>Don't be a moron. Get a degree.<p>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.
About one and a half year ago, a long time IRC buddy from the states suggested that I'd apply to Google. I was a 30-something programmer with a wife and kid who had spent the last 12 years working on trading systems in Europe. I decided to go ahead. Both because I wanted to see what the interview process was actually like and if I could pull it off. Going to work for Google seemed very distant at the time.<p>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.<p>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.
I believe I am a good engineer, I have heard generally positive things about my professional work, have a college degree, etc.<p>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?
My Google interviewer was a HS-educated guy. My parents couldn't believe it. I tend to think - if he is as good at the job as me, what does his education matter? Why should I be offended that a HS-educated guy is in the same room with me?<p>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.<p>My parents find my lack of ego around this subject so weird. Also, the world at large is probably more similar to my parents.
Sounds like he reproduced the college experience without a college. Good for him.<p>But in general it's probably more efficient to just to go to college and get a degree.
> I made mention of a Paint Bucket and the interviewer asked me to implement it.<p>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.
Interesting to see this latest incarnation of the whole Degree/No Degree thing. My time on HN has evolved my opinion of the situation somewhat. As a high school dropout (later, GED recipient) who has drawn decent six-figure salaries despite a strict telecommute-only policy ("If I can't do it from my subtropical island, it ain't worth doin"), I more or less considered the subject closed; I'd done fine without a degree.<p>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.<p>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.
Thanks for writing this. I was one of the original people who asked about this in your previous post.<p>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.
As I quite what I written earlier (<a href="https://news.ycombinator.com/item?id=5770682" rel="nofollow">https://news.ycombinator.com/item?id=5770682</a>),<p><i>"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>
So what's the take away message from all this?
Work hard and enjoy your work.<p>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.
You mention Ruby on your "become fluent" list, but I get the impression that Google doesn't use much ruby. Is the feeling there that skills in ruby can transfer, or is it more important to focus on Java, C++ or Python?
These are all things you should be doing anyway, even if you're pursuing a degree, and want to land a good software engineering job. So the "without a degree" caveat doesn't really matter.
By comparison, here were my steps to Google:
1. Attend a 4 year state school, majoring in computer science.
2. Enroll in mixed bachelors/masters program.
3. Apply for job at Google, pass interviews.
4. Graduate.<p>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.
As an upstart-from-QA developer with a liberal arts degree, #3 is my biggest concern. I've been reading as much about data structures and theory as I can in preparation for the day I have to interview again. It's scary. I feel I am competent developer, can code well, but I know that there's a glaring hole in my computational vocabulary that will bite me in the ass.<p>I've been considering trying to see if I can get a masters in CS, to supplement.
Although the author didn't go to college and had a low GPA in High School, it's evident he had a penchant for math, and therefore grasped advanced Computer Science concepts.<p>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.
I have a Physics and Maths background, NO programming skills.<p>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.<p>I wonder if Google would like to hire people like me, especially since now they are also building hardware?
Where are some good resources for learning the details and practical uses of the various algorithms and data structures one should know? Even if I never end up using the information in my line of work, I'm interested in them just out of curiosity (and they probably wouldn't hurt for job interviews, either).
but the goal behind TopCoder problems should be improving thinking skills, not preparing interviews, I think.
Because not the actions which determines more our future, but the intentions, I think