I'm Keyvan Nayyeri, a 28 years old software engineer working at Match.Com and living in Dallas, Texas.
I have a Master’s degree in computer science and a bachelor's degree in applied mathematics. I’m also known to be a technical author with several technical publications in the form of books and articles. Besides, I'm an open source enthusiast and have coordinated or contributed to several projects. Currently, I maintain my projects on GitHub.
As a content provider on the internet, not only I publish on this technical blog, but also I'm a podcaster and publish audio podcasts on Mash This.
Trying to maintain a healthy and active lifestyle, I'm a pescetarianist and exercise almost everyday. I’m an avid runner, soccer defender, and tennis player. I also have an interest in fashion.
As a professional working in any field, people would be interested to follow the news about the hiring process of bigger companies in their field that have become a symbol, and software world is no exception as everyone is interested to know what’s going on at Microsoft, Google, Amazon, or Yahoo, and who they hire and how they hire them.
I’ve also been following these news ranging from personal experiences shared on blog posts to in person chats with friends and friends of friends. The more I involved in professional software world and the more I dug into the information I gathered, the more I realized that the hiring process at big software companies is very weak and most of times it fails at hiring good and skillful talents and filtering out the lesser-talented applicants.
I’ve been observing more details about this issue in the past few months since some of the people that I know in person have been interviewed at these companies for different positions and seeing these experiences has adjusted my understanding of this process even though it’s hard to call it a process as I will discuss later.
In essence, the steps designed at big software companies as hiring process are pretty much the same and they can be split into three main phases starting with phone interviews, followed by in person interviews with generic questions, and finally in person interviews with more specialized questions. The highest number of rejections are happening in the first two phases that emphasize mostly on generic topics regardless of the position that somebody is applying for and are being done by the same people interviewing everyone.
The first steps focus more on evaluating the applicant’s interest in the company and his/her motives as well as the general passion for being employed in the field and the communication skills that are mandatory for somebody to take a position. The middle steps are designed to evaluate the abstract thinking abilities, problem solving skills, and understanding of principles, and the latest steps are more specialized for the position that an applicant has applied for which is usually done by people from the same department in order to make sure about the abilities of the applicant to fulfill the requirements they have in mind.
Later on, I’ll explain my reasons for where, when, and how this process fails at reaching its goal, if I safely assume that the goal is to hire the best talents and reject the lesser-talented and lesser-experienced applicants.
The first question that should be addressed is whether the hiring process at big software companies is really failing or not, and why I’m asserting this. One good measure for understanding the success of hiring process is to know the Bell Curve and how talents are distributed in the world (as the name is coming from the bell-shaped distribution of intelligence quotient). Despite the criticism against this book, it proved to be right about many of the topics that it discussed and the reasoning and evidence that it provided to support them.
Knowing the Bell Curve, it is easy to pick up some instances of talents who have been rejected to get a job at big software companies and compare them to some lower-level employees who are already working at such companies. The definition of a talent can be a source of disagreement but I think that it’s safe to consider the public reputation of a person and his or her works as a good way to distinguish good talents from the bad ones (even though the word bad may be too negative in this context).
Most likely you have read the success and failure stories of people being interviewed at big software companies on blogs or sites to know enough examples of what I’m talking about and I don’t want to point to particular cases here, but you would agree that if you know someone good who is working at these companies, he’s not hired using the regular hiring process and was probably selected and brought to the company with a totally or slightly different process.
Generally speaking, the hiring process at big software companies has failed at hiring the top 10% of talents on the Bell Curve and has usually succeeded to hire the lower 70% of population.
Although I used the term process to refer to the steps followed to hire somebody at a big software company, this is not a process because one simple characteristic of a process is that it has a constant behavior where we don’t see this with hiring mechanism at software companies. Sometimes they reject somebody with very similar capabilities and profile as someone else that they have hired just recently. Of course, this is in regards to the current (and in my opinion wrong) system that they’re using, so two people are being compared based on the similar performance at interviews.
There is a good article published about this issue here, but less or more, big software companies tend to have a brute-force mechanism for hiring employees and Google has been a symbol of this in the past few years since it started to get worse and fail in many aspects.
I can propose three possible reasons for this brute-force nature in the hiring process and one or all of them may contribute to this issue. First, it’s possible for the companies to have varying number of opening positions at different times enforcing them to cut at some threshold. Second, there is a chance that they intentionally do this to applicants in order to prevent people from finding out the details of the hiring process, and you may be surprised to know how often such an unfair job is done to people in different circumstances in this world! Third, there isn’t a well-designed hiring mechanism at big companies to automate the process and train the people in order to reduce the chances for such problems as most people doing the interviews are not trained enough for this job, so the outcome of their job is variant.
Doing a very simple search on internet, you quickly find many interview questions for software companies that are mostly the same and focus on specific areas, particularly algorithm design and programming with lower-level languages. The interesting question is that the type of questions is being repeated over and over and you don’t see much difference in the nature of the questions being asked, and this is the source of a problem that I describe later.
But I assert that these questions are irrelevant to the position that most people are applying for. I’m a Ph.D. student in Computer Science and actively involve in the topics being asked at such interviews in my every day life, so I do think that I have a good understanding of when and where these topics can be helpful. I have a good industrial background as well as a good understanding of these theoretical and lower-level concepts and have been able to relate these abstract concepts to practice in my experiences, however, this is not a case for everything.
First of all, human is not supposed to memorize everything and many details about algorithms and system programming are not concepts. These are topics that should be found in references upon request and I don’t think that anybody wants to memorize them in the long term. I know how to use these details when necessary but I need to check a reference to find the details about them. A good C programmer will forget many details about the syntax if he doesn’t write code for a few years but he can reload all these concepts at any time by writing simple codes for a few days. Most of the questions being asked at job interviews are about some details that an applicant may not have memorized.
Additionally, the nature of many of these questions is not relevant to many positions needed at software companies these days. Programming languages and tools have evolved hiding many aspects of programming that are needed for a position and you’re reading this from somebody whose primary research field is in this area. Nowadays, you can fulfill the requirements of many job positions at software companies without knowing binary trees and related algorithms or details of C programming. A person may be good at a position that he has applied for but may lack the skills in these irrelevant topics, and it’s not fair to reject him for that. You can contact many employees at a company like Microsoft, Google, or Amazon, and ask them how much of their work is involving such topics. Most of these people are using higher level programming languages and tools and don’t care about what is going on behind the scenes. A person may be very good at a high programming language and write a code that has a better quality and efficiency than somebody who knows all this theoretical stuff but can’t apply them in action.
If you’re wondering why lesser-talented applicants have an easier job finding their way to big software companies, the answer is laid in self-preparation. Often, more professional and experienced people are confident in their skills, so they don’t spend time reading previous interview questions and preparing for the interview to have above-mentioned topics in mind. Instead, lesser-skilled applicants work and study hard for such job interviews and know many of these details at the time of interview helping them to answer and get through.
I’ve witnessed this with my eyes and have seen how some applicants spend days and nights to study these algorithms and questions to go to a job interview and forget them after a short while, just like any other topic that you try to learn in a short while without a deep understanding!
On a related thread, an expert wouldn’t expect to be asked with such questions and will be surprised by them because he is able to evaluate the relevance of questions to the position he has applied for, but a normal applicant doesn’t have that vision, so he just tries to prepare and answer the questions as they are thrown at him!
Whether we like it or not, today’s business strategies rely more on money and profit than anything else and that’s why we’re ending up with lower-quality products and services in all aspects of our lives. Software companies follow the same strategies and that’s why they have been outsourcing their products overseas. This is the main motivation for looking for cheaper labor, and the growing number of available labor, and competition for positions along with the economic crisis and its impact on this competition have worsened the situation.
Usually a more experienced person has higher expectations and doesn’t want to sell himself cheap, so he is harder at negotiating for terms and benefits of a job. Since the people in charge for hiring applicants are not trained in the specialized field and are more focused on general topics, they may end up not hiring such talents. On the other hand, lesser-talented applicants are easier at these terms especially for the big pool of foreign applicants in the US who need working visas and may give up on certain expectations in favor of this requirement.
Having these said, I have to admit that I haven’t seen a single case of failure for this reason. If you get there in the last step, it’s very likely that you will be hired by the company and usually big companies have enough resources to pay you. However, demand for cheap labor certainly has an impact on the attitude of companies in their hiring mechanism.
Probably you have seen many great people that you think that they should work at big software companies and were wondering why they don’t. Besides personal reasons like better income, ease of job, and similar factors, the abovementioned reasons, in my opinion, are playing some important roles in failing the big companies at hiring good talents and keeping them. Sometimes, they can’t keep these talents because by hiring lesser-experienced applicants, they increase the chances for creating bureaucracy and some dirty networks that we all have seen at workspace. That’s because somebody without experiences is not confident about his future position and tries to apply these dirty works to keep his or her job making more skillful co-workers suffer (for example, read this interview).
Smaller companies, on the other hand, have less problems with the hiring process as they pay a closer attention to the smaller number of hires that they have and this helps them evaluate each and every case in a more logical and tangible way.
Therefore, if you’re applying for a position at a big software company, my recommendation is to search for the previous questions and read about such topics in advance no matter how good and confident you are. Most of the good applicants are being rejected in the early stages of interviews and if you pass them, you will have more logical steps to deal with, and the only way to get through these early stages is to prepare and be ready for the questions.
Jerry
Jun 23, 2011 7:52 AM
#
Nicolas
Jun 24, 2011 4:50 AM
#
What you said is not backed up but just a feeling for me.
I have another vision. You must understand that most people do have a work especially in computer science. In fact there is more demand than offer. So if your hiring process is on average you'll basically get the exact bell curve for your hires. Well you'll try to fight that but if you do it well, the position will just left open. You'll have to offer more money, but also more interresting job (often not possible), a better environment (not in the interviewer possibilities)...
There another thing, most people available on open position are on the lesser part of the bell curve. You know, thoses that are effective, have a job. If your criteria of being recognised for strong performer is right, they are recognised by their company, have promotion... And well will never leave. So maybe excepted one time in their life when they have to move to another city or something, you'll never have an oportunity to hire them. Thoses you'll see most of the time are thoses unemployed and that try till they get a job, even if it take 100 interview for them.
And my last point is... Most people think they are good. Most people thing that other fail to recognise how bright they are. If they fail an interview, it must be that the interviewer is wrong, and the hiring process it wrong. Sometime it is, but not always. Really there are smart people at MS, Google and in big companies. Really effective and bright people. Everybody want to work for them and they have the choice, they can be more selective. Small companies on the other hand don't have much to attract.
onur gumus
Jun 24, 2011 5:33 AM
#
Keyvan Nayyeri
Jun 24, 2011 7:49 AM
#
Thanks for your comment and sharing your thoughts but there are some logical and experimental reasons why you're totally wrong.
Before that, I can guess that (from your language) that probably, you're not in the US and so you don't have much experiences with extra big software companies that you usually can find here in the US only.
As of what you said about this basis of this post on feelings, it shows that you haven't read the post carefully (or haven't read that at all) because I clearly stated that the basis of this post is my experience from many people that I've observed. I'm here at graduate school at a US institution and there are many newbie's applying for jobs at these companies from our department. Not only that, but also I've had much experience at industry and know many people. Besides, doing a simple search on the reactions to this post, you realize that most well-known identities have reacted with strong agreements to this post.
You're totally wrong that all the good talents are already employed and they're rarely available, and on the other hand, offer is more than demand. I'll be interested to see you providing a strong evidence for that.
Same goes to your reasoning that most people available are on the lesser part of the bell curve.
As of your last point, you're right, most people overestimate themselves, but I never based my discussion on the impressions of somebody. I said that the measure for goodness of somebody is what others are thinking about him or her. If you mean that I'm sad for being rejected at a job interview, no, I never applied for a job at these companies and in fact didn't accept some offers that I received in order to focus on things with higher priorities in my life.
As of your argument about Microsoft, Google, and others, no, it's not true. First, they must hire good talents otherwise they end up with very bad situations like what Google has been wrestling with. The lack of creativity and vision is killing the company with big failures. It's not an option for them. Second, it's not like that everybody wants to work for them because there are some negative aspects for working at these companies and some people don't like that. Third, many small companies have many things to attract because you have more flexibility and better opportunities to grow and make more money. You have to read and learn more about software businesses.
Keyvan Nayyeri
Jun 24, 2011 7:52 AM
#
Thanks for your comment :-)
I think that you better leave that judgment to people who know both fields very well and have enough experiences. From my standpoint your comment doesn't need much analysis and discussion as it doesn't have a strong basis. I am using many of those concepts in my everyday work as a computer researcher at a more practical and advanced level than what is being asked and needed at industry, but never see many of those questions being any close to what many positions need. You have to read my post carefully to understand that such concepts/details are not required for most of the current positions at these companies.
Rolle
Jun 24, 2011 8:11 AM
#
John Doe
Jun 24, 2011 8:22 AM
#
Most of the questions asked for job interviews are irrelevant for the current position. Most of the interviewers can't even answer them themselves anyway.
I also must admit that I had to memorize couple of concepts just for interviews, concepts that I'll probably never apply anywhere soon...
Most companies want cheap developers not good developers. The rewards that good developers usually get is "Good Job!", praising can't match financial compensation in terms of motivations.
Many times, I just had to let go appealing offers, just because of the salary range. "I don't want you and I to waste time, I haven't been in that salary range for couple of years..."
Keyvan Nayyeri
Jun 24, 2011 8:34 AM
#
Thanks for sharing your thoughts.
For smaller companies it really depends on the company but it's not as bad as what is happening for bigger ones.
Open-ended questions are the best strategy for job interviews and that's why Amazon has been performing better with its interviews recently.
Keyvan Nayyeri
Jun 24, 2011 8:36 AM
#
Yes, that's usually the common theme in the interviews. Less or more, almost everyone that I've talked to has had the same experiences.
Valik
Jun 24, 2011 9:37 AM
#
However, the last paragraph of Demand for Cheap Labor surprised me. In my experience, money is one of the most important problems (if not THE most important one). Just a couple of months ago I rejected three job offers, because these guys wanted to pay slightly less than we discussed initally. Two of them were very big international companies, and they could certainly improve the offers by 2-3%, but choose not to do that.
P.S. I live in the UK. Maybe in America it's different...
Keyvan Nayyeri
Jun 24, 2011 11:56 AM
#
So what's the point of disagreement in that paragraph? I said that I haven't seen any case but I didn't reject it. In fact, the whole paragraph was about this problem.
Sean Landis
Jun 24, 2011 3:52 PM
#
The section "It's not a process" is incorrect. One type of process control model, "defined process" should render predictable results when applied to repeatable processes. For things like software development and hiring, which are intrinsically not repeatable, a more appropriate process control model is "empirical process" control model. The reason hiring is not predictably repeatable is, just like software development, that there are many uncontrolled variables that have significant influence on the process over time. So an adaptive control model is required. Of course, most companies are oblivious to this and exercise all sorts of counterproductive activities in their hiring efforts.
Sean Landis
Jun 24, 2011 3:57 PM
#
http://www.artima.com/articles/where_do_you_want_to_be_in_five_years.html
Keyvan Nayyeri
Jun 24, 2011 4:14 PM
#
@Sean
Thanks for your comment, the insightful thoughts, and sharing the link. It can be very helpful.
JD
Jun 24, 2011 6:01 PM
#
Mike Borozdin
Jun 25, 2011 6:09 AM
#
like Microsoft, Google, Amazon are really working on the edge in terms of what they build, just think
about performance. Said Amazon is capable of handling million hits a day and that is only due to
a big shelf of fast servers, but also because of underlying efficient algorithm and low level tweaks
that had to impose on software like web servers or database servers or even write their own ones.
This basically means they are looking for people clever enough and just smart, that's why they also
tend to give lots of puzzles to applicants. There are simply problems that you can't look a solution for on the web, you have to think.
Keyvan Nayyeri
Jun 25, 2011 6:50 AM
#
You're having a wrong picture of what is going on at these big companies. Some of them, like Amazon, don't build many infrastructures. Instead, they're using existing platforms from other big companies like Microsoft. Some others, like Microsoft, build a set of core technologies and the rest of the products are just developments to them. For example, many features added to different .NET technologies and Visual Studio are just additions to the underlying infrastructure and by nature, they don't need to deal with complex algorithms.
That said, what is being asked at job interviews doesn't help with solving complex algorithms and improving the efficiency. There are well-proven and tested methods to evaluate the skills for these goals that are not used at interviews.
John
Jun 25, 2011 7:42 AM
#
Mike Borozdin
Jun 25, 2011 8:44 AM
#
I doubt that people who were to design and develop WPF, albeit it didn't involve using C/C++, had no idea of algorithms.
Plus, we are not just talking about simply knowledge of algorithms, it comes down to one's ability to analyse such things as complexity and come up with own ideas for a tricky problem, when you just cannot, I've to reiterate that, just google.
Keyvan Nayyeri
Jun 25, 2011 8:48 AM
#
I didn't say that they have no idea about algorithms. Unfortunately, you haven't understood the points in my post very well. The point is that what they're asking is not relevant, not that knowing algorithms or similar principles is not important.
Sean Landis
Jun 25, 2011 10:31 AM
#
Amazon, Google, and most LARGE presence Internet companies have quite a lot of custom-built infrastructure. Much of that infrastructure is/was state of the art and requires solid CS grounding.
When you get to a certain size, you can't buy what you need because ISVs find that market is too small to target. Therefore, algorithm questions may be justified.
Additionally, companies like Google and Amazon have a luxury: large numbers of candidates come to them for jobs. This allows them to craft a very challenging interview process. They can afford a larger number of "false negatives," folks that fail the interview process, but would have made good employees. If my company were to hire like that, few would apply. The lesson is that context has significant influence on the hiring process.
All that said, if the questions these companies are asking don't relate to expected performance of new hires, then they aren't good questions.
Keyvan Nayyeri
Jun 25, 2011 11:07 AM
#
Please go back and read my comment carefully.
Mike Borozdin
Jun 25, 2011 11:34 AM
#
I do understand your point about relevancy, although I don't mean to say I accept it :-P.
Do you really have enough insights to claim that some low level stuff is totally irrelevant, say, for a .NET position at Microsoft?
Do you think that, for example, if a company is using an ORM that their employees shouldn't know SQL? If so, then I'd say it's a really dangerous mindset.
I wonder if you've read Joel on Programming and his articles on leaky abstractions and a hiring process at Microsoft that involves asking low level questions that he justifies.
Plus, like Sean pointed out those companies have more than enough job application to afford hand picking brilliant candidates only. I know you don't agree with that that's actually the whole point of your post. But think for a while, you also mentioned that there are a number of people who entered those big companies through a different process. I suppose they had enough experience to do that. While such big companies may impose such a rigorous hiring process for either graduates or people who didn't have enough recognition in their field.
Keyvan Nayyeri
Jun 25, 2011 12:24 PM
#
@Mike (and others),
I think that I have to clarify some points as it seems that some people are misunderstanding this post and its comments (maybe because they don't pay close attention to the whole text and/or the use of words).
Anyways, what I'm stating is that at these big companies not everyone is building lower-level infrastructures and the majority are building on top of the existing infrastructure based on the existing classic tools and languages that encapsulate many of the details. For example, many teams at Microsoft are using the .NET Framework just like many other companies outside that are using this platform for building software. In fact, a big portion of the .NET Framework is running on the .NET Framework. Same is true for Windows Azure or other tools.
Therefore, while I'm well-aware that some (but not all, and in fact the smaller part) of teams at these big companies deal with lower-level stuff, there are two points that you are missing in my original text and comments:
1- Those majority who don't build infrastructures don't need to deal with any of these topics, so it's very wrong to ask them about such stuff.
2- Even for those who deal with lower-level and more detailed algorithms to solve complex problems, the type of the questions asked and the way they are asked are really irrelevant. I don't deny the fact that evaluating the applicants based on these topics is very important, but what is being done is far from a good point in my opinion. A good example of the failure of this system is Google and seeing their employees giving talks that make a burning chicken laugh or lacking some basic understandings of principles of software world. Apparently, these employees have passed the supposedly difficult and delicate (brute-force) process but they are unable to qualify very basic requirements and the end result is hundreds even thousands of failed projects and products at Google.
I hope this clarifies the points.
Mike Borozdin
Jun 26, 2011 6:02 AM
#
I'm sorry I think it was my point which wasn't clear enough.
Anyway, I do not think that Microsoft uses .NET in the same way as other companies do. Other companies mostly use for building enterprise software. Although Microsoft also has a department for building such stuff, namely Dynamics, they still
Anyway, I still think you make lots of assumptions, especially about the way Microsoft is using .NET. Unlike other companies they do not just build enterprise software with that, in fact they build .NET itself that really requires certain, say, low level knowledge from people who are doing that.
Plus, think about Windows after all, SQL Server and other products, are they all written with .NET?
It just amazes me how people literally create a bubble of managed code for writing accounting software around themselves, while being to step out and try something different involving manual memory allocation and interesting algorithms. It at least would enrich them and provide a better pay cheque, since there are not too many people doing that, mostly because some of them think some questions are irrelevant ;-).
Javier Martinez Canillas
Jun 26, 2011 6:51 AM
#
@Keyvan,
Even when I wasn't looking for a job I was contacted by Google and was involved in its hiring process.
I can't tell you what were the questions because they asked me to keep it confidentially but I agree with you that maybe are not the best metrics to evaluate an applicant performance. I think that the process can have lots of false negatives. (I'm not saying this was my case maybe I wasn't a good fit for Google after all).
But after being in their hiring process, I don't think that someone that does well, can be a lesser-talented applicant. I'm mean I don't think that the process has too many false positives.
Maybe someone memorize lots of data structures design and well known CS algorithms, and maybe this guy pass some of the interviews but in the end he will be discovered.
The real problem with this hiring process is that you can't ask a dumb CS question to gurus, because they will be offended. I'm not sure but I expect that someone that is an expert in her field won't follow the same standard process.
This is because Google can take the luxury of discard good people.
Regarding the other issue that came out in the discussion, I don't think that many employees at Google have "conventional" developers tasks. I mean it is Google, you are one day developing a simple application for yourself in your 20% free time and tomorrow can be the next killer application that has to scale to million of users. It is not an easy task and it is not similar to develop and ERP in .NET.
Also I don't think that these companies can buy their infrastructure. Google certainly doesn't, they developed GFS, big table, map-reduce, GWT and who knows more that is not published. It is true that they bought a lot of companies, but these companies also developed their own products (Gmaps, Android, etc).
Keyvan Nayyeri
Jun 26, 2011 7:01 AM
#
The point is that the situation you're describing is what was common in early 90's and before where companies were using systems programming for most products but this is changed. And it's not just about Microsoft. Each and every company may have its own infrastructure but in the end they use a managed programming paradigm on top of this infrastructure and this is really the right way because as software evolved and scaled up, sticking to unmanaged code is very problematic.
As of the examples you mentioned, yes, even many non-core parts of Windows and SQL Server are written in managed code for sure (not necessary in .NET).
Again, this is not the only point of what I said and I stated that even if somebody's going to take a job dealing with lower-level stuff, these questions don't really evaluate him.
As of your point about the job opportunities for a systems programmer, I guess that there have been enough statistical researches about this and it's proven that it's not true. Nowadays software market is driven by big business and what they demand is fast software development with less issues which is achieved with higher level programming languages and tools. That's why such software developers have many more opportunities and make more money (relatively). Apparently, if there was such a chance to be more successful with systems programming many of the current developers and new graduates could invest to go for such jobs but they are very limited. The majority of the current software developers used to know systems programming at some point of time and if there was any better career in it, they could stay there.
Keyvan Nayyeri
Jun 26, 2011 7:03 AM
#
Thanks for your comment :-)
I guess that you're missing the points that I clarified in one of my recent comments.
To address one of the points you mentioned, I know that Google has its own infrastructure, but still most of their products and services are developed using managed code in a higher level, and it's not the job of each and every team to go and touch the basics and write something in system level.
Javier Martinez Canillas
Jun 26, 2011 8:05 AM
#
I didn't miss any of your points. It is only that I don't agree with you in those points :)
It is not about the programming language. I don't know if it is the norm. But I could choose the programming language for all the interviews. It is not that you have to known what the "volatile" keyword is use for in C or something like that. Most questions are about CS concepts. If you apply for a software engineer job (which wasn't my case) I know that they will could ask you about Test Driven Development, Continuous Integration, etc.
They are more interested in your analytical thinking, algorithms knowledge and theoretical concepts than other companies. And it makes sense due their scale, user base and workloads.
It is not about low level or high level language. Or application or system level. It is about understanding about system design, algorithms complexity and data structures.
I'm also a PhD student doing research in High Performance Computing, so I understand about application scaling. Google doesn't have a way to stress test their applications before going to the wild. The best thing that they can do is to design carefully their applications, be aware of the computational time complexity of each algorithm and use the best data structures for the task, it doesn't matter if you are running a custom process scheduler in C language or a web application in Java.
Keyvan Nayyeri
Jun 26, 2011 8:17 AM
#
Thanks for the details.
My experience with most of the cases that I observed were for Software Engineering positions and the questions were senseless.
But I can see that as a HPC guy, the type of the questions asked is closer to your field.
And Btw, I didn't say that the questions are about specific programming languages and tools, did I? I said that the questions are not relevant to what most (but not all) applicants apply for.
Javier Martinez Canillas
Jun 26, 2011 9:12 AM
#
Yes, even in my case not all the question were relevant. I second you that due their false negatives, a very talented engineer may end out of a big company. But I don't think that the people that goes through these interviews can be a not qualified one. But I'm only talking for my experience, probably I'm wrong with this assumption.
Keyvan Nayyeri
Jun 26, 2011 9:47 AM
#
No, you may be right. As I stated in my post, this is based on my experience and observing different applicants. There may be differences between different departments at a company and even the person who's interviewing you. Also it may depend on the location. I don't know if your experience was for a job in the US or outside because inside the US these companies are going crazy in many ways and I'd expect to see a better scenario outside.
network security
Jun 26, 2011 10:20 AM
#
Omid K. Rad
Jul 02, 2011 12:15 PM
#
Keyvan Nayyeri
Jul 02, 2011 1:51 PM
#
Thanks for your comment :-) I'm glad to hear from you. I couldn't stay in touch since I deleted my Facebook account.
Naiem
Feb 04, 2012 1:18 AM
#
All interview questions can be practiced in advanced as they are available on internet. They ask questions and want the candidate to solve it, and code it on paper in 30 min. If you spend 2-3 weeks for preparation, with minimum knowledge of CS you can answer all questions the interview in the time bound.
I was asked about the design of a distributed scheduler, and the interviewer was a young boy which could not understand most of the things I was talking about. Eventually after describing a bunch of leader selection algorithms to him and their cons and pros (I did not use the term leader selection) he told me that I did not understand the issue and the solution is called leader selection and told me to study it if I like!!! I was speechless!
Keyvan Nayyeri
Feb 04, 2012 8:35 AM
#
Yes, unfortunately, the recuirment process at these companies is totally broken especially for people with advanced degrees who are seeking software developer position. Another friend had same experiences with Amazon, another one with Oracle, and another with Microsoft. The exact same issue. A young person without enough skills who thinks he/she knows everything just because he's working at one of these companies and can't understand the sophistication of some applicants.
As you said, it's just a matter of time to train these classic questions and answer them, and that's why these companies are flooded with bozo's working there.
Developer Art
Mar 23, 2012 7:50 AM
#
I thought I'd drop a word and support you on this one. I agree with you on most of the points. In fact, I've written about the same matters in my blog, perhaps you find there something to your liking.
Anyway, it's an old problem from the older days. It's been talked about, analyzed, argued over and forgotten. Companies haven't changed their practices and they're not going to. The situation is best described as "nobody cares".
These days I don't think big companies need more talent. Just as talent generally doesn't strive to join big companies. From what I've been hearing around, the only reason young people now join the big is because those companies can arrange their import into the US and working permits for them. It's commonly considered that you use this merely as a "transportation" and shortly after arriving there you jump ship and leave your employer for the one who will give you a much better salary (something called visa transfer). But there aren't as many people interested in going into the US either (no state medical insurance, legal troubles with patent trolls etc.).
Moreover the big usually require you to sign off all of your intellectual property for the entire period of employment, that's why people avoid them. The talented one launch their own startups and don't bother doing employed work for long. What the big get is not the best of the best but often the sediment.
In addition there is a conflict on the rise between the old and the young. The young wish to assert themselves over the "old farts", that's why they enjoy asking the experienced questions they'll fail without a preparation. This is why you shouldn't allow 20-years-olds to interview people, but pick a guy in his 30-35 to select new hires. He'll have a more balanced attitude.
Keyvan Nayyeri
Mar 23, 2012 8:14 AM
#
I don't have anything to add. All your points are very valid and true.
Thanks for your comment :-)
Leave a Comment