I worked at Google. This makes me sad. Sad to see people are treating a for profit company like a religion. Google is a good workplace compared to other companies but it's not a religion and it's not perfect. As other commenters said it's not the thing it was before either.
I left Google to work on something more interesting and I can't be happier. If we're going to hire people, I'm not putting any weight on their work background.
It reminds me of graduates who want to get into investment banking. They have a ranking in their head of which bank is better than which other, and make a massive deal out of getting into #2 instead of #1 or #3. The reality is that down to #10, they will likely get a very similar experience and chances are they will have gone through 2 or 3 of those banks on their list anyway by the time they are 30.
And at the end of the day, what makes most of your experience is the team you work with rather than which of the 50,000+ employees organisations employs you.
There is signalling content associated with being at the number 1 bank (and a top group within that bank for that matter; e.g., the financial institutions group at Goldman Sachs). If you planned on staying at an investment bank for your whole career then this might not be so important. The majority of people who start these jobs hope very much to jump ship as soon as possible to work on the buy side (hedge fund or private equity), and in that regard the signalling content is very important because there are so many good candidates for any available spots.
People spend years at medical school or law school to become a doctor or lawyer. I don't see the big deal at devoting a huge amount of concentrated time and effort to being an engineer at Google. If you got the free time and willpower (and the author does), more power to you.
If he doesn't get the job, he's still got the knowledge. And 8 months is nothing compared to multiple years in college.
The med school and law school knowledge is equally applicable to any med or law career, because you are studying for a certification exam that is independent of employer. Even if you choose to employ yourself (private practice), you'll have to pass those exams.
The Google study emphasizes what Google tests for, not what you need for the profession. If you start your own software company, for example, is the Google material critically important?
> The Google study emphasizes what Google tests for, not what you need for the profession.
While it's applicability to actual software development is debatable, the Google interview is not substantially different from other top tech company interviews.
I'm sure the author will be well-served with this knowledge even if they don't end up working at Google. There are dozens of other companies which will test the same knowledge (and also pay well).
The IB comparison is apt. People routinely study extensively and run a gauntlet to get a job at an investment bank, and that preparation is generally applicable to multiple different banks.
> People spend years at medical school or law school to become a doctor or lawyer.
True, but both of those are professions. Qualifications that you carry irrespective of your employer. Being 'a Google engineer' is not the same thing, although people might like to imagine it is.
I'm not sure you read the article. In it explains he went overboard, a lot of it wasn't needed for the interviews & narrows down his recommendation to ~3 books.
What are you talking about? Where in this article does the author treat Google like a religion? He specifically said it wouldn't be the end of the world if he didn't make it. He specifically said others shouldn't study that much.
Another comment based on the headline and not reading the article? Bet you'll get those anti-google upvotes anyway.
What about: "The more I learn about Google, the more I want to work there. In brief, Google is a company that [...] gives employees the freedom to make good decisions for the user. [...] Nowadays candidates are chosen based on coding ability, technical knowledge, and Googleyness."
As a user, it hasn't been my experience in a long while that Google gives employees the freedom to make good decisions for the user. Google Plus wasn't about users. The shutdown of Google Reader, or of countless other products that had a strong following, weren't to please or help users.
And what's "Googleyness" if not a religious feature?
All I see here are a lot of personal attacks. Feel free to explain what your definition of "religiosity" is and why it doesn't apply to what Bambax quoted.
I asked which part is religious. Bambax quoted some non-religious things. Why would it be on me to prove everything he/she says is not something it obviously isn't?
Also, which attack is personal? I'm attacking an interpretation. Nothing personal about it.
When you ridicule any aspect of a person (such as their interpretation of "religiosity"), it's a personal attack. Look up the definition of "personal". Oh, and yes: calling someone's interpretation of "religiosity" "ridiculous" is literally ridiculing said personal interpretation.
Btw, I noticed that you still haven't provided your own definition of "religiosity". Are you worried that someone else might ridicule that as well?
> I’ve spent thousands of hours reading books, writing code, and watching computer science lectures, all to prepare for the Google software engineer interview.
Shouldn't you just be doing this anyway if you want to be a good computer scientist? That's how you learn. You constantly take in new information and attempt to apply it and Computer Science is one of the most enabling fields of this form of learning since 1) we all love to churn out an "Experiment" every once and a while and have it fall into being a small side project that makes us a few k and 2) almost EVERYTHING is free! All the info is made by basement-dwelling nerds who sit at home and build cool ass shit and as such they put it all on the internet! Being one of these basement dwelling nerds, it's frigin amazing to have a wealth of all of the fields best research at my fingertips just a google away and I love learning this stuff not for an inevitable goal of "Being a Googler (tm)" but instead of furthering what I know about the world.
If the author is reading this, good on you for learning but don't worry about being a googler if you can do this then you're better then the average googler because you're in the top 1 maybe 2% of all computer scientists if you continually want to learn more. Google even thinks that way, look at their higher level employees like Rob Pike, people who think programmers must be limited because they aren't able to think as well as him about abstractions. Don't waste your time at google. Start a company, build something amazing for yourself or do contract work for others, write these blog posts to get more clients, and make the world a better place. If you're this smart you don't need to run a hamsterwheel for a huge Google-sized corporation.
I agree he's way ahead of the game; being an engineer at Google would be a step back unless:
1. He gets placed as a staff engineer or director.
2. He gets a new shiny project that for some reason he has reasonable autonomy over.
Otherwise he'll get tired of the big-company politics. I can't imagine why a self-starter like this would want a set of bosses.
He's already at the next level, building his own companies (likely an app here and there). He may not be making millions but he's got the fundamentals down. I would think that most folks on HN would much rather be able to own their own businesses rather than being an employee at a large company.
Edit: further down some commenters investigated and figured it out: this blog post is marketing for a Google interview-prep training he intends to run.
Interesting how you consider "building his own companies" to be the next level. Maybe indeed this is a commonly held HN view. I've always thought doing a start-up (or working for a medium sized company) is what you do early on, in order to gain the skills needed and prep for the end goal: Working for one of the top prestigious companies. Look at all the start-ups that are evidently founded for the sole purpose of being acquired by one of the Big Boys.
He's an ex-mil, current-genious computer scientist. Working for google would restrict him to google work.
Working as a contractor, with a military background and a well documented solid computer science background (not traditional of course but still rock solid), he can pretty much right his own tickets in any R&D field. I can't think of a better person to contract out too: worked intel, speaks Korean (Southern dialect I presume), and proably has held a clearance because of his MOS.
He could work on anything that goes kaboom, vroom, flys, or pushes the boundries of human understanding (maybe even a combination of the three!).
Hell, you could even just do "boring" old software development on contract and make sure the infrastructure behind the world doesn't fall apart (That's what contracting programmers do). If you can branch into embeded development you could work on medial, networking, sensor, mining, and aerospace gear.
I understand the appeal of Google, but I'd probably say that if you're the type who likes to self study, who is so motivated that you will devote 8 months of your life to getting something right, who will pour over a book for days on end until you've soaked up every bit of knowladge, and you're someone who can take all of that and put it into solving problems then I don't think your talent will be adaquatly used at Google. Google isn't that special unless you're going to Google to say "I work at Google!"
Working for yourself, on your own timeframe, doing what this person obviously enjoys (learning and applying that learnt knowladge), all while being paid exorbitant amounts of money to build or help build things that push the boundries of human knowladge and possibilites sounds more fufilling then fixing support ticket #449,823,335,465 for Module #32,388,556 in Chrome/Search/AdSense/Cloud software.
Because I've found most masters and PhDs don't have a rock solid understanding of ALL of the Computer Science undertones.
Some are good at datastructures, some are good with algorithms, some are still studying concurancy, parallelism, and distributed systems, and the rest know cryptography (which I hold as not being a Computer Science discipline).
Very very few people have a rock solid grasp of everything (that I consider) in the CS field. If he underwent this curriculum and actually learned all of what he said he did he's a genious. He'd run circles around most people in a university who claim to know the material but are 5, 10, 15 years out of study.
One of my professors is running a class on C and writes everything like K&R (and doesn't use free after he allocates memory. He just allocates and forgets!). Another I have is teaching a programming language concepts class and he says "All of these crazy lazy evaluation nonsense languages are useless" in regards to the entire LISP liniage.
Again, by doing all of these you're far ahead of the curve.
It's definitely true that startups are often founded for the sole purpose of being acquired by one of the Big Boys--but not so that the founders get to work there.
It's because they're hoping to get rich--make the perhaps $10M+ so that they can do whatever they want with the rest of their lives. You almost make it sound like the startup is part of their Google interview strategy and acquisition is how they get hired, but I'd venture that most founders probably don't want to spend more than a couple years at the parent company. They want to start the next phase of their lives.
I wonder if there is any data showing whether on average starting a startup and running it for a year or so is a more reliable path to employment (through aqui-hiring) at these big companies than firing resumes into their black hole job sites or milking your contacts. I mean, sure, it's a "long game" strategy.
What you're describing is a good career path for a self-taught programmer without the necessary network/luck to get into a Fancy Software Company.
Building one's own company to the point where it sustains you is two levels above that.
Here is my model to fit your perspective:
Self-taught programmer/moderately-ranked state school ->
Junior developer at unknown startup ->
Intermediate/senior developer at that startup or another one ->
Software Dev at Fancy Company ->
Start company with colleagues OR high-paid, remote consulting gigs
Interesting. I guess it depends on your acceptable risk/reward profile. I translate your model as:
Junior developer at unknown startup [Medium risk, low reward]
Intermediate/senior developer at that startup or another one [Medium risk, medium reward]
Software Dev at Fancy Company [Low risk, high reward]
Start company with colleagues OR high-paid, remote consulting gigs [High risk, high reward]
I'd characterize the last one as a step backwards IF you consider "low risk, high reward" to be the best possible situation.
No, it's definitely the other way around: people gain experience working for big firms, then use their domain expertise to start their own businesses. Software is no different.
>Shouldn't you just be doing this anyway if you want to be a good computer scientist?
Rather depends on the material. Writing code to learn something new, yes. Writing the same linked list inversion routine over and over, so that you can do it flawlessly on a white board during an interview not so much.
I feel like this is some sort of promotional piece, but I can't quite get the angle - is he a fictitious individual made up by Google? Is this an attempt by Apple to make Google employees look weird? Is he a real person who's looking to publish a book?
Perhaps it's entirely legit, but it just seems so, so strange to me.
There are those of us, of a certain age, for whom the "web" was at best a novelty while we were in school. Even through the original .com bubble, becoming a web programmer wasn't the same as "CS". EE and CS were disciplines for which you got hired at Microsoft (gold standard at the time), Oracle, Western Digital, HP (on the decline), etc. It wasn't that cool.
Then Google happened. Google elevated the Web into a real software engineering platform, and suddenly this novelty thing we were doing was taken over by the hardcore CS graduates.
Our friends and family were like "why don't you go work for Google" and we had to explain how what Google does and what we do are different.
I think that for some people, especially those who have worked in Web their whole careers, the desire to work in that kind of product environment is very appealing. So I would say this person is probably legit in their desire to work at Google.
I have no opinion on whether working at Google is worth it or not. But even if you end up not liking it, I suspect just being there opens a ton of future doors. It's a win-win if this guy is successful.
Yea, I got similar advice during undergrad (back in the nineties, when dinosaurs roamed the earth): The web is a toy. It's not for Serious Developers™. Serious Developers™ do real time embedded systems, device drivers, systems programming, control systems, etc. Don't worry about HTML (which isn't a "real" language for Serious Developers™). Learn C and assembly, and microprocessors. Then Netscape happened and I found myself wondering if I bet on the wrong horse....
An interesting grass is always greener perspective. I have an impression that if you studied C and embedded programming, switching into a Google environment and working on the web is much easier than if you started with Web/HTML and tried to switch into embedded systems.
I took the web route and always dreamed about tackling C and embedded systems. I did some hobby work to learn it but without doing it every day at work, tough to keep it going.
I can perhaps understand that sort of attitude from people fresh out of their computer science degree, or even after half a dozen years of miserable grind in the workforce - but this guy looks to be in his forties, has (apparently) already had a successful career... and yet he has a blog called "Googley as Heck" and his LinkedIn headline is "Future Googler". Is this not all a bit weird?
We're well into the Age of the Personal Brand Gospel. Accepting that fact makes things like this easier to understand.[1] You may want to pick up a copy of Infinite Jest to help guide your transition.
It is on free code camp's blog. So I guess they are advertising to try and pick up the star struck high school kids who want to work at google?
I just ran across free code camp a few days ago on reddit. They have an interesting pitch, learn to code then build a portfolio by building stuff for nonprofits.
That his post is on a website called freecodecamp.com and he is promoting his googleyasheck.com website, yet hasn't actually interviewed at Google yet, does strongly suggest he is looking to build a training service. If he doesn't get hired at Google, he can pivot and say he can "make a bigger impact helping other people learn" with his training service.
Here is another promotional post from two months ago:
1) If he's not hired, how is he going to sell his service? People will say "He couldn't even get himself hired!"
2) If he is hired and does a side job of teaching others for Google Interview, that's a gigantic conflict of interest (and probably a breach of NDA). He will be fired.
Is he planning to get hired, quit on the spot, and then start his tutoring service? (Well, stranger things have happened...)
IANAL, but I've heard in California at least, companies can't claim ownership over work you do on your own time on your own resources, that don't directly compete with the company.
Of course, things get muddier since Google does almost everything. But I doubt they'd want to engender ill will by suing an ex-employee for ownership.
The very fact that "preparing for 8 months for a Google interview" is a thing highlights all the things that have gone wrong at Google and their widely panned bad recruitment practices.
The process has become about recruiting people that are good at the silly process and not about recruiting the best people. Probably OK if Google is in 'megacorp looking to feed more skillled cogs into the machine' mode (which it mostly is), but unlikely the process finds the person that builds the next Google.
I still remember reading the article about one of google's (?) early recruitment campaigns, circa 2001: an ad in the train station that said www.e^(5,000,000 digits ).com, so you would only know the URL if you were nerdy enough to know how to calculate the non-repeating non-terminating decimal. The webpage then solicited them for hiring. I still think that was a cool idea.
Edit: it wasn't e^ of anything, it was like the [5million, 5millionth + 10]-digit-of-e.com
Google is a great company to work for, but there are many great companies out there. Don't close off other possibly-great opportunities because you're focused on working for a single place. Some random thoughts:
- Hiring at Google, despite our best efforts, is a mostly-random affair. The process is optimized to avoid hiring bad engineers, at the expense of frequently rejecting good engineers. If you get rejected, it doesn't mean anything.
- The average kind of eng work at Google is much like that at any other extremely well-run coding shop. You may spend a lot of time working on backend code that unglamorously glues two communications protocols together. It won't require a deep knowledge of fancy algorithms, but it will require a dedication to code quality, sustainability, testing, and personal productivity.
- Or you may get to work on the Next Big Thing, but keep in mind that most NBTs never see the light of day. It's an exciting work environment, but you have to deal with a lot of chaos and a lot more politics and uncertainty.
- The benefits are great, the work environment is great, and the average quality of your coworkers is great. This is the best thing about Google. If I were going to work somewhere else, I would prioritize these aspects.
- Google, like all large companies, is an uneven experience. Some excellent engineers get hired here who never really "click" -- they get put on projects they don't find interesting, they don't get on with their coworkers, etc. The vast majority of your coworkers will be really outstanding, but there will always be at least one person who you think is kind of an idiot. Most managers are great, but there are still a few assholes. If yours is, then you won't have a good time. Google does its best to minimize all of these problems via things like how it handles promotion, but there's only so much it can do.
Long story short: self-improvement is its own reward. Doing things is how you prove the truth of that improvement. If you can combine that with a great work environment, you're pretty set.
It fascinates me the extent to which he regrets not getting a Computer Science degree, and says it impacts how hireable he is. Obviously, data point of one here, but I don't have one and it hasn't come up once in my career.
You may not see web development and software engineering as different positions. Both involve programming and craftsmanship, but software engineering adds to it knowledge of data structures and algorithms, compiled languages, memory considerations, and understanding the impact of coding and architecture decisions on the machines where they reside.
I think that's a simplistic view of what "web developer" is these days. I work in the web for most of the time and I absolutely have to do deal with memory considerations as well as code and architecture choices. And if you're a full-stack developer you're likely dealing with some kind of compiled language on the backend.
In brief, Google is a company that hires smart, creative people, and treats them well. Google rewards merit, encourages big ideas, and gives employees the freedom to make good decisions for the user.
> It fascinates me the extent to which he regrets not getting a Computer Science degree, and says it impacts how hireable he is. Obviously, data point of one here, but I don't have one and it hasn't come up once in my career.
Same here, except for when I interviewed at Google. :) I was interviewing for a frontend position, and I got through the interviews ok and was passed along to a few departments. Payments was interested in hiring me, so I got passed back to the "hiring committee" who has the final say. I started receiving emails from the Google recruiter (who was the go-between between me and the hiring committee) with specific questions about my degree (Anthropology from Berkeley), the timeframe I attended and what my GPA was. In the end, they decided not to hire me, even though the Payments team had expressed interest in hiring me, even saying "we'd love to have you on board." I can only conclude that it was specifically because of my education (or lack thereof).
Google HR seems generally terrible at keeping things straight since they're such a massive company.
I had a recruiter call me up "hey just wanted to follow up, I see you interviewed with us 6 months ago and did great, wanted to know more about why you aren't working here and if you might be more interested now" and had to tell him "well, I didn't ever get an offer, so that would have something to do with it..."
Is native development really that much more complex and deeper than web (application) development these days, more worthy of being considered as software engineering? Because with the modern languages and frameworks at a dev's disposal these days, both seem pretty comparable.
Something wrong with this guy...all this future Googler talk with disclaimer asides about "what if I don't get hired"...and yet he's talking about how you can do it and your success plan.
Anyhow, in general it's getting really weird hearing more stuff like "Google is the best" and "I just have to work there". I question your judgement if you are making these sort of statements as an outsider. At least join the party before you drink the koolaid.
Honestly, if I'm a hiring manager at Google, this would turn me off. I wouldn't reject him outright, but it's a yellow flag in terms how effective he'd actually be performing his job.
The idea of studying for the sake of making it a certain company, for some reason, turns me off. Never had the personality to do things only because a parent/teacher/company wanted me to do it.
But, if there was something more fundamental to study for, like a certificate, or a project, or a competition (something more advanced than a hackaton), that'd actually be really interesting. The relative success or failure with it could, then, provide feedback. I guess Project Euler is kind of close, but it's a bit too much of a one-person affair, and only the right answer matters. In other areas, there are often communities where more experienced people help out the less experienced while collectively getting better, and there are tangible goals at every step. Video games come to mind.
Unfortunately, all I've seen is always around data structures, small scripts and hacks, time-gated, overly simple, and promote what I would call bad code or shallow understanding. It makes you good at the events in question, and you can get some certificate, but whether or not it's actually making you a better developer is suspect and the correlation is often backwards, if anything.
So the only solid goal a lot of people see is getting hired by X company, and, by extension, getting better at interviews. Because that's something you can measure and get good feedback from and it's a lot simpler than trying to figure out what being a good software developer means.
I would bet that a lot of companies consider certifications to be a negative signal when evaluating candidates.
Likely because the certifications aren't meaningfully standardized, so there's not much point in seeking external validation unless you're not confident in your skills.
I used to think the CS-y whiteboard interview stuff was a complete waste of time. But now I look at it as a way to prove objectively you have a computer science skill/knowledge-set. Which is nice because it evens out the playing field because many who have the degree don't have the skills and many who don't could acquire them. So its like a bar exam.
There is still an issue though because computer science base knowledge generally lags behind industry-relevant practical knowledge. For example, algorithms and data structures generally accepted as core knowledge do not take enough advantage of today's relatively high RAM availability. And there is not enough emphasis on higher-level components.
You could argue that everyone has to know that old-fashioned basic stuff well and then layer on newer knowlege or perspectives, but I think some of what is considered computer-science core knowledge should be replaced with newer practical things like understanding components and modules and being able to use contemporary tools.
So maybe less emphasis on optimizing algorithms at the procedure level for starters. It might be more important for most engineers to be good with profiling tools and understand the order-of-magnitude differences between memory/CPU/network latency etc. than do be able to do a third-degree low-memory optimization of a function.
"For example, algorithms and data structures generally accepted as core knowledge do not take enough advantage of today's relatively high RAM availability."
Wouldn't it be prudent to keep your algorithms as lithe as possible? I would think an algorithm/scheme that chews up large amounts of ramm would be perceived as inefficient?
Kinda like the dumpster fire that is Chrome, currently.
Case in point. Read the Google engineering articles describing the work optimizing V8's memory usage. That primarily involved using profiling tools on lots of web pages and then changing the initial size of buffers.
But they still have to use relatively large buffers from an old-fashioned CS algorithm perspective and they couldn't make them smaller without impacting performance the other way. And they can't know that without doing the profiling on the whole system.
So yes you want functions to be lithe but you have to also focus some time, skills and knowledge on optimizing the entire system using tools and real-world data.
> Wherever I end up, I’m going in as an entry-level software engineer. I’m not going in with 15 years of software engineering experience because I simply don’t have it. When it comes to this stuff, I’m the equivalent of a fresh CS grad.
Talk about selling yourself short. You've been a web developer for 15 years. I would think you've progressed a little further than entry-level.
You'd be surprised! I've interviewed many "veterans" (and worked with a few!) who just don't have the chops.
In the world of web development, the developer who knows just enough to skate by without a proper understanding of algorithms and design patterns seems to be the rule rather than the exception.
Kudos to him for acknowledging it and trying to do something about it.
I predict downvotes for my reply here, but I'm genuinely asking a question.
You're not wrong that some developers will simply skate by, but is the developer wrong to simply skate by? Specially as a web developer, I think too many people think that the barrier of entry is high, and it really isn't.
The majority of technology I know how to work with I have picked up out of necessity to make something work (or work better). Even database internals I know little about how they work, because I don't think there's an inherent need. I've worked with many database engines (usually whatever the business wants to use), and I just know enough about DDL/DML and indexing to make things work (note that I'm talking about SQL/noSQL DBs here).
I re-invent the wheel constantly in different languages for pet projects that will never even see GitHub. I act out some of the more modern tutorials to get me more familiar with how other people code. But at no point have I yet had to stop and say "this damn bubble sort isn't fast enough!"
I don't even use an ORM, but I think the majority of web developers don't know SQL and just use an ORM, and I think that's still OK, because they haven't hit the point where they need to use raw SQL to address a performance issue. But when they do, wouldn't they be as likely as I have been to look up documentation, StackOverflow and the rest of the web to get what they need done? And isn't that enough? If the guy sitting next to me knows how to implement a performant/redundant/concurrent database solution from scratch, he shouldn't be sitting next to me in the first place, he should be working on improving database software! And I'll use his tool when he ships it, but that still doesn't make me a caveman.
>"You're not wrong that some developers will simply skate by, but is the developer wrong to simply skate by?"
It's a life choice, neither right or wrong. However, if a person is no more skilled than the lowest common denominator, that person is effectively an easily replaceable commodity and commodities, as a rule, do not command a high price. The rise of coding bootcamps should really be a worrying sign to those who are just skating by.
When I say web development, I am really talking about web application development. The same skills that apply to a native developer apply to a web developer.
On the design pattern side, MVVM and MVC are integral to modern web development. Inversion of control and delegates are used in many JavaScript frameworks in server side frameworks like Node and .NET
Knowing about different search algorithms comes in handy, as does knowledge of data structures and encoding. With understanding basic CS fundamentals, you can better understand how the framework is doing things under the hood and make informed decisions with how to proceed with a given implementation. It also really helps with troubleshooting when things go wrong.
That 99% of algorithms and design patterns are apparently "nice to haves" in web development means deficiencies in them do not constitute "skating by." I only raise this point because there appears to be a huge (and possibly intractable) disconnect between practical needs and theoretical ones when it comes to hiring.
For design patterns REST, DRY, MVC (and it's variants). For algorithms a basic knowledge that a triple nested loop is likely to be O(n^3) and when to use basic datastructures like hash maps/arrays/lists/sets (no need to know how to implement them) etc as well as the humbleness to use library packages should suffice.
I would argue that in 2016 to be a web developer one should either be capable of (1) full stack or (2) building thick client type applications to run in the browser. I would argue that the simple build a website type jobs are dying out and being replaced by Wordpress installers.
The corollary to that is that many companies which insist that they need a 10x PhD with 15 years experience really just need a solid developer who can consistently ship clean, maintainable code.
The thing about constantly learning new things is that after about 10 years you start to forget the old things. The new stuff kind of overwrites the old stuff after a while.
What I find annoying about technical interviews is that they force me to review useless, basic stuff that I learned 10 years ago instead of asking me about all the cutting edge (and much more interesting/difficult) stuff that I have learned more recently.
If you're forgetting it after 10 years, then maybe it's not important. And the alternative shouldn't be the new stuff, because we don't know if that's important yet. It should be the old stuff that people don't forget.
When I saw that title, I was torn between "because you're an idiot" and "because you know what you really want". I'm old enough to know that everybody has an opinion, but I can't help but thinking that studying full-time for 8 months for a job interview is wrong. 8 months is a very long time, and I can easily think a dozen professional contexts where such a time could be put to much better use. It is sad.
Put the possible self-promotion, what not aside, I'd be happy to study for a few months without worrying about working full time if I have revenue generating on the side. This is like attednding hacker school for 3 months and my sole goal would be to learn to make something I never had a chance to do it.
This is like preparing for marathon for 12 months every weekend. I am happy to do this just to make myself more knowledgeable with computer science.
I graduated with a degree and I am sorry to say I haven't really make use of my knowledge greatly because there isn't much to use algorithms or data structure in my position (I work as a DevOps) to the extend of building something truly amazing.
I started reading this thinking it was nuts to put so much effort into targeting one specific company. But by the end, I couldn't help but admire his willingness to set a goal and put in some serious work to accomplish it!
It reads like a PR piece. If it had stopped at "Now I want to be called a software engineer and I'll study for that", it would have been a nice story about setting goals, and working to get there or whatever. But the whole "Google is so freakishly awesome dude! I need to work there!! it's the most better company in the world!" is kind of a turn off.
I can't believe that Google Careers site actually recommend that candidates should study "Cracking the Coding Interview, 6th Edition". This is completely nuts to me.
honestly, that book has become like the standard now. i agree that it's completely nuts but here i am, reviewing it even after being in the industry for at least 3 years.
How are these people that study for what ever company so certain they'll even get an interview? I'm still waiting for Google to acknowledge my application from last year lol.
Oh skimmed it. I guess I missed that. Although I still feel like Ive seen that attitude of studying for these interviews like they're guaranteed to come. Maybe more people have referrals then I think
I think it's the goal he chose that is making it obvious: devoting his time on earth to landing an entry level job at some company -- a hyper materialistic and anecdotal "goal" at best.
Calling it a goal is funny because it has no value for life, to go all Nietzsche about it.
This is just drinking the capitalistic kool-aid and confusing it with something loftier. I call this a mental issue.
Isn't it really, "Why I studied full-time 8 months for a Google job." This is actually shorter than the 4 years of a BS in Computer Science for the Google job.
I'm sure he has learned a lot, but when you study with an interview in mind, you're not necessarily studying to be a good developer; you're studying to look like one. There's some correlation, but it's not the same thing.
This is so true. There are coaching centres here in India, pulling in millions each year to prepare kids for the premier engineering institutes here. Hundreds of thousands of kids join these, but I am still to see even 10% of them working on interesting problems. Like another comment here notes, most of them are becoming a commodity.
Hmmm... I can't quite fault the guy if that's what he really wants in life - I put about 3 months (an entire summer) into unpaid studying for grad school prelims (i.e. I didn't request a teaching assignment for the summer) and ended up being the only person to pass all three exams at once that fall (Note: I think there were a couple people that passed the exams by spreading them out over the space of a year or two).
On the other hand, this seems like something you can only easily do if you are young / no kids / or have tons of savings (rich)... (I strongly doubt my wife would put up with me doing this now) so hopefully for the crop of people that want to work there it is not the norm / maybe their age diversity would benefit from making applicants work record count for a bit more or something, idk.
I appreciate all the effort this guy has gone to in order to document his process and progress. I don't know if I agree that the end goal is worth the effort, but along the way he's collected a nice corpus of knowledge that any strong computer engineering person should know and made it accessible to others.
For myself personally, I don't have a strong formal education in CS, I'm just a smart cookie who picks things up as a I go along. I've also never worked as a purely software developer type role, since I'm Ops/Hardware/Sec focused. But all of the information in here is stuff that is gold to know. I'm definitely going to be using this as a resource to understand the pure CS stuff better, even though I have no intention of ever pursuing a job at Google.
Most Google engineers, if asked nicely, will give a mock interview and give feedback on if you're (in their personal opinion) above the hiring standard.
There are thousands scattered all over the internet - just scout one out and ask.
I've been expecting somebody to point that out. Google is notorious for finding excuses to reject otherwise competent interviewees who happen to be above a certain age. They always hide behind "You're a great candidate, but..." and then list a weak excuse to not give them an offer. It's illegal and immoral but almost impossible to prove.
This makes me feel weird. I interviewed at the Googleplex one time for an SDE position and got an offer that I turned down. I didn't prepare at all. I didn't even get very much sleep the night before.
I think we need to make a clear distinction between 'Working for Google is cool' and 'There are many cool people working at Google', otherwise this cult worshiping is never going to stop.
Great write-up, thank you to the OP for putting this on the web! I have a few thoughts on it.
First, I'm not all that surprised someone would study for 8 months for an interview at Google. I interviewed there (no hire) and gave myself 3 weeks. It wasn't close to enough time, and I've taken a lot of formal math and basic CS plus data structures. Just too rusty, especially at a whiteboard. I could easily have spent 3 months.
Various people here have cautioned against working at Google, and I know people who worked at Google (as SSE's) who cautioned me about it when they heard I was interviewing. No, not in a "run away" sense, more of a "don't get too starry eyed here, it's not that great" sense. But salary-wise, a SSE role at Google would have paid a hell of a lot more than I make right now. I'm just saying, I can see why people put in the time. And plenty of people do love it there.
My advice to people who have more of the fundamentals is to get a copy of "Cracking the Coding Interview" and just making damn sure you can do the hard problems in 45 minutes at a whiteboard. Memorizing won't help you, you need to understand what you're doing on a deep enough level that you can solve similar problems you haven't seen before.
I also recommend knowing basic data structures like the back of your hand. Really, you can't be trying to remember how to program a queue or stack, or traverse a tree, not if you need to use these concepts to solve a more complicated problem in 45 minutes at a whiteboard [1].
Now, on to the other side here...
I love a few things about software. I love it that an econ major who self studies intensely can get "high level" jobs. I love it that no cartel controls entrance, and can force everyone to do a 3 year grad degree with tuitions at 50K+ a year. I love it that really smart people can move at a faster pace because they learn quickly.
However, I don't love it that corporations are essentially our gatekeepers. The "google interview" shouldn't e called an interview, it should be called the "google exam". Calling it an interview creates an ambiguity that confuses people outside our industry. I know people who work in other fields, and while knowledge is probed during interviews, what they go through is vastly different from what we go through in software. My "interview" at Google was a series of whiteboard exams.
Here's what I don't like about this - someone like the OP here studies, intensely, and takes his exams. Suppose he didn't get the job. Well, how did he do? If you take the actuarial exams, or the nursing boards, or the bar, you get a sense of how you did. There is more transparency around the test. There has to be.
As far as I know (based on what I've read about this interview process at Google from people who know, including the author of Cracking the Coding Interview), my name, along with very formal numerical scores, along with photos of the whiteboard after each interview/exam, are in a database at Google. However (yes, for legal reasons), I am not allowed to know more that the vaguest details about this.
A formal exam, in almost every field, has a published study path. It is graded in a way that is audited to ensure fairness and consistency. It must not be capricious. A student has an opportunity, often, to try again. Your hard study, should you pass, leads to a lasting credential respected by industry.
We get none of this in software. I honestly do believe that the tech exam is a big part of why a lot of people quit software development or never enter it in the first place - this in a field where CEOs regularly lobby congress and the president to lament a shortage of tech talent.
We do need to fix the technical interview. I think the first step is to realize that it is a formal exam, and that as such, it needs to come with the usual benefits and considerations afforded to people who take formal professional exams in other fields.
I agree completely, thank you for this great post. The idea that these big company interviews are "exams" rather than interviews is something I've never considered, but it makes complete sense. The Google (or other prestigious tech company) Interview is our profession's Bar Exam.
This guy is sad. All those people on Quora who ask unending questions about Google are sad. They're suckers. They've eaten up Google's marketing.
You want to know the reality? Whatever's special about Google is long gone. Management let the smoke out a long time ago. Nowadays, Google is just another big software company, with all the opaque politics, purposelessness, and random nonsense that comes with being a big company. It's sad to see people strive to be a faceless drone.
As far as I can tell, this guy is motivated, entrepreneurial, proactive, professionally competent, etc. He thinks working at Google would be awesome and he's worked hard to give himself a shot at doing so. He might be completely wrong, work for Google for 6 months, realize it's all bullshit, and quit. Even if that happens, there's nothing "sad" about it. Maybe you have some insider experience with Google and you already "know" that it's all bullshit once you get there. But we can't all have complete knowledge of reality and those individuals who keep moving, in any direction, to go and look and see and decide for themselves, are not sad.
There's a turning point in the lifespan of a company whose product you use. You stop looking forward to product updates and start dreading them because they keep making it worse.
A company makes a good product, gets successful. Hires a ton more people, because they can afford to. Original staff turns over, because that's the way of things. All these new people have to be given things to do whether the product needs a lot of new work or not. Even if the product is in an optimal state, it can't be seen as standing still.
Like it or not, Google is consistently ranked near the top or #1 on all of those "Best places to work" lists that get published from time to time. Everyone I know who has managed to get hired there sings its praises, and none of them have left (yet). I think it's unlikely that each one of their opinions is fueled by Kool-aid. There's something to it.
I don't think this guy is sad at all. I really admire what he did. It's pretty inspiring/motivating actually.
I'd say most of the people who drank the koolaid before even working there self-selected to be at Google because they hadn't tried a job anywhere else in the Bay Area (specifically SF).
What makes Google better than, say, Dropbox? Github? Facebook? Etc?
Median employee tenure is almost entirely dominated by things other than employees leaving. A company that is not hiring will not have any new employees and as a result have a really high median tenure.
The question you really want to ask is: what's the percentage of people leaving each year?
That's also heavily impacted by hiring patterns, though: a company that just hired a lot of people is going to have fewer people leaving (proportionately) after that, since people probably get more likely to leave the longer they've been at the company (though perhaps this is a wrong assumption -- would be interesting to see some data).
You can look at cohorts: of all the people who joined Google in 2013 (eg), what percentage left within one year, what percentage within two years, etc.
Yes. They're hiring at a remarkable pace to the point that they're having trouble scaling the process. They're in the same position that Amazon was a few years ago.
You might want to quote hiring velocity along with that statistic. Interesting that the companies with the lowest turnover are non-growth companies. Should I post the quote about statistics and lies, or does everyone know it?
as an ex-Amzn (but goog exp from friends only so possibly hearsay) I can definitely say the reasons to leave amazon & google are very different. one is push other is pull :-)
That's maybe a bit harsh, but I'm pretty much with you. It's passed the tipping point where it's inevitable it takes on the mold of a soulless megacorp. its really obvious that so many people just "need" to get into Google because it's validation for their ego. "I told you I'm a special snowflake genius!" Google is awesome, and I'm at Google, so you know I'm awesome...yada, yada. The inauthenticity is palpable; you just know these same people wouldn't be busting their ass to work on the cutting edge in No-Name software shop because they wouldn't have that big shiny feather in their cap.
I think this is a shortsighted view. I work for a pretty influential tech company as a Software Developer, I've interviewed with Google twice and have failed both times, but I look at interviewing with and potentially being hired at Google as a great challenge and opportunity rather than something to validate myself.
I'm 25, and I think I speak for a lot of folks my age when I saw that Google is the 'Bell Labs / IBM / whatever big influential company that makes a mark on you as a young adult" company of our time. Now I know that may not be the case now, but when I was deciding that being in technology was what I truly wanted to do (teenage years), Google was coming out with Gmail, and was the 'key' to the internet with search, and bought YouTube/Android, and was everywhere, so I really saw them as a pillar of modern day technology, and to a sense I still do. So whenever I get a call from a recruiter I can't help but be excited. I know their hiring practices are not perfect, but they are still a company who I look towards with bright eyes.*
Nothing you said contradicts preordained's claim that a lot of Google's current hype is due to ego validation. In addition to having the highest average salaries in tech, Google has purposely made their hiring process very stringent, not because the techniques that they use more accurately predict job success rates, but because by making their job openings harder to obtain (in proportion to applications), they increase the subjective value of those job openings in the eyes of potential candidates.
It's premium branding, plain and simple, and the fact that Google employees have to justify the effort and time they put in to get hired in the first place partially explains why Google is rated so highly by current/past employees.
I'd be really curious to learn how much Google spends in man-hours for each hire in comparison to other tech companies.
This is like preparing for an iBanking or Management Consulting interview: undergrads and bschool students alike will spend months preparing for those.
And it's "worth it", if they really have what you're after. For banking and consulting, analyst training is truly great. The signaling after those few years when you're a bright kid who studied history in undergrad, is pretty good too. And with Google, you can't deny that they're one of the highest paying employers around for tech.
It's not for everyone but I think it's fine for folks who have those priorities.
it wasn't so long ago that nobody did this for tech, because we had a self-selecting industry that paid smart people very well, and those banker and consultant kids looked to us with a certain level of envy because we could naturally, seemingly effortlessly (not really), do what they studied years and years to do, which is make over 100 grand in your early 20's without really trying.
those days are almost over. the b-school invasion is in its 2nd decade now.
> it wasn't so long ago that nobody did this for tech
Well, competition for jobs (especially the top ones) has never been so fierce. I remember my first job out of undergrad was programming for a (then) pretty well known hardware company. I cracked open a book on "how to write device drivers" the day before my interview and breezed through the interview and got the job. This would literally never happen today. Interviews (even at no-name "dog" companies) are so much tougher these days and there is so much competition that there is no longer room for mistakes.
These top employers are seen as kingmakers for engineers' careers. It's totally believable that one would spend months (or even years) preparing for a single company's interview.
Yes, you're referring to the "shortage of tech workers" meme that just won't die, despite unprecedented levels of employer pickiness/selectivity and brutal, marathon, whiteboard-hazing-style interviews.
> it wasn't so long ago that nobody did this for tech
How long ago is this?
When I was in school 10 years ago, I know I spent ~3 months studying for my upcoming interviews. I memorized all the big algorithms, and an entire book of programming puzzles.
Prior to that, in HS, I remember reading on /. about programming puzzle interviews.
i remember having a stark realization one day that i probably couldn't get hired to do the same damn job again with any reliability, so thats when i took things into my own hands and started a company so i could deal with a different set of problems other than ace-ing stupid interviews.
that was right when i heard questions about interviewees being left in a room alone for 30 minutes, were being asked idiotic questions like "how many ping pong balls..." or being put in uncomfortable situations on purpose to test their reaction, dumb riddles, or any of a number of other non-work-related questions.
as someone who now has interviewed hundreds of people and hired dozens, i can unequivocally say that the above techniques are a stupid, idiotic, fucking dumb and counterproductive waste of time for hiring good people _for anyone who does not have the time and luxury (read: cash) to indulge in it_.
i would fire anyone who worked for me that insisted on doing interviews like that, because we are not google or mckinsey or goldman sachs and we do not have a never-ending supply of money.
I try to let new grads know this and they still fall for it. Just like when Goldman Saks comes calling. They just do not see these companies and the experience for what it is.
I don't think it's fair to say people are "falling for it." Their motivations may just differ from yours. For example, say you're interested in earning a lot of money as a software developer - where else are you going to work that's clearly better?
That's true if the goal is purely money. I think, though, that if you're just looking to make six figures and don't quite care if it's 150k or 500k then working at a Google or Facebook will be the far better alternative as the workplace culture is better and the hours are likely to be better. For a lot of (most?) engineers, there's not enough money in the world to offset the difference in utility from working at a finance company instead of a development/research company. It's your life after all, and you spend a sizeble chunk of every day at work either way.
It's questionable whether you'll make more money as a developer in finance than at Google. It'll certainly require a lot more politics and careful planning.
Smart techs go to tech companies. Smart & ambitious techs go to finance.
If you're at Google, you certainly won't participate in conversations with coworkers about how Google just tried to poach you with an offer soooo ridiculously low it's laughable.
Any chance you can share more info? I'm very curious.
It's certainly true that almost all finance software jobs pay much less than the big tech companies, and I've yet to personally run into one that clearly paid more (at best, similar or slightly more for some but not all algo trading). So I never exactly know what these comments mean.
Which are the big payers -- just algo trading? -- and does everyone get paid that much or just the high performers, or even just the high performers at the high performing firms? How does high performer compensation compare to high performer compensation at tech companies (who start at, say, $400K-$500k for what I'll call "entry-level high performer")?
SV and Wall Street in the same place = an interesting playing field.
---
I wouldn't say it's fair to compare ALL finance jobs to a few big tech companies.
If you're doing over $500k somewhere in the USA, you should stay there. There are very few places on the planet that offers that for engineers. (and they're probably all big companies).
Let's just say that if you want easy money in London, you should get into consulting. It's also very tax friendly. (200k = 1000 daily rate, don't expect that for most people).
> I almost never hear of London developers making >$200k.
Yeah. £150k is extremely rare (pre-brexit exchange rate)
I dunno know about the costs of living in SF but it is my understanding that at $100k you can barely afford a one bedroom. At £100k in London, you're doing incredibly well.
Yea, if you're not going to give any numbers I'm calling bullshit on the notion that finance pays better than big tech. From my experience in NYC tech, finance developers (not quants) make less than big tech by far.
With $100k you can easily afford a one bedroom. Don't listen to all the griping on Hacker News—it's an exaggeration. Yes, prices are exorbitant but you're still doing incredibly well.
It's not like London is especially cheap. $100k in SF is $70k in London. [0]
I am genuinely confused by London salary in dollars. That makes absolutely no sense.
$100k in SF = $70k in London = £55k in London - is that what you're saying? In that case, we both agree, the costs of living are a lot cheaper (so are the salaries).
Google top salary is 85k base for senior developers, which is shit (numbers from the guys I know, some of which are openly mocking Google and advising people to never go there because of the pay).
Not sure about the other big 4 (Facebook/Microsoft/AMZ), not much more allegedly.
Quants make a shitload more than developers. The standard in finance institutions is £130k base + variable bonus. (Well, now that I think about it, the difference might be the industry, not the role :D)
As for what the top developers make in the top few financials institutions. I need to get a few guys drunk to get accurate numbers. But I already know that it is definitely higher than at Google.
What's your numbers for top performers in NY and SF? In London, there is no money in the usual valley companies. That's just how it is.
> $100k in SF = $70k in London = £55k in London - is that what you're saying?
Yes.
You're right that European developers (even at the big 4) make far less. My comparison was more with SF/NYC salaries, where big 4 developers will easily break $200k and reach $250k without excessive effort.
Well, in Europe, the best is London, and the best in London is either consulting (easy and awesomely low taxes) or finance (hard).
In the USA, obviously SF against NYC, you need to get information from Americans. I can't help you.
In case anyone wonders: inter-continental comparison are worthless so don't bother. It's [almost] impossible for Europeans to get VISA to work in the USA, and even if they get one they won't have the leverage to get the top range salaries.
LOL. I'm sorry, there might be a disconnect between us. You're not in the right order of magnitude ^^
It's easy to get $200k for ANYONE in the NYC/SF. Please re-read the first message from ceras that started this conversation:
"How does high performer compensation compare to high performer compensation at tech companies (who start at, say, $400K-$500k for what I'll call "entry-level high performer")?"
You can't simultaneously claim to know nothing about US tech salaries and then claim it's "easy for ANYONE to get $200k in NYC/SF."
$200k is absolutely achievable, but claiming that ANYONE (and EVERYONE?) is getting it is farcical. The vast majority of developers are making less than that.
The notion that entry-level developers are getting $400k-500k is a joke. Not even quants start at that.
----
Since you'd apparently like to be an asshole about markets you know nothing about, I'm done with this conversation.
I declined an offer from Jump Trading once. The money was very good, the people were very smart, and in the end, it was mostly that I was happy where I was (at Facebook) and didn't want to move to Chicago. Under difficult circumstances, I could have seen myself taking that offer and being very happy.
I too don't understand the appeal of working for Google and the likes but I am not sure I would consider this guy sad. It feels like he may partly be doing this as confirmation to himself of his worth.
The fact that he has started 2 successful businesses both of which are still generating revenue is what he should be looking at for confirmation. That is hard and a skill that many developers will never acquire.
He may be disappointed when working for a big company especially after running his own businesses. But it is something else he can say he has done and has learned from. Plus, after he has Google on his resume, he can probably start doubling his contract rates.
Then I figured out there aren't many places in the world where I could do cache infrastructure "to handle over a billion requests per second" or storage datacenters to store "350+ million photos uploaded per day to Facebook -the largest photos site on the Internet-".
Next thing you know. I'm interviewing at yet-another-big-company. Damn, they got me with their marketing //(^-^)//
Sad really? Read the whole article...he even mentioned that by studying hard and setting him self to aim high...even if he does not get into google...he will be so good that he can get hired anywhere else....that is anything but sad
I think it's valuable to work for at least one big company early in your career. You'll get exposed to a wide range of tech and ideas that you wouldn't necessarily get in a small team, and it's also good for expanding your professional network quickly.
I left Google to work on something more interesting and I can't be happier. If we're going to hire people, I'm not putting any weight on their work background.