Hacker News new | past | comments | ask | show | jobs | submit login
Four Steps to Google, Without a Degree (medium.com)
220 points by davidbyttow on May 25, 2013 | hide | past | web | favorite | 142 comments

Fantastic. The OP scored.

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.

>Not everyone is going to drop out of high school or college and launch a billion dollar company.

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.

I went back in my mid-30s, with one kid. I had flirted with a variety of work/school balances up until that point, but working full time and doing school part time was going to require about 8 more years of sustained effort to finish a B.S. With a kid, full time school pretty much precluded me working, as my spouse works full time, so I ended up taking on much more debt than most undergrads, which brings up the next fundamental problem of opportunity cost. I left a $100k/yr job to do school, so that loss of income on top of paying for things like daycare and a mortgage made it a much more expensive proposition than when I was in my early 20s. I don't regret doing it at all, I'm very glad to have finally finished the degree, but there are lots of extra costs and obstacles that come up when you have other substantial responsibilities.

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.

>I left a $100k/yr job to do school, so that loss of income on top of paying for things like daycare and a mortgage made it a much more expensive proposition than when I was in my early 20s

Why did you decide to go back to school if your income was already that high? did you change careers? or was this just a social status/personal enrichment project?

Mostly the latter, though I was tired of writing business applications and looking to move into something, broadly, in the domain of scientific research. Which is not terribly straightforward with only a B.S., but seems to be pretty much impossible without one. So for the moment, I'm still on the job hunt in this area.

I dropped out of CS to work in the games industry. After that I took a financial coding job instead of going back to school, and a few years later am back at school (top 1% in the world), but as a research fellow. Everyone else doing my job has a PhD. It was extremely hard for them to hire me and they had to break the rules but they did. I'm a terrible student but a good researcher - maybe because I have what Feynman would describe as a "different box of tools"

Sure I'll never be a professor, and make decent but not top $$$, but compared to more senior people, I actually prefer what I do day to day (90% coding & research) rather than the meetings/teaching/grant writing etc that those with higher prestige jobs seem to spend their time doing.

I'm probably an outlier, and don't advise others to follow me. If I could go back in time and get the degree I would, but at the moment the opportunity cost is too high. Not just the considerable amount of money, but also the interesting new work and real world problems that I can solve now, compared to memorisation, sitting exams and redoing old problems.

I've worked with a bunch of folks going the other way; physics BAs who couldn't cut it as a researcher who fell back on programming.

From what I've seen, physics majors are more likely than CS majors to have a reasonable level of Linux competency.

>" I don't regret doing it at all, I'm very glad to have finally finished the degree" What was the benefit in the end?

Going to school later on isn't a bad idea or impossible. It could be a good idea for some. I would guess for most it is difficult, if not impossible. Throw a couple of kids and a mortgage into the equation and it's really tough to make independent (and risky) decisions.

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.

I think you're confused. Later in life, it becomes less relevant. If someone is gainfully employed and earning a living that they are satisfied with, I think the only "moron" is the one calling them a moron for not getting a degree. The whole mentality of "one size fits all" for paths through life is pretty narrow minded.

That aside, your post is missing the point. Nobody is advocating for not getting a degree or saying that they are a waste.

> I think the only "moron" is the one calling them a moron for not getting a degree.

That's fine. You are certainly entitled to that opinion. It is also clear you might not have seen what happens to older people who held well-paid jobs and now find themselves looking for work without a degree. Wear those shoes for a while before you think my comments to be harsh. I know a few of those people. It isn't pretty at all.

Perhaps "moron" is a bit extreme. It was used on purpose to elicit an emotional response. "Unwise" might have been a far gentler way to characterize it. Either way, get done with your degree as early as possible in life so that you will not have to regret it later on.

>I think you're confused. Later in life, it becomes less relevant. If someone is gainfully employed and earning a living that they are satisfied with, I think the only "moron" is the one calling them a moron for not getting a degree. The whole mentality of "one size fits all" for paths through life is pretty narrow minded

I completely disagree. You can work for Google and in fifteen years they go bankrupt because Infinootle is using a new hyperrank technique and they employ robots instead of humans. Then you remember that Google was a colossus on the early XXI century.

