Hiring Practices in Software Engineering

From SI410
Jump to: navigation, search
Back • ↑Topics • ↑Categories

Hiring practices in software engineering refers to the procedures that encompass the hiring process for jobs in the tech sector. These practices often involve challenges where the applicant must demonstrate their knowledge and experience. Due to the nature of these challenges, many industry workers feel that they are not indicative of success in the tech industry[1]. Similarly, the hiring process often requires access to a computer and cell phone, which some have felt is also a limiting factor[1]. There is evidence that shows the hiring practices in software engineering can select for certain demographics in terms of sex, race, and class. This can lead to many ramifications as to the design of new technologies, algorithmic bias, and many other ethical concerns[1].

The following steps of the hiring process may vary slightly in order by company, but typically they follow this standard fashion.

First Steps of the Hiring Process

The hiring process for software engineers typically begins with an online application[2]. An applicant will submit their resume and other supporting documents, and if the company likes their resume, they will proceed to contact the applicant. The next step is typically a phone interview, where the questions will largely pertain to past projects, professional experience, and potentially some behavioral questions[1]. If the company wishes to proceed with the applicant, the next step is typically the coding challenge[1].

Coding Challenge

Example of a coding challenge question

The coding challenge typically involves problems pertaining to algorithms and data structures. These are problems that are often quite challenging thought experiments[1]. There are often many solutions to these problems, but some solutions may be algorithmically quicker, or utilize less memory than others. It is not uncommon for certain solutions to be correct, but simply not an efficient enough solution to receive the job[1]. The solution is often coded in a language of the applicant’s choosing. This coding challenge is usually completed online and timed, and is generally not proctored.

This step is one of the most crucial to getting the job, and is often the largest filter in the hiring process[1]. Many aspiring developers will spend significant time practicing these types of challenges on websites such as LeetCode or HackerRank[1]. Developers have complained that these practices can be discriminatory, as those without access to computers will not be able to access LeetCode or HackerRank without going to a public computer. Therefore, some developers believe that applicants with less fortunate backgrounds will have a significantly harder time breaking into the industry, as they will have less practice with these challenges[1].

For many companies, the coding challenges are structured around avoiding false positives. A false positive is defined as someone who the coding challenge and hiring process deems as a good fit for the company, but that person does not succeed at the company. In the case of Google, they structured their whole hiring process around avoiding these false positives[3]. These false positives are regarded as very costly, because the person will cost the company money and be difficult to fire. The coding challenges are, thus, structured around avoiding false positives; however, this implies that most companies are ok with rejecting people who would be good for the company[3]. The ramifications of accidentally hiring a bad applicant are strong enough that companies are willing to filter people who would be perfect candidates[3]. This has led to outcry from some developers, who believe that these coding challenges filter too many people[3].


One of the last steps in the hiring process involves behavioral interviewing. This typically happens in person, but has also shifted to platforms such as Zoom, Google Meet, and other video chat platforms due to the Covid-19 pandemic[2]. Interviewers will ask questions to see how an applicant may handle stress, deadlines, failures, and other situations[2]. The behavioral interview exists to determine if you can explain your ideas to coworkers, and if you are someone who other people would want to work with.


Whiteboarding a coding problem

Whiteboarding is another one of the last steps in the hiring process[2]. Whiteboarding is the practice of solving a challenge on a whiteboard. Usually this occurs in person, at the site of the company; however, it is not uncommon for this to be done over video sharing platforms as discussed in the previous section. Rather than a whiteboard, the applicant may type out their response in a text document, integrated development environment, or some other way to share a pseudocode solution. Typically, an applicant is given the problem by someone in the role or division that they are applying for. The applicant will work through the problem on a whiteboard in front of the person. The applicant can ask questions or bounce ideas off this proctor. The challenge will typically be a problem similar to the ones an applicant may face in the coding challenge. The difficulty may be easier to compensate for the added stress of being in person with an interviewer, but this is handled differently at all companies.

Many developers have critiqued the whiteboarding step in the hiring process. Critics of whiteboarding believe it induces excessive cognitive load and stress on applicants[1]. These critics believe this stress can lead to an exacerbation of the biases already present in software engineering hiring. A study has shown that solving problems in the whiteboard setting causes an increased cognitive load and stress level when compared to solving the same problem on paper[1].

Ethical Issues

