I recently had an interview at a taxi firm that followed this format.
One two three pre-interviews followed by a day of 5 grueling 1 hour interviews.
I didn't get the role. Apparently the frontend guy I had the first interview of the days five was concerned about my technical skills.
I mean, I find it insulting, having worked for the last 12+ years as a developer to be told that there were "concerns about your technical competency"
I hate interviews. I hate take home coding tests and have failed every single one I've had. Apparently this is a sign that I don't do well under pressure.
I've been building working software for years, and the main problem I have is convincing people that I can actually do the job. I don't have a degree, and I don't have prestigious companies on my CV, and I don't have the time or energy to chase around roles like this, so I have to settle for unfulfilling and underpaid roles
> having worked for the last 12+ years as a developer
I've done plenty of interviews, and the amount of years someone worked does not mean they are technically capable.
By chance, last week I interviewed a frontend JavaScript expert: couldn't explain 'scope', couldn't explain 'function context', didn't know what happens when setTimeout() is followed by an infinite loop ("After 10 seconds or so the browser will probably timeout the loop"). A junior cannot know everything, a senior should be able to pull a project and team.
Personal advice to you: if you are really good but cannot show it in an interview, try to land a job at companies with ex-colleagues, where they are able to vouch for your technical skills.
If a colleague that I respect vouches for someone (s)he worked with, (s)he is practically already hired.
> didn't know what happens when setTimeout() is followed by an infinite loop
I'm not some JS guru but I've done a few and I'm wondering why would I need to know this? To me this looks like the type of question that is there specifically because people answer it wrong, they know they answer it wrong and you know they know they answer it wrong so it makes them lower their demands in terms of pay rate.
There's a video of a talk I gave floating around the internet somewhere a year or two after Node.js came out where I talk about Node, the Event Loop, and how much I liked JS. Perhaps they saw it and were like "ew!"
I've never failed a take-home test (out of 7) and I do it by doing things no reasonable person would do for production code.
I will write a comment for every line (within reason). I will write an entire page of documentation for a one hour project. I will write a test to check for the presence of a title in the rendered page. I will make sure to host it on AWS or Azure and give them instructions on how to upload it themselves (even if any dev should know how to throw a git repo onto the cloud).
They seem to just be looking that you can do things to a certain level of excellence (even if practically unreasonable).
The most recent take-home test was one hour of code and two hours of window dressing. Totally absurd, but I keep doing fine on that step.
EDIT: If you are talking about the Hackerranks, those are frustrating simply because you can't clarify requirements. I remember back in university that we gathered in groups to do them to just cover as many test cases as a team as possible.
Reminds me of a recent take home test for a SRE role I completed recently.
Normally when it comes to take-home tests I set a hard limit on actual working time to 3hrs. This doesn't include any research or reading I will do ahead of time.
The test itself was:
> We have 3 services that we want to have running in a kubernetes cluster.
> The first service is a software application called JIRA which will be used internally for the company, so we only want to be accessed by specific IP’s.
> The service needs to be highly available, have failover tolerance and able to restore from backup.
> The other services are a golang application and a python application which we provide the code.
> Inside the go-service folder we will find the golang application which exposes 2 HTTP endpoints, one of those endpoints, talks to the python microservice through GRPC protocol.
> It has 4 environment variables:
> - PORT (the port on which the http server will run)
> - SERVICE_ENDPOINT (endpoint to the python service)
> - REQUEST_TIMEOUT (request timeout in seconds)
> - IDLE_TIMEOUT (idle timeout for requests in seconds)
>
> Inside the python-service folder there is a python microservice, which only supports GRPC Protocol. This service does not have to be exposed to the outside world, and it can only be contacted by the go lang service.
> The python microservice supports a single environment variable:
> - PORT (the port on where is going to be running)
>
> These services also require high availability, failover tolerance, and also they need to scale according to the load they receive, as our external clients consume them.
> Deliverables:
> - Dockerfiles for the 3 services
> - Full yaml configuration for the services to be deployed in a k8s, taking into
consideration the remarks above.
> - A diagram explaining the whole infrastructure and how it is connected with each other.
> - Paper with ideas on:
> - Monitoring
> - Instrumentation
> - Security
Now, to be perfectly fair, I knew much more about how kubernetes works than how to deploy services on it, so it might have taken me a little longer to create the deployments. However, there's no way that I can make that all work in 3 hours. Not to mention that the backend code I was given wouldn't compile so I had to fix bugs.
Additionally; if I spend more than 3hours on a test, I might as well spend 6 hours, or 12 hours, or a week... At some point it becomes impossible for you to interview at multiple places. The idea of spending 9hrs of my day at work, then coming home and spending another 3hrs+ every night because I want the opportunity to keep spending 9hrs at work is insane, I'm physically unable to do that. When I get home I'm usually burned out, so these kinds of tests are done on the weekend.
Anyway. Where I work, we also give a take home test, and I apply the same principles:
If one of our team can't do it inside of an hour, we don't send it. We expect a candidate to be able to do it within 3hrs. The point of the take home test is that it's something we can discuss later, too. It's really obvious if someone struggles hard or finds it too easy.
I find that the interviewing style of a company is often very telling of its' general work culture. You've missed our on opportunities and had to settle in less prestigious jobs, but are you sure they would've fulfilled you any better.
IMO the take-home tests close to the job's technical requirements and followed by 1-2 technical interviews to discuss its details and potential improvements is probably the best interview method. It gives a chance to both parties to get to know their potential future colleagues and see their technical background, skills and effort on solving an actual problem that could be part of their daily tasks.
And it gives you the right, if you feel 100% ok with what you delivered and you hear an excuse of lack of technical skills to skip the job and look for something else. Whereas having to pass 6 interviews with random CS and DS questions and problems where you have to memorise algorithms which you will never use in your daily work and then finally be rejected because you forgot one of them is way worse and has probably deteriorated the software engineering industry as a whole.
In the last few years, I've sat on both sides of the interview table several times. Recruitment in software engineering is a disaster from start to finish for all involved. As salaries have risen, it's only gotten worse.
On one side, there is a depressing number of people out there applying for programming jobs who effectively can't code. Their "skills" range from mindlessly repeating previous patterns they were told to use elsewhere without considering their applicability to the current context, all the way down to literally copy/pasting code chunks till the program appears to be working. Many of this group either don't care, or are blissfully unaware of what they don't know, or how little they know about subjects they believe themselves to be experts in.
This group is the majority of applicants. This is where the take home coding tests come from (which frankly, I also loathe).
On the other side, interviews are usually conducted by who-ever has been at an organisation the longest, and/or is most willing to put up with the shenanigans of interviewing the group mentioned above. This often means they're the ones most likely to enjoy catching people out, or who have some particular thing they like to grill people on. This is where you get the twenty-questions bingo style interviewing. Your recent interview sounds like one of these.
To add to this, there's a variety of situations where the applicant _should_ get the job, but they don't for reasons outside of the interview room. A manager wants to hire someone they know. Due to reshuffling, the job requirements have changed between publishing the job ad and interviewing. The budget was curtailed after the interview. Chances are, you'll never know the true story.
In addition, a large portion of developers don't ever go through the normal recruitment process. They'll do interviews, but they're recommended by colleagues, members of their meetup, friends of the above, or their IRC / Slack / Discord / etc group, and their interview process will reflect that. This is currently the best way to get a job. Often these groups are invite-only, and effectively invisiable.
In the middle of this maelstrom, are the few reasonably competent applicants applying for a job that is right for them, with a reasonable and fair interviewer.
--
Based on all the above, without knowing a thing about you, I'd be forced to conclude one of three options:
a) You've just been really unlucky. I've been there, it sucks.
b) You're not actually as good as you think you are. Usually this is when a programmer hits a certain level of expertise and stops learning anything new for some reason. Sometimes this is down to ego, sometimes it's because they've become the biggest fish in a small pond. The symptom seems to be a lack of curiosity, if not hostility, about novel or unexplored concepts.
c) The above observations are based on my incredibly biased view of my corner of the world, and don't match your reality at all.
I understand your frustration, but it seems clear to me that there is difference in what you consider high level technical skills, and what others might perceive as such.
In a highly paid position, both selling yourself and your ideas, and smoothing out differences such as this one, are expected from the employee.
While I believe that with your experience, you have accomplished a high degree of strong delivery... You still need to be able to manage this whole dealing with people thing. Because that’s why you get paid a high salary, to get any issues out of the way in a skilled manner.
It's pretty indisputable that the industry has a penchant for interviewing problems/techniques that are deliberately unrealistic.
Whiteboarding interviews aren't about a lack of time in interviews, for instance, theyre an homage to the academic background of many of the initial internet trailblazers (google, et al).
> I understand your frustration, but it seems clear to me that there is difference in what you consider high level technical skills, and what others might perceive as such.
Or the person who did the interview is an asshole. It's pretty hard to say which one it is. Smoothing out differences such as this one is expected not only from the employee, but also from the interviewer.
I work at Google as an SRE, joined a few years ago. I am approaching 40, worked in a bunch of other companies before. My degree is is in the humanities, from a third world university you never heard of. I don't have any open source contributions. I speak lousy accented English (but I am a man and "white" if we are counting privileges.)
I got contacted by a recruiter. I had a couple of phone interviews which felt like sanity checking that I knew what I claimed to know. I was asked to grade myself in a bunch of areas. I chose makes around 5-6 for the stuff I think I know well, and zero or one for the rest. I was given some recommended reading list that I ignored. I did browse Skiena's book on algorithms to get in the zone. I didn't study it or implement anything. I am very stressed during interviews and would forget anything that isn't in long-term memory already so there was no point. (know yourself...)
I went to the onsite interview. Year, it's ~5 hours of being interviewed by people who have done dozens of interviews before. Everybody was unfailingly nice. I was panicing, not because "omg Google" but "omg humans I don't know for years already". Some algorithms, some Python, more troubleshooting and Unix. I had to estimate some numbers, so I announced I would use my cell phone calculator to not get anything wrong. I multiplied even low numbers by two on the calculator. Most interviewers are poker-faced about whether they liked the interview or not (now that I am an interviewer I understand - they probably try to put some distance between the interview and their rating, as they should). I could see that one was happy. I could see that one was not.
I was hired. Large team, three sites. I did a reasonable amount of C++ (not a language I ever claimed to know) fixing bugs and performance issues. Most of my work has to do with low-level synchronization in x86 - I picked a small "specialty" first and applied it to a number of problems. I like it. I feel that I actually write more code than my peers in the product teams, as they do too much design-docing, design-reviewing, meeting, etc. (they are SWEs, I am a SE). The design doc culture at Google is excessive and silly. I am exposed to that too.
I earn slightly more than my similarly-leveled peers on the SWE side /before/ accounting for oncall. Oncall rarely pages on weekends. I feel very able to fix any problem while oncall, or to escalate if not in my area. It doesn't stress me. I mostly consider it free money.
My peer SREs actually know far more about all the nice Google architectural stuff than our peers in SWE-land, who are mostly implementing features on top of huge abstraction layers and typically are only exposed to one particular facet of the infrastructure. Google's infrastructure is impressive and something of a marvel. It doesn't mean it's perfect. SRE is the better point of view to observe it.
Google employees are better than in any other large company (a few boutique shops are better on average, of course, at a smaller scale). Some of them like to pretend that they are better than they are to the outside world. Internally, nobody goes far being arrogant, and showing vulnerability or gaps in knowledge is not a problem. There is also someone smarter and nicer than you anyway.
I interview people. The immense majority of people I interview are really good. It's not possible to get to the point of onsite interviews unless you are good, you just know the person you are talking to is a potential peer. Interviewers are happy when their candidates do well. The committee ends up rejecting most, though, out of hyper-conservatism. I have no idea how I was hired. I suspect there is a large amount of randomness between "invited for an onsite" and "hired".
> The design doc culture at Google is excessive and silly
I have a friend who started there last year and said the same thing.
> My peer SREs actually know far more about all the nice Google architectural stuff than our peers in SWE-land, who are mostly implementing features on top of huge abstraction layers and typically are only exposed to one particular facet of the infrastructure. Google's infrastructure is impressive and something of a marvel. It doesn't mean it's perfect. SRE is the better point of view to observe it.
Reading that stuff always makes me feel incredibly stupid (or rather clueless). I wouldn't be able to answer most of those questions off the top of my head. Including this weird clock hand question (which is probably some trivial math that might or might not have been taught to me more than a decade ago and which I never ever actually applied since).
Then I probably have to remind myself that I'm (halfway successfully) running a SaaS platform with tens of thousands of users, so maybe I'm not that clueless after all.
Using google products has made me certain that being able to solve math/algorithmic problems and being able to make good software really aren't connected in most cases.
Yep! To be fair, Google software is usually technically very good (e.g. their security is second to none), but they have no product vision, and often very bad UX/DX.
Clock hand question is painfully obvious once you look at actual analog clock face.
All of the questions were easy bordering on trivial as long as your background lines up with target position. The problem is not the questions, but the culture of gotcha interviewing. Haha we got you doing off by one by offering the C option on whiteboard, haha you didnt initialize one variable on whiteboard, haha I have bad mood therefore you fail, etc.
>I recently came across your name as a _possible world class Engineer_
> Clock hand question is painfully obvious once you look at actual analog clock face.
You see, intuitively I thought this would involve some kind of radian maths (just because it's about angles and a circle) and I don't remember any of that - never had any use for it.
But yes, it is a lot more easy than that. Not sure I would have discovered the trivial approach in an interview situation when it didn't even occur to me at home on the couch.
It's established that the Google-style interview questions bear no semblance to real world performance or software engineering skills. All they test is the ability to memorize leetcode style questions and regurgitate them during interviews.
These interview are notoriously hard to pass. Less than 5% gets in. You should not feel bad about it. Being an SRE at Amazon or Google scale require that you know what is going on in every layer of the infrastructure, including data structures in code, so that you can pinpoint the exact problem in the stack. I think some of these question are overkill and have nothing to do with how good you are going to be at the job though. Writing a binary tree certainly one of those. You are not going to write one because there are tons of libraries in every language that is in production. Knowing that DNS can use TCP is much more valuable. This falls into the category of questions that you are likely to run into when debugging an issue.
If you want to get a job at Google you have be willing to be put up with these questions (both the ones make sense and the ones do not) just to show your dedication. I usually prep for such interviews roughly 3 months and I have worked as an SRE for a long time. Do not assume that we know all of these things on the top of our heads and do not feel stupid.
2. For the interviewer to feel better about already having a job at Google. I remember one guy bragging about how much he made.
It's really not to find out if you're good at something. I have been offered jobs at some of the FAANMG companies so I'm not talking out of jealousy or whatever.
One thing that struck me is that the interviewers are asking the same questions to many different candidates, so they are going to know all the slip-ups that people make.
Well, when you work at Google, at least you must have passed that kind of an interview at one point - which is something I'm fairly certain I wouldn't be able to do.
Actually I (never took an algorithms class, so I would definitely have to brush up on execution of the basics there) thought this questions were not that bad, the newer reports seem much harder (or are plain exaggeration by the "leet"code community).
I'm also a bit puzzled about the trick question being mentioned at that. That's just primitibe (maybe I'm a little bit burned by that as in 5th grade or so, our teacher did a test, writing times on a sheet and making us calculate the angle between clock hands (and it was a lot of numbers on that sheet))
I was good before but i did excersize for google interview for 2-3 month.
I actually overdid the learning as i assumed that the coding questions can't be that easy.
But at the end of the day, i'm still not working for google because yes the coding questions are not that hard but you have to convince 5 different people that you are a good fit.
Suddenly you excersize for learning how to know what the interviewer wants from you.
Is that wasted time? Definitly not. Loved the more focus learning approach.
Also, i'm now 10 years working in that industry, you don't stop looking for a new job. That interviewing skill is critical.
I feel the same way, except I think the clock-hand question is quite straightforward. Except for that one, just like every other time this sort of thing is posted almost every question is either:
1. About fairly low-level details of computer networking, or
2. What would you do if your data doesn’t fit in memory?
I’ve been a successful developer for years and never had to deal with either of those problems.
It's been the same experience for me. I've been successful as a developer and yet have never encountered many of these problems that interviews in the past demanded I know.
Ultimately if I end up encountering a problem like that in my career, the honest answer is to pick up a book or begin reading through articles on solutions. Sadly that kind of answer seems to be frowned upon because it's better for you to lie about what you know than to admit you don't know the solution and figure out ways to rectify it.
Google employs the very elite of the elite. If you're working there you're probably at the very top of your field. Obviously not every can meet that standard and there's no shame in not being the absolute best.
I feel a little sorry for Google's developers. They're told they're brilliant but asked to write software to deliver adverts and track people. They could literally be curing cancer and putting people on Mars if they wanted, and yet they sit in Mountain View working out new things to do with the data about what I clicked on today. It's a huge waste of talent.
> Obviously not every can meet that standard and there's no shame in not being the absolute best.
There's an interesting implication in your statement. The inherent assumption is that the metrics which Google uses to hire interviews would be the definition of the best. In other words, if you'd use Google's interview process in the whole world - the filter of that would lead you to the "best of the best" and "not so the best".
I don't know the answer to it but you may want to consider this aspect before reaching the conclusion.
Is this still true? I know they strove for this 15 years ago, with much success. From what I've seen in the past decade, I highly doubt that this is still true. And I'm not speaking of Google's products, but other aspects like their culture, the opinions of academics, media reports, etc.
>At first I thought I would be applying for a software developer position but after we went through my skillset, the recruiter concluded that I would better fit as an SRE.
I've got to say, I've been contacted by recruiters for Google a few times, and it has always been for SRE roles. I got the distinct impression that it's less about whether my skillset fitted being an SRE, but more that they need lots of SREs and have trouble pursuading people to take that job. I'm sure some people want to be SREs, but Google seems to want Software Engineers to become SREs.
The impression I got from talking to the recruiter is that you're spending more of your time ensuring systems work as intended and managing running systems than you are building systems from scratch, and particularly you're not working on the sexy parts of systems - the bits people actually notice,bu instead are focused on making sure those sexy bits actually turn up in a timely manner. It's not a bad thing, it's just a very long way away from what I do, and what I want to do, and the fact that the Google recruiters are always pushing me that way gives me the imipression they struggle to find people for the SRE roles.
I'm speculating here, but everything I hear about google is how they _love_ people who make features. Which has been touted as the reason why a lot of projects fail to be maintained and get shuttered.
If that's the case, then it follows that SRE is less glamorous because it's "What developers do when they're tasked with operations work", and operations work is maintenance.
Not to mention operations work in of itself is unsexy to a lot of people (excluding current operations staffing because we're inextricably drawn to it).
When I first started down the path to becoming a software engineer, I never suspected that flashcards would be part of my interview prep as though it were a history course.
I'm probably not as driven as most people here. But I wouldn't want to have SEVEN technical interviews for what seems to be a relatively average opening.
Just reading this post triggered my anxiety. I don’t think I’ll ever make it though a single one of these FAANG interviews if at all I want to work for one.
One two three pre-interviews followed by a day of 5 grueling 1 hour interviews.
I didn't get the role. Apparently the frontend guy I had the first interview of the days five was concerned about my technical skills.
I mean, I find it insulting, having worked for the last 12+ years as a developer to be told that there were "concerns about your technical competency"
I hate interviews. I hate take home coding tests and have failed every single one I've had. Apparently this is a sign that I don't do well under pressure.
I've been building working software for years, and the main problem I have is convincing people that I can actually do the job. I don't have a degree, and I don't have prestigious companies on my CV, and I don't have the time or energy to chase around roles like this, so I have to settle for unfulfilling and underpaid roles
I've done plenty of interviews, and the amount of years someone worked does not mean they are technically capable.
By chance, last week I interviewed a frontend JavaScript expert: couldn't explain 'scope', couldn't explain 'function context', didn't know what happens when setTimeout() is followed by an infinite loop ("After 10 seconds or so the browser will probably timeout the loop"). A junior cannot know everything, a senior should be able to pull a project and team.
Personal advice to you: if you are really good but cannot show it in an interview, try to land a job at companies with ex-colleagues, where they are able to vouch for your technical skills.
If a colleague that I respect vouches for someone (s)he worked with, (s)he is practically already hired.
I'm not some JS guru but I've done a few and I'm wondering why would I need to know this? To me this looks like the type of question that is there specifically because people answer it wrong, they know they answer it wrong and you know they know they answer it wrong so it makes them lower their demands in terms of pay rate.
He Had no idea how to do anything other than write books.
That gets him a foot in the door alright, but I don't think it'd let him avoid those interviews?
Dead Comment
They seem to just be looking that you can do things to a certain level of excellence (even if practically unreasonable).
The most recent take-home test was one hour of code and two hours of window dressing. Totally absurd, but I keep doing fine on that step.
EDIT: If you are talking about the Hackerranks, those are frustrating simply because you can't clarify requirements. I remember back in university that we gathered in groups to do them to just cover as many test cases as a team as possible.
Normally when it comes to take-home tests I set a hard limit on actual working time to 3hrs. This doesn't include any research or reading I will do ahead of time.
The test itself was:
> We have 3 services that we want to have running in a kubernetes cluster.
> The first service is a software application called JIRA which will be used internally for the company, so we only want to be accessed by specific IP’s.
> The service needs to be highly available, have failover tolerance and able to restore from backup.
> The other services are a golang application and a python application which we provide the code.
> Inside the go-service folder we will find the golang application which exposes 2 HTTP endpoints, one of those endpoints, talks to the python microservice through GRPC protocol.
> It has 4 environment variables:
> - PORT (the port on which the http server will run)
> - SERVICE_ENDPOINT (endpoint to the python service)
> - REQUEST_TIMEOUT (request timeout in seconds)
> - IDLE_TIMEOUT (idle timeout for requests in seconds)
>
> Inside the python-service folder there is a python microservice, which only supports GRPC Protocol. This service does not have to be exposed to the outside world, and it can only be contacted by the go lang service.
> The python microservice supports a single environment variable: > - PORT (the port on where is going to be running)
>
> These services also require high availability, failover tolerance, and also they need to scale according to the load they receive, as our external clients consume them.
> Deliverables:
> - Dockerfiles for the 3 services
> - Full yaml configuration for the services to be deployed in a k8s, taking into consideration the remarks above.
> - A diagram explaining the whole infrastructure and how it is connected with each other.
> - Paper with ideas on:
> - Monitoring
> - Instrumentation
> - Security
Now, to be perfectly fair, I knew much more about how kubernetes works than how to deploy services on it, so it might have taken me a little longer to create the deployments. However, there's no way that I can make that all work in 3 hours. Not to mention that the backend code I was given wouldn't compile so I had to fix bugs.
Additionally; if I spend more than 3hours on a test, I might as well spend 6 hours, or 12 hours, or a week... At some point it becomes impossible for you to interview at multiple places. The idea of spending 9hrs of my day at work, then coming home and spending another 3hrs+ every night because I want the opportunity to keep spending 9hrs at work is insane, I'm physically unable to do that. When I get home I'm usually burned out, so these kinds of tests are done on the weekend.
Anyway. Where I work, we also give a take home test, and I apply the same principles:
If one of our team can't do it inside of an hour, we don't send it. We expect a candidate to be able to do it within 3hrs. The point of the take home test is that it's something we can discuss later, too. It's really obvious if someone struggles hard or finds it too easy.
I had about a hundred thousand lines in a major open source project at the time.
Oh yeah I've had a couple of those as well.
Usually because you can't remember one detail that can be googled or is opinionated about one specific aspect.
At the end I guess in some companies it's more of "who can jump through the hoops like a nice circus animal" more than anything.
(On the opposite side, if you throw me fizzbuzz I'll just make it harder on purpose)
And it gives you the right, if you feel 100% ok with what you delivered and you hear an excuse of lack of technical skills to skip the job and look for something else. Whereas having to pass 6 interviews with random CS and DS questions and problems where you have to memorise algorithms which you will never use in your daily work and then finally be rejected because you forgot one of them is way worse and has probably deteriorated the software engineering industry as a whole.
Deleted Comment
On one side, there is a depressing number of people out there applying for programming jobs who effectively can't code. Their "skills" range from mindlessly repeating previous patterns they were told to use elsewhere without considering their applicability to the current context, all the way down to literally copy/pasting code chunks till the program appears to be working. Many of this group either don't care, or are blissfully unaware of what they don't know, or how little they know about subjects they believe themselves to be experts in.
This group is the majority of applicants. This is where the take home coding tests come from (which frankly, I also loathe).
On the other side, interviews are usually conducted by who-ever has been at an organisation the longest, and/or is most willing to put up with the shenanigans of interviewing the group mentioned above. This often means they're the ones most likely to enjoy catching people out, or who have some particular thing they like to grill people on. This is where you get the twenty-questions bingo style interviewing. Your recent interview sounds like one of these.
To add to this, there's a variety of situations where the applicant _should_ get the job, but they don't for reasons outside of the interview room. A manager wants to hire someone they know. Due to reshuffling, the job requirements have changed between publishing the job ad and interviewing. The budget was curtailed after the interview. Chances are, you'll never know the true story.
In addition, a large portion of developers don't ever go through the normal recruitment process. They'll do interviews, but they're recommended by colleagues, members of their meetup, friends of the above, or their IRC / Slack / Discord / etc group, and their interview process will reflect that. This is currently the best way to get a job. Often these groups are invite-only, and effectively invisiable.
In the middle of this maelstrom, are the few reasonably competent applicants applying for a job that is right for them, with a reasonable and fair interviewer.
--
Based on all the above, without knowing a thing about you, I'd be forced to conclude one of three options: a) You've just been really unlucky. I've been there, it sucks. b) You're not actually as good as you think you are. Usually this is when a programmer hits a certain level of expertise and stops learning anything new for some reason. Sometimes this is down to ego, sometimes it's because they've become the biggest fish in a small pond. The symptom seems to be a lack of curiosity, if not hostility, about novel or unexplored concepts. c) The above observations are based on my incredibly biased view of my corner of the world, and don't match your reality at all.
In a highly paid position, both selling yourself and your ideas, and smoothing out differences such as this one, are expected from the employee.
While I believe that with your experience, you have accomplished a high degree of strong delivery... You still need to be able to manage this whole dealing with people thing. Because that’s why you get paid a high salary, to get any issues out of the way in a skilled manner.
Whiteboarding interviews aren't about a lack of time in interviews, for instance, theyre an homage to the academic background of many of the initial internet trailblazers (google, et al).
Or the person who did the interview is an asshole. It's pretty hard to say which one it is. Smoothing out differences such as this one is expected not only from the employee, but also from the interviewer.
Deleted Comment
I got contacted by a recruiter. I had a couple of phone interviews which felt like sanity checking that I knew what I claimed to know. I was asked to grade myself in a bunch of areas. I chose makes around 5-6 for the stuff I think I know well, and zero or one for the rest. I was given some recommended reading list that I ignored. I did browse Skiena's book on algorithms to get in the zone. I didn't study it or implement anything. I am very stressed during interviews and would forget anything that isn't in long-term memory already so there was no point. (know yourself...)
I went to the onsite interview. Year, it's ~5 hours of being interviewed by people who have done dozens of interviews before. Everybody was unfailingly nice. I was panicing, not because "omg Google" but "omg humans I don't know for years already". Some algorithms, some Python, more troubleshooting and Unix. I had to estimate some numbers, so I announced I would use my cell phone calculator to not get anything wrong. I multiplied even low numbers by two on the calculator. Most interviewers are poker-faced about whether they liked the interview or not (now that I am an interviewer I understand - they probably try to put some distance between the interview and their rating, as they should). I could see that one was happy. I could see that one was not.
I was hired. Large team, three sites. I did a reasonable amount of C++ (not a language I ever claimed to know) fixing bugs and performance issues. Most of my work has to do with low-level synchronization in x86 - I picked a small "specialty" first and applied it to a number of problems. I like it. I feel that I actually write more code than my peers in the product teams, as they do too much design-docing, design-reviewing, meeting, etc. (they are SWEs, I am a SE). The design doc culture at Google is excessive and silly. I am exposed to that too.
I earn slightly more than my similarly-leveled peers on the SWE side /before/ accounting for oncall. Oncall rarely pages on weekends. I feel very able to fix any problem while oncall, or to escalate if not in my area. It doesn't stress me. I mostly consider it free money.
My peer SREs actually know far more about all the nice Google architectural stuff than our peers in SWE-land, who are mostly implementing features on top of huge abstraction layers and typically are only exposed to one particular facet of the infrastructure. Google's infrastructure is impressive and something of a marvel. It doesn't mean it's perfect. SRE is the better point of view to observe it.
Google employees are better than in any other large company (a few boutique shops are better on average, of course, at a smaller scale). Some of them like to pretend that they are better than they are to the outside world. Internally, nobody goes far being arrogant, and showing vulnerability or gaps in knowledge is not a problem. There is also someone smarter and nicer than you anyway.
I interview people. The immense majority of people I interview are really good. It's not possible to get to the point of onsite interviews unless you are good, you just know the person you are talking to is a potential peer. Interviewers are happy when their candidates do well. The committee ends up rejecting most, though, out of hyper-conservatism. I have no idea how I was hired. I suspect there is a large amount of randomness between "invited for an onsite" and "hired".
> The design doc culture at Google is excessive and silly
I have a friend who started there last year and said the same thing.
> My peer SREs actually know far more about all the nice Google architectural stuff than our peers in SWE-land, who are mostly implementing features on top of huge abstraction layers and typically are only exposed to one particular facet of the infrastructure. Google's infrastructure is impressive and something of a marvel. It doesn't mean it's perfect. SRE is the better point of view to observe it.
Interesting point here as well.
Then I probably have to remind myself that I'm (halfway successfully) running a SaaS platform with tens of thousands of users, so maybe I'm not that clueless after all.
Maybe Google scale isn't for me.
Then, somehow, little annoyances crept in and accumulated over time.
And now everything they make is like treacle.
>I recently came across your name as a _possible world class Engineer_
That right here is the cancer.
You see, intuitively I thought this would involve some kind of radian maths (just because it's about angles and a circle) and I don't remember any of that - never had any use for it.
But yes, it is a lot more easy than that. Not sure I would have discovered the trivial approach in an interview situation when it didn't even occur to me at home on the couch.
I've only heard this anecdotally, but it is their best hiring indicator which is why they persist with it, despite it being very expensive.
If you want to get a job at Google you have be willing to be put up with these questions (both the ones make sense and the ones do not) just to show your dedication. I usually prep for such interviews roughly 3 months and I have worked as an SRE for a long time. Do not assume that we know all of these things on the top of our heads and do not feel stupid.
1. Find people who fit the current culture
2. For the interviewer to feel better about already having a job at Google. I remember one guy bragging about how much he made.
It's really not to find out if you're good at something. I have been offered jobs at some of the FAANMG companies so I'm not talking out of jealousy or whatever.
What makes no sense is small companies copying this process and then griping about finding talent.
I'm also a bit puzzled about the trick question being mentioned at that. That's just primitibe (maybe I'm a little bit burned by that as in 5th grade or so, our teacher did a test, writing times on a sheet and making us calculate the angle between clock hands (and it was a lot of numbers on that sheet))
I actually overdid the learning as i assumed that the coding questions can't be that easy.
But at the end of the day, i'm still not working for google because yes the coding questions are not that hard but you have to convince 5 different people that you are a good fit.
Suddenly you excersize for learning how to know what the interviewer wants from you.
Is that wasted time? Definitly not. Loved the more focus learning approach.
Also, i'm now 10 years working in that industry, you don't stop looking for a new job. That interviewing skill is critical.
Deleted Comment
1. About fairly low-level details of computer networking, or
2. What would you do if your data doesn’t fit in memory?
I’ve been a successful developer for years and never had to deal with either of those problems.
Ultimately if I end up encountering a problem like that in my career, the honest answer is to pick up a book or begin reading through articles on solutions. Sadly that kind of answer seems to be frowned upon because it's better for you to lie about what you know than to admit you don't know the solution and figure out ways to rectify it.
The clock hand problem can be solved with the Rule of Three
https://en.wikipedia.org/wiki/Cross-multiplication#Rule_of_T...
Google employs the very elite of the elite. If you're working there you're probably at the very top of your field. Obviously not every can meet that standard and there's no shame in not being the absolute best.
I feel a little sorry for Google's developers. They're told they're brilliant but asked to write software to deliver adverts and track people. They could literally be curing cancer and putting people on Mars if they wanted, and yet they sit in Mountain View working out new things to do with the data about what I clicked on today. It's a huge waste of talent.
I needed that laugh, thank you!
There's an interesting implication in your statement. The inherent assumption is that the metrics which Google uses to hire interviews would be the definition of the best. In other words, if you'd use Google's interview process in the whole world - the filter of that would lead you to the "best of the best" and "not so the best".
I don't know the answer to it but you may want to consider this aspect before reaching the conclusion.
Do all people with a @google.com email address keep telling themselves that?
I've got to say, I've been contacted by recruiters for Google a few times, and it has always been for SRE roles. I got the distinct impression that it's less about whether my skillset fitted being an SRE, but more that they need lots of SREs and have trouble pursuading people to take that job. I'm sure some people want to be SREs, but Google seems to want Software Engineers to become SREs.
If that's the case, then it follows that SRE is less glamorous because it's "What developers do when they're tasked with operations work", and operations work is maintenance.
Not to mention operations work in of itself is unsexy to a lot of people (excluding current operations staffing because we're inextricably drawn to it).
Deleted Comment