At minimum a degree is an insurance. Not the best but better with it.

>At minimum a degree is an insurance. Not the best but better with it.

That super cool coffee house that only employs art majors? you need to notice that none of the baristas are over 30.

In all seriousness, you are talking about middle management, and in that case, yeah, you've got a point. Class markers matter very little as an individual contributor in this industry. They matter more and more as you move into sales and middle-management. (what I find interesting is that it seems to matter /less/ when you are the actual owner. Class markers are important for impressing people when you have no actual power, but if it's your company? you can show up in a 10 year old minivan, and you are just being smart with your money.)

That is the thing; The degree is breaking down as a class marker. (that, and if you are American, I'd not put all that much stock in non-monetary class-markers to begin with. Unlike Europeans, to us? class is all about the money.)

Or, rather; the degree from a mediocre school is breaking down as a class marker. To be clear, if you are talking about a degree from Yale, I completely agree with you. If you have a chance to get a degree from yale, get it. I'm talking about the rest of us who have a choice between a job and a degree from a mediocre school. If you show up with a degree from po-dunk state and I show up with no degree? we're going to compete on our merits. (If you show up with a degree from University of Phoenix, as far as class markers go? I'm going to have the edge.)

>I completely disagree. You can work for Google and in fifteen years they go bankrupt because Infinootle is using a new hyperrank technique and they employ robots instead of humans. Then you remember that Google was a colossus on the early XXI century.

you have several issues here. First, if you can't get another job when your current company goes under? you have a huge problem. Huge. You need to focus on keeping yourself employable within your industry/job role. If that industry/job role goes away, you need to switch. But google going out of business? None of the people I know working at google have skillsets that will become obsolete if search and search advertising go away as important businesses. Programming is... pretty generalizable; many of the googlers I know were programming and solving interesting problems before google made that business model a big deal.

Having big names on your resume is great. But you can't rely on that to get you your next job... how many of us have hired someone who used to work at google on the strength of the google experience, and found the results disappointing? I have. (actually the person was a contractor, handling internal helpdesk stuff, but I was hiring for a helpdesk type role, so it seemed a reasonable match. It wasn't.)

Next? automation. Competing with machines is something we all will have to do, degree or no. As a SysAdmin, I've seen tools come out that can make handling larger fleets with fewer people significantly easier; but I've also seen fleets get significantly larger. Some would call "the cloud" an 'existential threat' to my job role, but cloud providers being what they are... this does not seem to be the case.

And programming languages are doing the same thing; you can do a lot more with less programming skill than you could 10 years ago.

(I think automating away programming has an additional problem; most people can't clearly define what they want done in prose. If anything, it's usually easier to clearly specify exactly what you want in code than in prose, even if you are semi-literate. So half the programming job is going from vague requirements to an implementation that works. This, I think, is why we are seeing a diminishing return on 'easier' programming languages... at some level, someone along the chain needs to understand what the hell they are asking for, and nice GUIs don't make that requirement go away.)

The thing is? the best (and perhaps only) weapon that we the meatbags have against the machines is our flexibility. The people who have to be shown how to do a job before they can do it? those people have already lost the battle. they are already unemployed. So training? a whole hell of a lot less valuable than it was back when you could do the same thing day in and day out.

If you want to stay employed? you need to be able to figure out how to solve the problems that the robots haven't been programmed to solve yet. This is a fast-moving target, and while school can give you a larger toolbox, from what I've seen, it leaves people with this laughable expectation that they will be trained to do the job that they are required to do.

I like your answer but I think you went too far.

My main point is how to bet against the unknowns. In this context having a degree increments your chances.

The future? Imagine a future where you cannot compete with robots... or worst... where you cannot compete against the humans competing with robots. Because you talk about preparing yourself against the unknowns... that's really difficult in our field because... they are unknowns and we have an overconfidence bias. May be not you, but the average people do.

I am not saying that a degree is a solution. Just that is positive to add it in the equation. And yes... if you are the next Zuckerberg don't follow my recommendation!

>I am not saying that a degree is a solution. Just that is positive to add it in the equation. And yes... if you are the next Zuckerberg don't follow my recommendation!

But a degree takes limited time and resources; why do you think a degree gets you better ROI on those scarce things than, say, writing a book? I mean, if you know a subject well, you can probably pump out one or two published technical books with that level of effort.

I mean, part of my problem is that school was, well, pretty difficult for me. from what I see, it's one of those activities where being really good sometimes doesn't make up for being really bad sometimes. It's one of those jobs where showing up on time is the most important part. It plays to all my weaknesses, so while I think I could probably pull it off, getting a degree from a mediocre school would take more effort, say, than publishing another book. I'm pretty sure the book would be better for my future marketability, even after the technology in question is obsolete.

I think when you have kids you realize that you had the time and resources to get a degree. You probably will deal with more complexities later in your life.

About your personal issues with school, that's completely understandable but if you could deal with it you will accomplish a lot in your personal issues (beyond the specific degree)

Forking a little bit the main subject, I think that some stuff you see in the university is difficult to learn alone.

>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.

Really? job security? are you telling me that they are willing to hire people without degrees, but then they take the opportunity to let us go first when they have layoffs?

This makes very little sense. The hard part is getting 'em to give you a chance. After you have the job, well, it's easy enough to compete on performance.

You got what I said exactly backwards. I meant it exactly as you put it. It's about getting the job in the first place and not being eliminated outright in favor of someone else with a degree ("lose it to someone with a degree").

Job security has nothing to do with it. It's about landing a job.

The common opinion is that your mental capacity for learning is at peak when you're young and gets worse with age. You might find an engineering degree more frustrating with age.

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.

>Also, you might feel out of place in a regular college.

So how is that working out for you? is it weird being the old student?

My guess is that I'd do much better socially now in my early 30s than I would have a decade ago, simply because my social skills are dramatically better. But, I dono. Being the old guy could be kinda weird, too. But my social skills were really, really poor in my early '20s.

> Don't be a moron. Get a degree.

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.

So long as you are willing to work way down the pay scale, sure. I am merely describing what I think is important in technical fields based on what I have seen around me over the years. I know a guy with enough college credit for four degrees. Never completed the requirements for any one degree. It was incredibly difficult for him to get a job as he got older. A degree would have opened a lot of doors. You go from having to explain and prove yourself to people assuming you are well qualified at a certain level.

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.

> I know a guy with enough college credit for four degrees. It was incredibly difficult for him to get a job as he got older.

There has been a lot of research gone into what makes someone financially successful and the current line of thinking seems to be that soft-skills, like stick-to-itiveness, are the primary factors. Someone who matches the description of your acquaintance doesn't exactly remind me of someone who is has a predisposition for success. Perhaps that has been his failing in the job marketplace and not the lack of a degree at all?

He held an excellent engineering job for twenty nine years while earning well in excess of $100K. Got laid off during the economic downturn. At >50 years of age no doors opened wherever a degree was required. He ended-up going back to school to finish one of the degrees. Regrettably he disappeared while swimming in the ocean and is presumed dead. Rung against the no-degree firewall really did a number on him. Some think he committed suicide. We'll never know.

That's odd, I have no degree, and other than my first few jobs doing programming work, I don't think I've had much issue at all finding work... Generally at very senior developer roles for the past decade. I spend a lot of time reading, and learning... constantly picking up new things.

Then again, I always feel like I don't know enough, though I know far more than a lot of my peers... It just depends. I tried running my own business for a while, and failed. I also worked at a director level for a while, didn't like the stress. It really depends on what you are looking for.

Don't be a moron. Get a degree.

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".

Can you think of a better single, instant indicator that someone is educated?

Why do you need a single, instant indicator that isn't even reliable? Once again, degree ≠ education.

I did use the word educated in my last sentence, but the point I intended to convey is that instead of asking whether someone is "educated," employers and hyperjudgmental social peers should ask whether they're capable of doing their job and participating in an interesting conversation.

>"Don't be a moron. Get 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."

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.

I generally agree with you. While I think college is drastically over priced (both in terms of time and money spent) it's the best option for the majority of people.

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.).

There are other aspects to this issue. I'll preface this by saying that I know this will be offensive to a number of people. So be it.

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.

> American secondary/high-school education, outside of schools and communities outside the norm, is horribly bad.

I'm not sure it is that simple. I recall a recent article that said Canada has one of the best education systems, but, if I recall correctly, 70% of Canadians fit a certain demographic. If you observed only that same demographic in the US, the students in the US actually did better than their Canadian counterparts.

It suggested the problem wasn't the education system in the US itself, but rather much deeper social problems.

> In a lot of cases you will loose, regardless of what your actual capabilities might be.

The good news for those without degrees is that high paying jobs are naturally, by the laws of supply and demand, the ones where employers cannot be picky. If you want to fight for the "bottom of the barrel" jobs, then sure, a degree is probably going to be a significant filtering device. If you're looking at top paying jobs, then outside of legal requirements, the degree isn't going to matter because employers will be happy to have found anyone with some skills.

Programming is currently in that in-demand category, and as such the incomes are high and the education requirements are low. It is kind of funny to see that people think this is something genuinely unique to programming though. It is just economics.

I am proposing that a degree becomes more important later on in life and that this is why one should obtain it as early as practical.

>I am proposing that a degree becomes more important later on in life

Hm. Why do you believe this? Because we are expected to move into management? I think most of the middle management I've worked under have had degrees, so that seems valid. But the owners? business owners very commonly have incomplete college educations. (and I've worked under more than one middle manager who has run (and failed) a small business, and then went and got a mid-life degree from something like the university of phoenix. The experience owning a business seems to carry some respect in middle-management circles, enough to overcome the shame of going to a school advertised on daytime TV.)