Demographics in Tech

The demographics in tech demonstrate an overrepresentation of certain races and an underrepresentation of others. According to the United States’ Equal Employment Opportunity Commission, Whites are overrepresented in the tech sector at 68% of employees, and Asians are overrepresented at 14%[4]. This is in comparison to their representation in the United States population demographics, 60% and 5.9% respectively[5]. African Americans are underrepresented at 7.4% despite their population representation of 13.4%. Hispanics are similarly underrepresented at 8% of tech employees, despite their 18.5% population representation[4][5]. Similarly, women are underrepresented in software engineering at 36%[4]. Questions and criticisms have been raised about hiring practices in tech that leads to this overrepresentation of certain races and underrepresentation of others. Some argue that the lengthy interview process is not feasible to underprivileged minorities, and this is what causes the under and overrepresentation.

Software Engineer Gender Wage Gap

Many tech industry workers have expressed outcry at the existence of a gender wage gap in the tech industry. Nationwide surveys have supported this outcry, demonstrating that there is a wage gap of roughly 5.4%, implying that men make 5.4% more than women in software engineering roles[6]. Developers have questioned whether this may be due to the current hiring practices discriminating against women, or making it more difficult for women to succeed in the hiring process[6]. Although a pay gap exists, it is noted that the gender pay gap on average is roughly 11%, so software engineering has a less harsh pay gap[6]. The gender wage gap in software engineering is decreasing yearly, and this is true of almost all gender wage gaps in the United States. From 2016, the gender wage gap in computer programming shrunk the most of all gender wage gaps across jobs in the United States[6]. Overall, developers view this in a very positive light, and there is a growing sentiment towards bridging the gender pay gap[6].

Automated Resume Review

Many companies employ the use of an Applicant Tracking System (ATS) to filter resumes before they are reviewed by actual human resources workers or hiring managers[7]. These systems will search for keywords relevant to the job description, and reject resumes if they do not possess enough of the keywords[7]. In the field of software engineering, those terms will most likely be the coding languages, technologies, libraries, and experience one has. Some developers feel that this reinforces bias in hiring practices, because underprivileged applicants may not be able to gain experience with certain technologies[7]. This poses extra barriers for underprivileged applicants who are attempting to enter the software engineering industry[7].

Employers and managers expressed sentiments that these automated resume reviews disqualify applicants who would be qualified for the position. However, there is a strong desire to disqualify bad applicants from coming through the hiring process, so many employers find it acceptable to disqualify good applicants so long as they ensure disqualification of all bad applicants[3]. Automated resume review can also have errors when given different file types, further increasing poor developer sentiment about it[7]. Automated resume review can also be fooled by white text, appearing invisible to a human reviewer, but appearing to match the job description perfectly to ATS[7]. There are managers in favor of ATS, because it is able to ease the workload on hiring managers and human resources[7]. However, the perspective from the developer side is largely negative[7].

Algorithmic Bias as a Result of Demographics

Algorithmic bias is a concept where modern software does not apply equally to all users. There are many reasons why algorithmic bias can occur. Some argue that algorithmic bias is an outcome of the demographics in tech, and, thus, attributable to the hiring process[8]. This can be due to algorithms being designed by creators who do not fully represent users. There is often thought to be a golden rule in user centered software design, that “you should know their user, for they are not you[8].” Still, it can be difficult for developers to separate how they would use technology from their target audience[8]. Developers have a tendency to design applications that they would interface well with, and may struggle to see how other users would struggle with their design[8]. This is why many companies find it absolutely imperative to test prototypes on target audiences. Similarly, many companies are beginning to strive for more diversity in their workplace, so that their applications are designed by a diverse team that can consider more types of users[8].

Algorithmic bias can also arise from artificial intelligence programs. Artificial intelligence programs often need to be trained on a set of sample data[8]. If sample data only comes from one group of users, then other groups of users may not interface well with the algorithm[8]. This occurred in the case of facial recognition software, where the subset of training data was largely only white people[8]. The facial recognition software then struggled on faces with darker skin tones. Some critics have claimed that a more diverse team of developers would have recognized that training data needed to include more faces from people of all ethnic backgrounds[8].

