Hiring Practices in Software Engineering

From SI410
Revision as of 21:47, 28 January 2022 by Brjchang (Talk | contribs)

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

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. Thus, 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].

Behavioral

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

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%, and thus 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. These systems will search for keywords relevant to the job description, and reject resumes if they do not possess enough of the keywords. 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. This poses extra barriers for underprivileged applicants who are attempting to enter the software engineering industry.

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. 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. There are managers in favor of ATS, because it is able to ease the workload on hiring managers and human resources. However, the perspective from the developer side is largely negative.

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. 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.” Still, it can be difficult for developers to separate how they would use technology from their target audience. 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. 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.

Algorithmic bias can also arise from artificial intelligence programs. Artificial intelligence programs often need to be trained on a set of sample data. If sample data only comes from one group of users, then other groups of users may not interface well with the algorithm. This occurred in the case of facial recognition software, where the subset of training data was largely only white people. 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.

Algorithmic bias can even affect automated resume review. 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. 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. The automated resume reviewer thus exacerbated the gender demographic gap in software development.

Diversity in Software Engineering

References

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