I suppose we half-agree then. I always figured that retirement was the perfect time to obtain a degree. Wise enough to respect the teachings and old enough to (hopefully) have the time and money to spend on such luxuries.

I wish that more schools had drop-in options for simply auditing courses... it is far less of an option now than 20-30 years ago. I'd much rather sit in on some history classes than take half of the classes required for a degree in anything relevant to my field of work. I'm not going to make more now, or in the near future... I've had my time in management, don't think I really want it again.

I see that a degree is really necessary for some.. and in some fields even more so... Most of the best programmers I've ever met are simply passionate about programming. Not about where their degree is from.

I think the Internet is doing a pretty good job of solving that. More and more colleges are putting their courses online every year.

Pair that with sites like Kahn Academy and you've got a real solution for self learning.

> A friend of mine was rejected for a sales engineering job...

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...

Yes. Exactly this. Please get a degree. You will have a great experience doing it and get a piece of paper that will make you employable at much higher salaries. Worst case you won't enjoy your time in college. Do it any way. Life is not about having everything your way every minute of your life. It is a marathon. Prepare yourself for the long haul.

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 don't have a college degree, i work for one of the new and successful startup today. Yes, i do regret about not having a degree sometimes[when i'm drunk]. But most of the times, my life is exactly what the OP has written. Life is fantastic for me today. i'm having 5 years of beautiful experience working on amazing things. Having a degree, you are constricting yourself to one thing. But for me, i'm free to try anything provided i have people and their support, which i have actually got over the past. I'm hoping to die happily now. I have tried 7 roles and perfected in one. I want to bring a change, not everyone can spend 7000$ to get a degree. That 7000$ can give food and life for a group of people for 5 years. Think my friend.