Algorithmic bias can even affect automated resume review[8]. It was discovered that at Amazon, the automated resume review process was an AI that had trained itself on the resumes of the developers of the company[8]. In turn, this led to the automated resume reviewer selecting strongly for demographics that already existed at Amazon. As Amazon was predominantly white males, the resume reviewer would prefer white male resumes[8]. The automated resume reviewer exacerbated the gender demographic gap in software development.

Diversity in Software Engineering

Diversity in engineering is becoming an increasingly sought after quality. Managers are now pursuing teams that are diverse in race, gender, age, and nationality[9]. Managers that are pursuing teams with diversity believe that a diverse team will lead to the creation of applications that are better suited for users of all backgrounds[9]. Managers in favor of pursuing diverse teams have cited examples such as artificial intelligence programs that only catered to white people, or artificial intelligence programs that labelled other races in a derogatory way[9].

The pursuit of diversity in software engineering is not without criticism, however. Some developers criticize the pursuit of diversity, with the complaint that seeking diversity could mean that more qualified candidates may be overlooked in favor of creating a diverse team[9]. Some developers criticize the pursuit of diversity in that creating diverse teams may create teams that are ineffective at communicating ideas to each other[9]. Some developers believe that if a team is too diverse, then age, language, and habits may differ too much to create an effective team[9]. Managers in favor of pursuing diversity dislike this notion, as they felt that they select for applicants with strong communication skills[9].

Remote Interviewing

Many interview practices have shifted to remote options, and this has generated controversy as an ethical issue. The technical interview is often conducted remotely, as a coding challenge that one must take online. Critics of this online aspect have cited that many people do not have access to the internet, or reliable access to a computer, so the use of an online coding challenge can be a discriminatory filter[1]. People in favor of online coding challenges cite that this is easier for people who may have to work other jobs[1]. People in favor of online coding challenges believe that allowing people to take these coding challenges on their own time can allow for underprivileged people to still be able to complete their coding interviews even with busy lives[1]. Others have demonstrated that people without computers are unable to reliably access LeetCode and HackerRank, the main sites used for practicing coding challenges[1]. This could lead to underprivileged people not necessarily being less qualified for positions, but less marketable due to not being able to practice[1].

Another ethical concern around remote interviewing aspects is having behavioral interviews online[1]. Critics of remote behavioral interviewing believe that discrimination can occur for applicants who do not have enough money to afford a nice living space[1]. This can translate to having a messy or chaotic environment while interviewing. Critics believe that in person interviews level the playing field[1]. Furthermore, critics of remote interviews believe that people who do not have reliable access to the internet or a laptop will be at a massive disadvantage when it comes to remote behavioral interviewing. However, there are also people in favor of remote interviewing. People in favor of remote interviewing often highlight the fact that remote interviews means applicants do not have to travel. Not having to travel to interview may be a benefit to applicants who need to work while they are applying for jobs, or applicants who may struggle to travel due to a disability or financial reasons[1]. There are valid concerns both for and against remote behavioral interviewing.

An interesting ethical concern is the change of whiteboarding from in person to remote. There are many critics of the whiteboarding practice, as studies have shown that it puts significant stress on the applicant. When conducting whiteboarding remotely, interviewers allow for applicants to type out their solution in a text editor[1]. Some studies have shown that this is less stressful and induces a lesser cognitive load than whiteboarding in person[1]. Many critics who are against whiteboarding are in favor of this method of administering problems[1].

Age Related Discrimination

There are critics in the software engineering community that believes there is an element of age related discrimination in software engineering hiring practices[10]. Critics suggest that the nature of the technical interview strongly favors newly graduated engineers who have been practicing these problems in school[10]. Many developers who have been in the industry for a period of time have forgotten how to solve some of these thought problems, even though they are qualified for the job with years of relevant experience[10].

On the other side, many developers feel that there is a barrier to entering the software industry where you need experience to get a job[10]. Many jobs require years of relevant experience with certain technologies to even pass the resume screening test[10]. This can be a filter for people trying to enter the industry, as many developers feel that this creates a paradox of needing experience to gain experience. Some developers have complained that even internships have incredibly demanding requirements, especially considering these internships are low paid and often meant for students[10]. Some developers feel that after your first job in the industry, it becomes significantly easier to find subsequent jobs[10]. Furthermore, some developers wonder if there are not enough jobs that require entry level applicants[10]. Similarly, some developers question whether college software engineering education is truly enough to prepare one for a job in the industry[10].