> Having a degree, you are constricting yourself to one thing. But for me, i'm free to try anything provided i have people and their support, which i have actually got over the past.

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.

I have seen many many people ... who are software engineers and they feel under estimated if they have to work as a designer. Many of my juniors express worda like, "I have my engineering and I m not happy working as a designer since I have done my software engineering". Most of the people who do engineering stick being an engineer and never try being something else. That was my point. where as me for instance, have worked on many areas tech support, designer, ,developer, customer service guy, computer repair guy, but work with UI since I like it the most. But what really matters is being open to exploring new things, but thats me. anyway.

If you have focused, for about ten years or more, on working as a Software Engineer...

you probably want to be a Software Engineer, and not a designer, personal assistant, or any other role.

You seem to view that as a restriction cast upon them by their degree(s). I say that they probably really like being a software engineer.

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.

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.

Google happens to be one of the companies where getting in without a degree is possible. It also happens to be one of the places where your advancement has pretty much nothing to do with your degree.

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.

Same here. I have a degree from a Canadian university, but not in anything CS-related. I can pass a coding interview fairly easily, but getting into the US is a tremendous pain in the ass.

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?

I believe I am a good engineer, I have heard generally positive things about my professional work, have a college degree, etc.

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?

I am similar- I don't perform well with abstract code challenges. So I don't interview with companies like Google that require them- it's just a coincidence (or is it?) that I don't particularly want to work at those companies either.

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.

My experience participating in TopCoder SRMs (quick algorithm development competitions) has payed off quite a bit when it comes to white board coding style interviews (both as the interviewee and the interviewer). Just thought I'd share a few pointers:

- 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.

I believe Petr has switched to Java now though

Those programming challenges are silly, completely unrelated to real-life programming. Staying awake for 24 hs, writing ultra-optimized snippets of code that barely compile with zero documentation. Training exactly the kind of programmer that is useless in any organization except for programming challenges.

Sure, but if it is what is required to get a job...

Start with the basics of data structures and algorithms. Get a textbook and read it and implement the structures using whatever language you like, and find problems that are solved by using those data structures (and solve them).

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.

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?

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.

I was on a team of about 10 that had at least one of each: HS dropout, HS diploma, bachelor CS, masters CS, Ph.D. CS.

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?

I was a Sam in one of these stories once. Now I'm back in school, finishing my degree. In my version, the next few weeks were not happy ones for Sam.

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.

I don't have a degree and have no intention of getting one (not because I think getting a degree is worthless in general, but rather I feel it is worthless for me at this stage).

I did go to college for a few years but quit to work at a company I was co-oping at (which presumably was against the rules of the co-op program the company was in with the school, but I never gave it much thought back then).

I'm currently nearing 40 and don't feel that the lack of degree has negatively impacted me. Of course, YMMV depending upon career arc -- I'm still coding, and have no interest in management roles.

Also, one of my multiple moonlighting side projects is volunteering at a nano-engineering lab at UCSD working on writing Go code to control a UV-light-based polymerizing nano-scale biomaterials 3D printer. Nobody there seems to care I don't have a degree, nor has it come up negatively at my current or any of my previous jobs.

That's awesome for you. I wish that had been my experience. I will share with you (one of) my stor(ies).

I had been working at a big company for almost five years with no degree and asked my boss "what's next". He arranged a meeting between me and the technical director for our division.

During the course of this meeting another employee reveale to the technical director that I did not have a degree. The technical director refused to talk to me (or even look at me) during and after that meeting and it became apparent from that point forward that there was both no way for me to advance and that my days could be considered numbered.

Your milage may vary. Until that conversation I was a valued member of technical staff that had taken on a variety of leadership roles, authored white papers and was on very good terms with the senior technical leadership in our customers. The lack of a degree killed it all.

Yeah like I mentioned YMMV, I'm sure.

For some people getting a degree might be the right choice, especially if they intend to get more into management in largish companies.