Predatory Hiring Practices

An ethical issue in the world of software engineering hiring is predatory hiring practices. Some companies have been known to use coding interviews in a method to advance their own software for free[11]. These companies will pose difficult coding challenges that actually apply to their company’s needs[11]. The company receives software that they can review and potentially merge into their own codebase for free[11].

Another predatory hiring practice is leaving applications open for filled positions[11]. Many times, software development companies will leave their position open on many websites, but the position has already been filled or the company has stopped looking[11]. These applications waste the time and resources of applicants, and make it incredibly difficult to find legitimate job postings.


Ghosting is the practice of not responding to some form of communication. In the case of software engineering hiring, ghosting refers to the practice of not sending any communication to an applicant, rather than sending a rejection[11]. Some developers have complained about this practice, as companies are leaving applicants hopeful that they may still receive an interview with the company[11]. Some developers have even said that they were ghosted even after completing all steps of the interview process[11]. Other developers have taken a different stance, as they believe that rejections are a waste of time and one can assume they did not get the job unless they hear otherwise. A small number of developers have said that not receiving the rejection letter can spare the feelings of an applicant[11]. Still, many developers believe that not receiving an outright rejection is problematic.


  1. 1.00 1.01 1.02 1.03 1.04 1.05 1.06 1.07 1.08 1.09 1.10 1.11 1.12 1.13 1.14 1.15 1.16 1.17 1.18 1.19 1.20 1.21 1.22 1.23 Mahnaz Behroozi, "Hiring is Broken: What do Developers Say About Technical Interviews?" 2019 https://chrisparnin.me/pdf/interviews-HN.pdf
  2. 2.0 2.1 2.2 2.3 Indeed Editorial Team, "A Guide to the Software Engineer Interview Process," June 24, 2021 https://www.indeed.com/career-advice/interviewing/software-engineer-interview
  3. 3.0 3.1 3.2 3.3 3.4 Dean Jackson, "The Google Technical Interview: How to Get Your Dream Job," Winter 2013, XRDS https://dijkstra.eecs.umich.edu/kleach/eecs481/w21/readings/googleinterview.pdf
  4. 4.0 4.1 4.2 U.S. Equal Employment Opportunity Commission, "Diversity in High Tech," 2021 https://www.eeoc.gov/special-report/diversity-high-tech
  5. 5.0 5.1 United State Census Bureau, "QuickFacts," July 1, 2021 https://www.census.gov/quickfacts/fact/table/US/PST045221
  6. 6.0 6.1 6.2 6.3 6.4 Megan Rose Dickey, "The Gender Wage Gap is Shrinking Among Computer Programmers, But It's Still Quite Large," March 26, 2019 https://techcrunch.com/2019/03/26/the-gender-wage-gap-is-shrinking-among-computer-programmers-but-its-still-quite-large/
  7. 7.0 7.1 7.2 7.3 7.4 7.5 7.6 7.7 Sarah K. White and Terena Bell, "Applicant tracking system: The Secret to Beating a Resume-Filtering ATS," Oct 21, 2021 https://www.cio.com/article/284414/applicant-tracking-system.html
  8. 8.00 8.01 8.02 8.03 8.04 8.05 8.06 8.07 8.08 8.09 8.10 8.11 Nicol Lee and Paul Resnick, "Algorithmic bias detection and mitigation: Best practices and policies to reduce consumer harms," May 22, 2019 https://www.brookings.edu/research/algorithmic-bias-detection-and-mitigation-best-practices-and-policies-to-reduce-consumer-harms/
  9. 9.0 9.1 9.2 9.3 9.4 9.5 9.6 Gema Rodriguez-Perez, "Perceived diversity in software engineering: a systematic literature review," July 16, 2021 https://link.springer.com/article/10.1007/s10664-021-09992-2
  10. 10.0 10.1 10.2 10.3 10.4 10.5 10.6 10.7 10.8 C. Alvino, “Technical Interviews an Instrument of Exclusion and Discrimination,” June 2014 https://careerconservatory.com/technical-interviews-an-instrument-ofexclusion-and-discrimination/
  11. 11.0 11.1 11.2 11.3 11.4 11.5 11.6 11.7 11.8 S. Shogren, “Interview Humiliation,” Oct. 2015 http://deliberate-software.com/on-defeat/