Funny you say that, Sam just had his second successful "exit" since then (the first he wasn't quite a founder, but this one he was). Even if he didn't get "lucky", he was doing fine at ~150k/year salaried at BigCorp. I think if you had trouble in this market, the problem was probably not your lack of a degree.

Honestly, if I were you, I would have considered companies or managers discriminating over that (in the face of evidence of skill/talent) someone you wouldn't want to work for anyway.

our business unit came under new management after I had been there for four years and new management had different priorities. a lack of degree hadn't been a problem before, and it hasn't been a problem since. my lesson from that though was that some people are stuck up about degrees and you can't accurately predict when you will need to work with one of them, even if just for a little while.

there are a lot of employers in my geographic area (not west coast) that have a strong preference for degree credentialed individuals, I've been declined at the last minute after technical interviewers gave the thumbs-up because I didn't have a degree. it's pretty frustrating and ideally I'd like to never be in that position again...

This team of about 10, was it at Google or elsewhere? Wasn't sure given the higher-level context.

You shouldn't necessarily care about this at a personal level, but this has some deep implications, which might be a reason for concern for your parents and/or the society:

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.

It doesn't have those implications at all. I'm not sure if you live under a rock, but Google values education very highly. The error in your logic is believing that a lack of a degree is a lack of an education. A degree is the obvious way to get an education, but not the only way.

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.

As far as development jobs are concerned, the work is out in the open enough that, while education (formal or otherwise) remains important, the accreditation part has little value.

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.

Every profession has some level at which you don't need a university degree to work. For example, the medical profession has paramedicals. Civil engineering have civil engineering technicians. This is the kind of difference that has not been made in the software engineering profession, and would make life easier for everyone. If you just want to be a programmer, get a job at that level without the need of a university degree. The CS/Comp.Eng. degree, on the other hand, should prepare people not just to program but to design and manage complex software projects.

Sounds like he reproduced the college experience without a college. Good for him.

But in general it's probably more efficient to just to go to college and get a degree.

Even with six figure student loans?

There are many, many solid schools you can go to that would not require six-figure loans. Alternately, if you can be in the top 1% of kids, the best schools, like Stanford, are starting to only charge those who can afford it.

But he had a bad GPA, so none of the schools offering those programs were options for him. Six figures seems high unless you make some major mistakes, but remember, he is paying tuition and living expenses and losing 2-4 years of salary, experience, and opportunity cost.

I don't think the "school" vs "no school" argument has to be as black and white as it turns into. I think circumstances vary and in his particular case, he probably chose the most optimal option.

And I'd give him some bonus points for beating ("hacking") the system by finding an alternate path to his goal when it became clear to him that his current position became highly disadvantageous.

Don't get me wrong, I'm not saying the guy in the article should have done something different. I'm solely responding to the guy who implied that going to college -> >$100k of debt. That is a false implication.

Also, the community college. In-district tuition at community colleges is typically less than $4000 for the whole year. The in-state tuition at Purdue is about $10,000 per year. Assuming no grants or scholarships, that's $28,000 for a degree from Purdue (their graduate CS program is ranked #20 (us news), not too shabby).

cheap, fast, or good; pick two.

That's why I'm going back to college. Frankly, you can do it the way he did. There are some pros and cons to that.


    * Cost $0
    * Flexible

    * 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 don't have a college degree. I just enrolled at a local college to finish my BS in Computer Science.

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.

I agree with most of your reasons as well. Especially the first one. Many people might think they're all set because they made it without a degree. An economic downturn could put them on the street and their resume in the trash any day.

>Probably more difficult than going to college.

>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.

The credential is good for things other than getting a job. It can help you emigrate to another country, as well as enroll in a master's or phd program.

Yeah, sounds like a "how to win at being between the ages of 18 and 30".

> I made mention of a Paint Bucket and the interviewer asked me to implement it.

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.

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.

I wonder how he parted with the first employer that had paid for him to build the first game.

Simple: I was honest and direct with them. I told them I had an opportunity that I could not pass up and had to put in two weeks.

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.

I'm a bit curious, why do most programmers like to call themselves engineers even though programming is not engineering?

No, you're not curious, you're just passive-aggressively pointing out that you don't think programming is engineering, but phrasing it in such a way as to make it sound like this is some universal truth that everyone accepts.

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.

But there is an insanely huge difference.

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.

Programming CAN be a system of Engineering (and often is wrt medical and weapon systems). Most programming is done as a craft in businesses, with business needs that reward turn around time and coming in under budget more than ruggedness, or real maintainability.

In a more corporate environment, it tends to favor the use of "Architecture" roles, and the use of many different design patterns even when they are not necessary and only add complexity in the name of "consistency" with other "enterprise" implementations.

Just the same, most software development is a model of crafting, not engineering. The exceptions to this tend to be with designing software that works with physical devices for a given role, not generic computing devices that are virtual representations of business logic.

ABET's predecessor described engineering like this:

    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.

You can learn a lot of graph theory in your early undergraduate years. Only the most difficult problems are really graduate/post-graduate fodder.

I think probably because in the real world, programming and software engineering are the same thing. You can't write a program without engineering at least some of it, even if the overall design was not yours.

Because most of them are software/computer engineers who also program as one of their skills.

Because not all cultures have strict rules about who gets to call them selves an "engineer"

And if you are a technical programmer you are doing engineering eg writing weather simulations for the met office or modeling a nuclear rector.

why the downvote? Donald Knuth himself describes programming as an Art.

Probably because it's off-topic and people are sick of hearing about it.

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.

It was when Donald Knuth wrote that, 50 years ago. Nowadays it is engineering. It is desirable for a programmer to build software, within a specific time, specific cost and certain specs. 100% Engineering. Now this is valid for 99% of software jobs out there. You will always find some company that does software research, but it's the 1%.

I do agree that software development is many parts engineering, but I believe that farming is engineering to the same extent (I do both, so I have an intimate knowledge of how they compare). Imagine a farmer calling himself an agricultural engineer.

It is part of the nomenclature now, so it is what it is, but I don't see what was wrong with the previous "programmer" or "software developer" titles. The engineering part was already implied.

Indeed, in some countries (like mine) calling yourself an engineer while not having the real degree it's illegal, even if it's your job description.

Incidentally, here (Argentina) we have the equivalent of farming engineer, called "Ingeniero Agrónomo". It's a very common career choice, and well paid.

Thanks for writing this. I was one of the original people who asked about this in your previous post.

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 (https://news.ycombinator.com/item?id=5770682),

"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."

So what's the take away message from all this? Work hard and enjoy your work.

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?

In my experience, the actual languages you know aren't all that important. Google wants to know that you can write code well and solve problems in SOME language. If you're smart, you can learn a new language quickly.

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.

As long as it's a multi-paradigm language. I'm not a huge Ruby fan, and you're right, Ruby at Google is almost non-existent. But I know a lot of developers like it, and a lot of companies look for it. So long as you master one of these languages and learn a couple others, I figured you'll be fine.

Being a good developer in any language is pretty transferable. Google isn't going to care if you have to fumble for a few weeks getting comfortable with the syntax.

The important bit is being a good developer, not which language.

Just a warning that, at least in the UK, I've heard that many companies do want you to know a list of quite specific programming languages and advertise for a programmer that does X language with Y years experience in it, rather than going after the computational knowledge side of things. So, you know, just check what you're going for first if you're still at the making decisions about what to learn stage.

Can't speak for Google though. Just if you were thinking in general terms.

As a software engineer in the UK - in my experience, the companies who want you to list very specific programming languages aren't worth working for. If they don't/can't understand that programming experience is transferable between languages, they probably aren't going to respect you for your skills either.

That happens enough in the U.S. as well. More often as many positions are being actively driven/searched by consulting companies (temp/placement agencies for IT/Software).

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.

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.

I've been considering trying to see if I can get a masters in CS, to supplement.

You should work on redefining your goals if all you're concerned about is working at Google, or at another large company.

I too know what other people should want to do with their lives.

My opinion is that it (exactly what I stated, nothing more) is most likely a manifestation of insecurity, rather than a product of anything that's not superficial (desire to help people, for example). I'm not telling you how to lead your life (a fiat), I'm offering an opinion with a suggestion. I give zero shits if what I said applies to you and you decide to stay on the same course. You should get that straight.

I feel like those statements against Google are also most likely a manifestation of insecurity.

A lot of people want to work at Google, and there are always some who have to point out that it's not the ultimate prize, reserved for the best. After all, if it were a universal goal, and you haven't attained it, you must not be the best. The insecure person's solution? You don't work there, because although you could if you wanted to, you have reasons why it isn't worth aspiring to.

Although I agree with your statement, being compelled to call it out demonstrates insecurity. To be frank, some days I wonder if my own insecurity is the reason I tell myself that I don't want to work at Google ;) I'd be curious how many detractors could get an offer from Google and reject it.

It's not that hard to get a job at Google. Rather, it's hard, but there's not much you can do about the difficulty -- the company's low tolerance for false positives leads to a high rate of false negatives.

I am under no illusion that we are the best of the best. We're probably better than average, but only a handful of us are gods (I'm not one of them) and plenty of engineers elsewhere are just as good as those guys. The real upside of working here is the low rate of genuine incompetence.

I just react negatively when ever someone calls out someone else's dream as unworthy. That is true whether the dream is to work at big G or start web startup #102341. IMO, they can both be fulfilling pursuits.

It's true. I could just be bitter about not having a spot. But actually, I don't work in tech and I probably won't anytime in the future unless I'm forced. You can't verify that any of this is true, and that's fine.

I guess I just don't know why you made the comment. Neither the OP, nor probably anyone else, has as their sole concern in life "work at Google/other large company." So I made what I thought was a reasonable leap that you were actually disparaging a hypothetical person's current main goal.

I made the comment because I don't think we should be reaching this level of discussion. We should be discussing something like how we're going to help people, rather than giving each other steps on getting employed. I have a tendency in believing there are better and worse motives. Content like this also shifts the attention away from what is actually important.

It's an opinion, you can ignore it.

>We should be discussing something like how we're going to help people If helping people is a good motive, why isn't helping yourself?

While people must strike a balance between doing what benefits themselves, and what benefits others, that is basically a personal decision. People who work at Google and other tech companies pay taxes, and benefit society in many ways through the positive externalities. It's not for you to say that this isn't enough of a contribution to society.

>It's an opinion, you can ignore it.

If you state it on HN, you can deal with people disagreeing with it, without getting annoyed.

>If helping people is a good motive, why isn't helping yourself?

It's a matter of what you think is right. Do you want to have a philosophical discussion?

>If you state it on HN, you can deal with people disagreeing with it, without getting annoyed.

I'm getting annoyed because the first responder was almost offended that I expressed a belief on what I think is right. I don't care if we disagree, but don't pretend like I'm encroaching your rights because I'm asserting myself.

>It's a matter of what you think is right. Do you want to have a philosophical discussion?

Certainly, you started a philosophical discussion with your top post, so wouldn't you want to have this discussion?

>I'm getting annoyed because the first responder was almost offended that I expressed a belief on what I think is right. I don't care if we disagree, but don't pretend like I'm encroaching your rights because I'm asserting myself.

Ok, I see your point, but this is a complex issue in itself, let's drop it.

I'm not offended. I just think you're wrong. You stated your opinion. I satirically parroted it -- i.e. I indicated my disagreement.

This sounds like the same line of reasoning as "why do we fund NASA when we could be curing cancer". It's extremely flawed logic.

Let people accomplish what goals they want, it's not up to you.

What I'm saying is that you shouldn't focus on getting a job for its own sake. I'm questioning motives, not really the direction you should take your life. The former is more about staying goal oriented, the latter is more about value judgement.

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.

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.

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?

They did hire an industrial designer for Google Glass

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).

I would look at the syllabus that a sophomore-level computer science class would use, which when I took it was called something like Data Structures and Program Design. Take a look at the books taught at places with good CS departments (like Stanford, CMU, and MIT), and see what ones are most popular. Also a syllabus may have example problems, lecture notes, and previous exams.

After doing a little research, MIT OpenCourseWare seems to be really good. So much for doing homework this weekend!

iTunes U is an amazing resource for learning these days. So many courses and lectures and homework assignments. And Khan academy has a pretty good CS section as well.

Or cut it down to two steps:

0. Found a startup

1. Get acqui-hired

After all, as they say, "startups are the new grad school".

David, one question - what percentage of the knowledge acquired only to prepare for the interview did you actually used at the job?

Hard to quantify really. Often, it's not the exact knowledge that you use, but the byproduct of knowing something that helps you learn something new. For example, learning the nuances of a new language became much easier once I took a stab at implementing my own compilers.

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.

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

TopCoder problems quickly become pattern recognition and that becomes (brain) muscle memory.

Knowing exact solutions to exact problems is not helpful.

it is helpful is most cases, but it has to be just a tool not a goal. a developer can reach the same thinking level just by working on its personal projects and by searching and reading about algorithms. However timed problems improve rapidity, which enterprise-oriented skill.

I agree, whole purpose of those learning is to improve thinking ability and problem solving skills, but it also intention of learner, which makes difference.

Huh. I didn't do any of this. Maybe there isn't a single way to do things.


I hope step one is making your site work on tablets because your site doesn't work on the Kindle Fire browser.

Guidelines | FAQ | Support | API | Security | Lists | Bookmarklet | Legal | Apply to YC | Contact