© The Author(s), under exclusive license to APress Media, LLC, part of Springer Nature 2022
B. Jakobus et al.Leadership Paradigms for Remote Agile Developmenthttps://doi.org/10.1007/978-1-4842-8719-4_4

4. Hiring

Benjamin Jakobus1  , Pedro Henrique Lobato Sena2 and Claudio Souza3
(1)
Teresópolis, Rio de Janeiro, Brazil
(2)
Joinville, Santa Catarina, Brazil
(3)
Westport, CT, USA
 

[An expert] is someone who knows some of the worst mistakes that can be made in his subject and knows how to avoid them

—Werner Heisenberg

Behind every great business, there are great people. No matter how automated a business is or to whom you are providing the goods and services, without good people, your business will fail. Competence and incompetence permeate every layer of your organization. From top to bottom. A good teammate can lift everybody up, while a few bad apples have the power to kill every last morsel of passion, enthusiasm, and collaboration. Bad apples will destroy products faster than good people can build them. As such, hiring the right people is self-evident, no matter what industry you are in. But that is easier said than done. As any recruiter can attest to, finding good professionals is difficult, and often the difficulties begin by actually trying to define what a right fit looks like for your business. Hence we begin this chapter with the latter: What do we mean with the “right people”?

Defining “Right People”

By “right” we mean a person that satisfies the following criteria:
  1. 1.

    Has the required technical knowledge to perform the expected activities

    This should be obvious, yet we all know this one colleague whom we could not trust to make even a cup of coffee. A common pitfall that results in the hiring of this colleague is the focus on key words in the resume, instead of careful scrutiny. The most effective way to ensure a high level of technical talent is to create high barriers of entry. That is, make technical exercises and technical interviews challenging, and design them in such a way as to best reflect the requirements of the role. Except for the most junior roles, take-home technical exercises that only take an hour or two are often too short to correctly classify candidates. Similarly, a single, 1-hour long, technical interview will most likely not allow you to collect sufficient signals to determine whether or not the candidate is a good fit. Remember that the purpose of the interview process is not to find the perfect candidate or to push as many candidates through the pipeline as possible. Instead, the purpose of the interview process is to filter out unsuitable candidates.

    When it comes to solemnly technical abilities, we found the most effective technical interview process to contain:

     
  2. 2.

    A complex take-home exercise which accurately reflects the working environment and project requirements, and which candidates can do in their own time. Make the exercise technically challenging, but ensure that these challenges are similar to those that the candidate would face on a daily basis. Avoid brain-teasers and math problems unless that is the type of problems that they will be solving daily. Ask candidates to include tests and focus on good code quality. Once completed, ask them to submit the exercise using a version control system. Mirror submission to day-to-day interaction.

     
  3. 3.

    A technical interview in which candidates need to talk through their submitted solution, justifying their decisions, design, and architecture. Here it is important that you dive into the details, and try to expose as much of the candidate’s background as possible. Sometimes decisions that seem small were carefully thought through and can show how thorough a candidate can be. Usually, this type of interview lasts 1-2 hours and gives enough room to allow the candidate to ask questions. Remember: the type of questions a candidate asks can tell you a lot about their level of experience.

     
  4. 4.

    An additional systems-design interview round1 that lasts roughly 1 hour (applicable only when hiring more senior candidates). This allows you to evaluate the candidate’s overall level of experience, beyond the narrow focus of the job. A good software engineer should have a solid, all-around understanding of how a system is built and structured. They should understand how to model data, what security considerations need to be taken into account when building a system, how to choose and reason about different technologies, as well as understand the impact of their decisions and potential gray areas. Good candidates will understand what trade-offs to make between the frontend and backend, and how this affects the overall product.

     
  5. 5.

    Is capable of anticipating problems before they happen

    Mistakes are costly—both in terms of time, money, and morale. A good software engineer not only solves problems, but is able to anticipate them before they occur. They are proactive rather than reactive. While there are plenty of experienced professionals that are not capable of anticipating problems, years of experience can usually be one solid indicator: Younger engineers have often not lived through enough of their own mistakes to spot problems before they occur. Older engineers, in contrast, have almost certainly been bitten by their own decisions.

    Being able to anticipate problems not only means having lived through one’s mistakes. It also means being able to reason within an environment that contains high levels of uncertainty. We will discuss this in detail later on in this chapter (see section The Importance of Experience), but in essence it comes down to this: People that do well in environments with high levels of uncertainty are people that are good at estimating probabilities (subconsciously or otherwise). Unfortunately, more than half a century of research in psychology shows that the majority of people are terrible at this. Calibration tests are one commonly used method of measuring how good somebody is at estimating probabilities. While some professionals such as weather forecasters2 are quite good at estimating probabilities, most people are not.3 One possible explanation for this is outlined eloquently by Lichtenstein et al. as they summarize Pitz’ (1974) research:4

    “Pitz (1974), too, accepted that people’s information-processing capacity and working memory capacity are limited. He suggested that people tackle complex problems serially, working through a portion at a time. To reduce cognitive strain, people ignore the uncertainty in their solutions to the early portions of the problem in order to reduce the complexity of the calculations in later portions.”

    Calibration testing aside, finding candidates that are good at dealing with uncertainty is difficult. Diving deep into a candidate’s background and designing well-prepared systems design interview questions weed out the most unsuitable candidates.

     
  6. 6.

    Is humble and self-conscious

    Nobody knows everything. Good professionals are aware of their limitations and act this way. That is, they perform their tasks carefully. They are able to learn from their shortcomings as well as accept advice and suggestions from other team members. Arrogance incurs a large cost on both the team and the product, as arrogant engineers are not only difficult to work with, but are often incapable of accepting thoughts and improvements coming from others. On the other hand, humble engineers are almost by definition good team players. In an interview, this is a difficult trait to test for. Therefore, instead of actively trying to find a humble candidate, filter out those that are clearly not humble. Huge red flags are candidates that
    • Have difficulties speaking about times when they were part of a team.

    • Always refer to themselves and never speak of their team. Sentences begin with “I,” never with “we”.

    • Speak badly of their past company or teammates.

    • Are unable to discuss solutions or accept direction/suggestions as part of questions in the technical interview process.

    • Are unable to identify their own limitations;

    • Use specific technologies/frameworks as escape hatches to avoid showing that they do not know something (as opposed to discussing a topic holistically).

     
  7. 7.

    Possesses good analytical skills

    Having good analytical skills does not only mean that the person is able to gather relevant information to solve the problem. It also means being able to properly scope a problem. That is, being able to identify what is not part of the problem. Engineers that are not able to draw accurate boundaries will inevitably implement solutions that are unnecessarily complex while also spending company time (i.e., money) implementing things that are not needed.

    Furthermore, engineers with high analytical skills are able to test and experiment with data, and draw accurate conclusions based on this data. Being able to understand a problem is not very useful in itself if you are not able to evaluate your solution.

    When it comes to identifying candidates with strong analytical skills, the systems design interview question is critical. Not only does the question help gauge a candidate’s overall level of experience and technical abilities, but it also provides insight into how a candidate bisects and reasons about problems. Candidates that do well on system design interview questions demonstrate that they can accurately identify requirements and establish boundaries.

    Alongside the systems design interview question, presenting candidates with a dataset which they need to analyze helps filter out candidates that possess lower levels of analytical skills.

     
  8. 8.

    Are good communicators

    Any book, article, or podcast on management, leadership, or interviews will tell you about the importance of good communication skills. As such, we do not want to spend much time on an already exhausted topic. Good communication skills are critical. Period. Professionals that are good communicators
    • Give straight answers (No BS)

    • Are polite and honest

    • Are able to handle conflict when divergent opinions arise

    • Are able to give and receive feedback

    • Are able to discuss and justify their decisions and solutions

    • Are humble and self-conscious (i.e., able to admit when they are wrong and aware of their own limitations)

    • Are reachable. That is, they respond to and act on messages in a timely manner as appropriate

     

The “Good Engineer” Checklist

As shown in Figure 4-1, aside from the aforementioned core pillars that define a good professional, good software engineers are
  • Action biased instead of overplanners.

  • Iterators. They understand the importance of iterative development and realize that as long as a contribution improves the system, that contribution does not need to be perfect. Continuous iteration results in constant improvements.

  • Capable of breaking down larger concepts/problems into smaller ones.

Four major factors of a good software engineer illustrate good analytical skills, anticipates problems, technical knowledge, humility and self-confidence, and good communication.

Figure 4-1

The good software engineer in a nutshell

The “Bad Engineer” Checklist

A bad engineer is basically the inverse of the previous two sections. Here is a list of behaviors commonly found in underperforming professionals. These behaviors are the direct consequence of a lack of the attributes described in the previous section and are summarized in Figure 4-1.

The bad engineer:
  • Cannot justify decisions technically.

  • Is not disciplined.

  • Is unreliable. For example, they agree to something in a meeting, but then go away and forget to action on the agreed or do something completely different altogether without communicating this change.

  • Does not incorporate advice, comments, or industry best practices.

  • Ignores feedback. This not only makes interactions with the professional frustrating for others, but actually means that they are unwilling to learn. They lack the technical background for the job, but are so uncooperative that they are unable to gain these skills.

  • Offloads work on to other people’s shoulders and has to be “carried” by the team.

  • Does not interact during meetings or fails to attend meetings in the first place.

  • Is unable to give an insight into the progress of their work/estimate when things will be done. When asked, they either give an overly general answer, or go into pointless minute details.

  • Is not proactive, only reactive.

  • Masks incompetence by using arrogance or other subterfuge like job titles, department responsibilities, etc.

  • Lacks attention to detail and acts in a generally negligent manner. Attention to detail when performing one task generally means lack of attention in general. As an old saying goes: “How we do one thing is how we do everything else.” That is, people that tend to greatly underperform in one area of their job tend to do so in all other areas of their job too.

  • Lacks pride and interest in their work.

  • Is not able to think through problems.

Keep in mind that the points listed above are behaviors that bad engineers do consistently, great engineers can have a bad day and slip into those behaviors occasionally but they certainly shouldn’t be a habit for them.

Info

Attitude trumps lack of technical background in most jobs. That is, with the right attitude, we can learn to excel at a job. However, a characteristic of an underperforming engineer is that they lack both the right attitude AND technical background/knowledge. Without the right attitude, they are unable to learn the skills they lack.

Five major factors an engineer illustrates cannot justify decisions, failing to interact, not being proactive, being too uncooperative, ignoring feedback, and being unable to give insight.

Figure 4-2

The bad software engineer in a nutshell

The Importance of Experience

The Cambridge English dictionary defines experience5 as the process of doing and seeing things and of having things happen to you. In other words, people with experience are those whose thoughts and actions have been shaped by both their own past and the past of others. Life experience allows us to
  • Live through other people’s decisions

  • Make decisions without all the necessary data

  • Know the importance of decisions and how they might affect the future

In slightly more complex terms: experience allows us to deal with uncertainty. Most importantly, “unknown unknowns.” That is, it enables us to deal with the correlation between experience and a broader knowledge that decreases the surface of things that we do not even know we don’t know (unknown unknowns). In his book “Risk Intelligence,” Dr. Dylan Evans illustrates this notion (depicted in Figure 4-3) using the concept of a darkened room:

“Picture your mind as a lightbulb shining in an otherwise dark room. Some nearby objects are fully illuminated; you can see them in every detail, present and identifiable. They are the things you know very well: the names of your friends, what you had for breakfast this morning, how many sides a triangle has, and so on. The objects on the other side of the room are completely shrouded in darkness. They are the things about which you know nothing: the five thousandth digit of pi, the composition of dark matter, King Nebuchadnezzar’s favorite color. Between light and darkness, however, lies a gray area in which the level of illumination gradually shades away. In this twilight zone, the objects are not fully illuminated, but neither are they completely invisible.”

Assuming that an individual learns from both their past experiences and the experiences of others, they will, with time, become better at navigating this twilight zone. That is what we mean when we say that “experience allows professionals to deal with uncertainty.” Note that this does not imply that the twilight zone will shrink with experience. Of course it might if the individual remains in the same domain for years and gathers more and more minute knowledge. But in most cases, the twilight zone will always remain—people switch jobs, tackle new challenges, or venture into new domains. With experience however, the individuals become more self-aware of their limitations, the limitations of their field as well as how much relevant information they may not have to make a decision. Over and under-confidence are replaced with better self-knowledge, and the individual becomes “better calibrated” to their task environment. Not only does this allow for more effective task execution as risks and uncertainties can be identified more readily, it also makes for better communication: The more experienced someone is in a field, the better their educated guesses and probability estimates become.

In contrast, inexperienced professionals might have learned the necessary technical skills to execute a task that lies “outside the twilight zone,” but they usually are unable to make (or even identify) far-reaching decisions and voice them with the right amount of certainty. Without having been bitten by their own mistakes a sufficient number of times, inexperience means bringing either a “dangerous excess or a problematic deficiency”6 to the table. An inexperienced candidate has not had the time to make all the mistakes that they need to make. Since they do not know what these mistakes are (or how to avoid them), chances are that they will make at least some while working on your project.

It is therefore no surprise that experience is highly valued in the field of software engineering. Engineers can make multiple important decisions in a short time frame that will deeply impact the future of an entire project, especially in the initial phases of a project. Therefore having a good understanding of the consequences of those decisions in the future, the knowns, unknowns, and unknown unknowns, will directly impact the success of the project.

To put this all into more concrete terms: There are decisions that are easy to change later, like choosing a certain existing library for a very specific feature. However, other types of decisions, such as selecting a programming language or framework for a project, are much harder to change or revert. Experience plays an important role in this context, as it not only allows the engineer to properly differentiate between the different types of decisions, but also enables the engineer to handle difficult decisions more effectively. That is, when making a decision that is difficult to revert in the future, they can take the necessary steps that could make a potential reversal less difficult. For example, applying different techniques to properly isolate code and hence minimizing the impact of future changes.

Decision making and uncertainty aside, experience also acts as a natural filter for unsuitable job candidates. As Tim Nichols concisely puts it in “The Death of Expertise”:7

“Every field has its trials by fire, and not everyone survives them, which is why experience and longevity in a particular area or profession are reasonable markers of expertise.”

A circle diagram of three factors. The Unknown unknown comprises the known unknown, and the known.

Figure 4-3

An illustration of Dr. Evan’s “Darkened Room.”

The Dunning-Kruger Effect

We probably all know this one incompetent colleague who was consistently unable to deliver, but thought the world of themselves. It turns out that there is a name for this type of illusory superiority: the Dunning-Kruger effect. First proposed in the late 1990s by two psychologists, David Dunning and Justin Kruger,8 the effect basically states that the incompetent are unaware of their incompetences due to the lack of competence (Figure 4-4). Put more bluntly: the stupid are too stupid to realize that they are stupid. For example, an incompetent software engineer may be unaware of their inability to design and write good software, since the very skills that would allow them to develop such software are the same skills that allow them to identify “bad” software. The irony therefore follows that, in order to make a bad software engineer realize their incompetence, they must become more competent.

While, according to Dunning and Kruger, the incompetent are overconfident in their abilities, the more competent a person becomes, the more underconfident they become, as through knowledge they become blissfully aware of the limits of their knowledge. It is therefore no surprise that many companies profess “humility” as one of the core values that they look for in candidates. Sure, the “overconfident know it all” will be an annoying colleague and make for a bad culturefit. But at the heart of the boasting and bold candidates often lies a lack of knowledge and competence. Attributes such as “humility” and “modesty,” on the other hand, are often a signal for competence and should be actively screened for when hiring.

A chart depicts the relationship between field confidence and knowledge. The curve begins at a low point, rises at a constant rate to a high point, and then moves to the downside.

Figure 4-4

An illustration of the Dunning-Kruger effect

Honesty

Finding new hires is expensive (as we will see in the next section “The Cost of Hiring”). To ensure that these expenditures pay off (that is, to ensure that you actually retain your new hires), honesty during the interview process is crucial. Expecting job applicants to talk honestly and openly about their past experiences is a given. Unfortunately, many employers do not see honesty as a two-way street. Sugar-coating the position and company is common practice, either because the interviewer does not want to sound too negative (and hence be responsible for painting the company in a bad light) or because they are afraid of failing to attract the right candidate. This is problematic in two ways. Firstly, by lying, you are acting unethically. As Sam Harris eloquently puts it in his book “Lying,” when he writes that “[by lying] we deny others a view of the world as it is. Our dishonesty not only influences the choices they make, it often determines the choices they can make—and in ways we cannot always predict. Every lie is a direct assault upon the autonomy of those we lie to.”

That is, by sugar-coating a position, you deny the candidate to see what they are actually signing up for. Since people spend most of our waking hours at work, a candidate’s understanding of the company will have a significant impact on their life if this understanding turns out to be false.

Secondly, by lying to candidates, you will end up generating additional costs for the company, as honesty and expectations are closely linked. You are hiring intelligent, capable candidates. And—surprise surprise—smart candidates will soon figure out what is wrong with the company. You, in turn, will gain a reputation as a dishonest leader, and will lose the trust of those working for you. A lack of trust combined in a company that fails to meet expectations results in brain drain: If the job market permits, people will leave. Which means you will need to start the hiring cycle all over again.

One prevailing source of dishonesty in leaders comes from unfeasible targets. An honest leader, operating in an honest environment, will never purposely aim at unfeasible targets. Leaders that catch themselves thinking about a $50-100 billion valuation in 5 years while the company only has 500 users should ask themselves how honest they are with themselves. While your job as a leader requires you to remain positive even when in adverse circumstances, you should remember that there is a balance to be struck between positivity and realism. Especially in business, honesty and realism go hand in hand. As Ayn Rand once famously said: “You can ignore reality, but you can’t ignore the consequences of ignoring reality.”

Another common source of dishonesty stems from sugar-coating challenges. Leaders can be upfront about the technical and organizational challenges that await candidates without needing to put everything into a completely negative light. Unfortunately, most leaders prefer to try and make reality look better than it really is.

Summarizing these two major sources of dishonesty in interviews: If you can be honest about the status quo and what the company is aiming at, then you will be able to avoid a significant percentage of churn.

Furthermore, Being honest about the growth possibilities for the candidate within the company is equally as important as being honest about the status quo. Many companies love to brag about growth opportunities but in reality prefer outside hires over internal promotions. Therefore, if you are offering growth opportunity, be ready to answer (or even better: include it in the job description)
  • Exactly what promotion opportunities does the company offer?

  • What percentage of the current employees walked that path?

  • How long would the candidate need to wait to be considered for a promotion?

  • Does the company have a clear path for promotions for that position?

  • Are the opportunities and the candidate’s expectation in synchronism?

Info

The seven golden rules for successful technical interviews

  1. 1.
    Interviews are all about looking for signals. Try and gather as many signals as possible by
    1. a.

      Not dwelling on minute technical details

       
    2. b.

      Not dwelling on a candidate’s mistakes. Move on quickly

       
    3. c.

      Ask for specifics. Dig deep

       
     
  2. 2.
    Structure your technical interviews so that you can quickly identify signals which indicate a candidate’s
    1. a.

      Ability to break down and analyze problems

       
    2. b.

      Ability to abstract

       
    3. c.

      Concern for code organization, clarity, and maintainability

       
    4. d.

      Concern for testing

       
    5. e.

      General technical knowledge (not minute details)

       
    6. f.

      Concern for documentation and how to keep and transfer knowledge

       
     
  3. 3.
    Behavioral and cultural interviews should look for signals that indicate
    1. a.

      An openness to learning and constant improvement

       
    2. b.

      An ability to give and deal with feedback

       
    3. c.

      A willingness to compromise

       
    4. d.

      A general fit for the company’s culture

       
     
  4. 4.
    Successful interviews require preparation on behalf of the interviewer. This means
    1. a.

      Creating a bank of possible questions to ask across interviews

       
    2. b.

      Creating a scorecard and template for notes

       
    3. c.

      Reading up on the candidate’s background before the interview

       
    4. d.

      Recording feedback and notes either during the interview or as soon as possible after the interview

       
     
  5. 5.

    Be transparent. There is no point in over-selling the role just to have someone leave shortly after accepting an offer as the role does not meet expectations.

     
  6. 6.

    Be empathetic and positive. Regardless of the candidate’s performance, you should ensure that the interview is a positive experience for the candidate. Negative interview experiences reflect badly on both you and the company.

     
  7. 7.

    Dive into details when required. If a candidate only gives a generalized response, dig deeper.

     

The Cost of Hiring

Hiring involves direct and indirect costs. The direct costs, such as man-hours spent by recruiters or advertising, are obvious and as such we won’t elaborate on those here. The indirect costs however are more subtle, yet usually greater. Recruiters naturally like to push as many candidates through the pipeline as possible. This approach leads to lost engineering man-hours. Technical interviews need extensive preparation, and technical exercises require reviewing. By narrowing the pipeline—that is, detailing the exact job requirements as best as possible, as well as setting high screening standards—a company can reduce these costs.

Once a candidate is hired, they will need to be on-boarded. Not only is this engineering time that is spent not developing the product (opportunity cost), but the on-boarding phase is likely to introduce risks to the product. New bugs tend to be introduced as new engineers begin working in a new, unfamiliar environment. While this decreases over time, and good engineers will more than make up for the cost of hiring (otherwise they would not be hired), it is important to keep this cost in mind as companies with a high churn will pay a high price.

The cost of hiring increases the higher your churn is. Once you begin losing a certain percentage of your teams, you not only lose knowledge but also impact team morale and team processes. Even if you have perfect hand-over processes and perfect documentation, lost knowledge is difficult to get back and usually takes many months (or years). A loss in morale on the other hand can result in a snow-ball effect: colleagues leave and either bring others with them to the new company or motivate them directly or indirectly to jump ship.

Last but not least, processes die with people. People enter a company and bring with them new processes and establish these for different reasons, experienced professionals implement them knowing their pros and cons, while inexperienced ones do so because they are comfortable with it and want to mitigate changes. Hopefully, the new processes might make actual sense and improve things. However, many times they are introduced because people want to set a mark, be seen to be doing things, or simply because they are used to working this way. Regardless of the “why,” the introduction of new processes by new hires can often fan an existing fire: People are creatures of habit and like working in ways that they are used to. A large influx of new hires and new processes can therefore increase dissatisfaction and result in further brain drain.

Summarizing the cost of hiring:
  1. 1.

    Hiring is complex and costly. There are both direct and indirect costs.

     
  2. 2.

    New hires can result in further churn.

     
  3. 3.

    Knowledge and morale lost will be difficult to regain.

     
Info

The objective of the interview process is to weed out the unsuitable candidates. Interview processes is not made to find the perfect candidate. Only time can reveal this.

The Cost of Bad Engineers

Before we begin to discuss the price that a company pays for hiring “bad” engineers, we need to distinguish a bad engineer from a bad hire. On the surface, this difference might not be immediately obvious. Nevertheless, it is an important one to keep in mind, and the essence of it is this: Sometimes a hire might not be the ideal fit for a team/company, but could still be a good fit for another team/company. Every single one of us is subject to situational forces, meaning that our surroundings define and exert certain processes of transformation on our character, changing how we act and react to those around us. Put into one team, a certain engineer might excel at tasks that, if placed in a different team, they would perform poorly. Being able to differentiate the causes of poor performance—that is, poor performance due to their surroundings, or poor performance due to incompetence—is difficult and requires careful observation. The cost of bad engineers is therefore different to the costs associated with bad hires. The latter can often be rectified or compensated with relatively little change and poses a lower risk to the company as a whole. This is because bad fits are due to situational forces, while bad professionals are “bad” because they lack certain attitudes, abilities, skills, or intelligences that are required in order to excel at the job regardless of the team.

While bad fits are low risk, an accumulation of bad engineers can quickly break a product/project/company and is therefore the topic of this section. As the age-old saying goes: Regardless, each team member is a cog in the machine. And a single broken cog can cause the machine to break down. Specifically, a bad engineer will
  • Have a detrimental impact on the code base and hence the product as a whole.

  • Have a negative impact on team morale. A good engineer paired with a bad engineer in the same position will cause the good engineer to feel demotivated.

  • Introduce architectural decisions that can be difficult to revert and which result in a domino effect: Problems in systems tend to cascade and accumulate (this is detailed in depth in “Chapter 5: Quality”).

  • Increase churn and burn-out rate. Bad employees increase the workload for others, since good engineers need to make up for the bad engineers. This leads to higher stress levels and load.

Above all, bad engineers that are allowed to persist in their positions will set bad precedents and lower the standard of the team as a whole. Most people tend to sink to their lowest acceptable levels of performance. By not removing unsuitable team members, leaders set a low bar and signal to others that poor performance is acceptable. Once settled, these behavioral and cultural habits can be difficult to reverse even if the responsible individuals have been removed.

Info

Bad habits are like mold. Spread by underperforming professionals, they affect company culture and are difficult to remove.

Therefore, if leaders want their software products to succeed, they need to take swift action if unsuitable hires make it through the interview process. Remember: while a single cog is important, it does not mean that it cannot be replaced. Faulty cogs need to be exchanged or the machine will break down.

[There is ] wisdom in the old Chinese warning to beware a craftsman who claims twenty years of experience when in reality he’s only had one year of experience twenty times

—“The Death of Expertise” by Tim Nichols (page 36)

Retention: Understanding the Career Cycle

By now we have hopefully convinced the reader that hiring is expensive. One important factor in reducing the cost of hiring is retention. That is, keeping good employees for as long as possible. Based on our experience, at the heart of retention, lies the understanding of the cyclical nature of careers (depicted in Figure 4-5), meaning that we live out our careers in cycles. Depending on the individual, the length of an individual cycle may vary—some people’s careers consist of many cycles; other people’s careers consist of few cycles; and some very rare individuals might only live through one cycle. Furthermore, the shape of the individual cycles themselves may differ greatly.

A parabolic shape curve indicates the relation between productivity and time. The curve starts from onboarding and reaches the maximum peak contribution point and falls down.

Figure 4-5

The career cycle

When we first join a company, our career enters the “on-boarding” phase: We do not yet know much about the technicals of the project we work on, the processes and internal workings of the company itself. As such, we are in a strong learning phase, and are not yet very productive. As time goes on, we become more familiar with our task environment and become more productive. We are enthusiastic, are constantly learning and discovering new things, and are trying to maximize our productivity and output. During the honeymoon phase, we see nothing “wrong” with our surroundings. We are dazzled by all the nice people around us and the world is our oyster—career opportunities glisten before us, and we put all our heart and energy into the job. We are at “peak contribution,” meaning that we have learned a sufficient amount to be highly productive. As time goes on however, we start to see the cracks in the walls: politics, colleagues that we do not get on well with, a difficult boss, some big-picture decisions that we do not agree with, better pay elsewhere …Our enthusiasm wanes. Slowly we become used to the rut, and execute with less energy and enthusiasm. Stress might consume our remaining energy, and there isn’t much to learn. We have entered the phase of decline. At the end of this phase, we either transition into a new role within the company (a promotion, a new team, or a new department) or we leave the company. Regardless of our decision, the cycle starts again.

The key to retention is therefore this: understand the cycle and realize when employees enter the phase of decline. Chances are you will never be able to prevent the decline phase (the world of work is too complex for this), but you will be able to stretch out the productivity and honeymoon phase a lot (see Figure 4.6 for examples of short and stretched out honeymoon phases).

The relationship between productivity and time is illustrated by two parabolic half-heart graphs. The first graph depicts a rising curve that reaches a maximum and then falls. The second graph represents the inverse.

Figure 4-6

Career cycles can take many shapes and forms. Some people on-board quickly and contribute quickly, while others take some time to on-board and might quickly decline after

A semi-arc curve illustrates the relationship between productivity and time. The curve begins with onboarding, rises to its maximum peak contribution, and then falls.

Figure 4-6

(continued)

The ideal cycle on-boards quickly and stretches out the honeymoon and peak phase for as long as possible, hence maximizing retention. Employees whose careers follow this shape remain productive in their positions for a long time, and only decline eventually.

Practical Tips

Hiring good engineers is easier said than done. And so far, we have done the easy part: We discussed hiring and retention in theoretical terms. Now comes the hard part: putting the theory into practice, and defining a set of concrete guidelines that you can apply immediately.

Tip 1: Review Your Interviewing Process

Many interviewers that we have spoken to over the years believe that they can accurately gauge a candidate simply by speaking to them. From our experience, nothing could be further from the truth. Interviewing is less about “informal chats” and much more about gathering signals. A signal is a concrete indicator that tells you something about the candidate’s suitability for the role. Therefore, the first step that leaders should take is to ask themselves (i) what signals they should be looking for, (ii) whether the current interview process allows for the gathering of these signals.

It is important to remember that signals can be both positive and negative. An example of a negative signal might be disinterest, expressed by asking overly generic questions. In order to be able to gather such a signal, your interview process must actually allow for time to ask questions. While this may seem obvious, it often is not so in practice: Many interviewers only allow for 5 minutes in the end to ask questions, a timeframe that is hardly big enough to gauge a candidate’s true level of interest in the company.

Tip 2: Make Your Process Known Beforehand

It is important that the candidates know what to expect from your process even before applying, how long the process is supposed to be, details on each step and how long does it take to move between the different steps once they are completed. That way candidates can better plan their time and know upfront if they are willing to do what it takes to get into the company, in addition to that it helps keep the process more reasonable otherwise it won’t attract the desired people.

Tip 3: Understand Staffing Requirements

Those closest to the ground tend to know best what resources are needed to turn roadmaps into reality. Leaders should gather feedback from engineers and managers in order to define staffing plans.

Tip 4: Define Attractive Compensation and Benefits That Reflect Market Realities (and Review It Periodically)

Although this is self-evident, we are surprised by how many leaders fail to understand that software engineers are expensive. Especially since the beginning of the COVID pandemic, demand has sky-rocketed and so has compensation. As with everything else, you get what you pay for. Companies that are still stuck in an “outsourcing” mindset will eventually fall behind as they naturally fail to compete in a global marketplace. Therefore, it is crucial to understand the positions that you are hiring for and define a suitably attractive compensation. At the same time, the company needs to keep a constant eye on the market to ensure that the values offered for the engineers that are already on the team remain attractive enough to mitigate their chance of leaving.

Tip 5: Recruiter Screening

Recruiters act as the first line of defense, identifying suitable candidates and screening as many bad fits as possible. Technical interviews are especially time intensive and costly, and therefore your initial screening should be as accurate as possible, bringing as many suitable candidates into the next round while eliminating the unsuitable ones. In order to achieve a high level of efficiency, you should
  1. 1.

    Provide recruiters with an accurate list of keywords to scan for.

     
  2. 2.

    Use years of experience/years in the market as a filter. Hiring recent college graduates for remote positions can be difficult and should be avoided. Instead, University career fairs or other forms of direct contact with Universities tend to be more effective.

     

Tip 6: Scheduling

Avoid scheduling back-to-back interviews and meetings. A golden rule of interviews is to (i) always allow 15 minutes for the candidate to ask questions, and (ii) avoid hard stops so that you do not need to cut the interview short if you can avoid it.

Tip 7: Tooling

Make explicit the tools the candidate is expected to have installed or prepared before the interview so they don’t spend time setting them up during the interview. If accounts on specific platforms are required send the invites a few days earlier and ensure they have access to such platforms before the interview starts.

Tip 8: Hiring Scoreboard

The hiring scoreboard, also called interview rubric or interview matrix, is a tool that defines relevant competences that should be measured for a certain position during the interview. With it the person (or team) conducting the hiring process can attribute numbers within a given range (0 to 5 for example) to certain characteristics that they believe are relevant for the job. Having that numerical measurement allows an easier comparison between two candidates, an aspect that is usually highly subjective.

There are many templates online for this but it is important to note that the attributes, technical or not, that go into the scoreboard need to be defined by the interviewers. This process helps identify what is actually relevant for the job and also is useful while making the interview by guiding the interviewer on what to assess from the candidate.

One very important point when creating a hiring scoreboard, specially when there is more than one person involved in the hiring process, is to describe the scale that will be used to measure a competence and detail what constitutes each level of that scale. Example: When measuring the “technical knowledge on technology X” for a Senior Software Engineer position we can use:
  • * 0 – Never heard of it

  • * 1 – Studied a similar technology

  • * 2 – Has experience with similar technology

  • * 3 – Has superficial experience with it

  • * 4 – Has extensive experience with it

  • * 5 – Expert

The scale and what each number means will vary per competence but it is better to keep it always 0 = undesirable and 5 = perfect so at the end of the process we can sum the values and use it as a metric to compare candidates.

One last useful aspect of the scoreboard is that it can be used for giving feedback to a candidate that was not approved, by having numerical values for relevant characteristics you can provide useful insight on what the candidate can improve for their future.

Tip 9: Technical Screening

Technical interviews should answer the following three questions:
  1. 1.

    Does the candidate have sufficient technical knowledge for the job?

     
  2. 2.

    What is the candidate’s true level of experience? A candidate with 5 years of experience on the CV might in reality only have 1 year of experience, repeated five times.

     
  3. 3.

    Does the candidate have the necessary soft skills to execute their job?

     

While behavioral interviews assess the candidate’s culture fit, good technical interviews are structured in such a way as to allow the interviewer to gather some signals about the candidate’s personality and what it would be like to work with the person.

One hour is usually too short to allow the interviewer to collect a sufficient number of signals to answer these questions with any level of certainty. A good approach is to apply one of the following three options to your technical interview process.

Option 1: Three Phases, Remote

Phase 1: A challenging take-home exercise that the candidate completes in their own time. The exercise is to be submitted using a version control system, and will be reviewed by the interviewing engineer(s).

Phase 2: Candidates that pass phase 1 will be invited to a 1-hour technical interview, broken down as follows:
  • 0 to 10 minutes: Introduction and Overview. Ask the candidate to give you a 1–2 minute overview of their background, and to confirm the role to which they are applying to. This serves as (i) an ice-breaker and low-ball question to ease any nerves, (ii) for the interviewer to confirm that they are interviewing for the correct role. Next, provide the candidate with an overview of what will happen during the upcoming hour.

  • Until minute 30: Ask the candidate to share their screen and walk you through their implementation of the take-home exercise. This will allow the candidate to talk through any additional concepts and solutions that they did not tackle (but are aware of) and allow the interviewer to dive into the solution in detail, gathering signals that indicate that (i) the candidate did indeed complete the exercise themselves, (ii) has the sufficient technical understanding to dive deeper than just the demonstrated code. The key activity for the interviewer here is to ask technical questions.

  • Minute 30 until 45: Ask general technical questions that are not related to the solution itself, but that help you gather further signals. For example, “How would you go about testing this code?,” “How would you ensure a high level of code quality when working with a team of engineers on this exercise?” or “What is your experience with <insert relevant framework/language/etc.>?”

  • Minute 45 until 60: Leave the floor open to the candidate. It is now their turn to ask questions

Phase 3: A 1-hour long systems design question. The benefit of a systems design interview question is that it allows for more accurate gauging of a candidate’s experience, since answers are not restricted to specific technical solutions/implementations. Instead, they involved bigger picture decisions, evaluations of all aspects involved in engineering, as well as requiring candidates to potentially make design decisions which are difficult to revert if they were implemented (and hence require careful consideration). Since system design interview questions are more open-ended, they can end up taking many shapes and forms and hence allow for a more collaborative setting. This in turn allows the interviewer to gather signals on what it would be like to work with the person.

Option 2: Three Phases, Remote

Phase 1: A 75-minute long technical screening consisting of a programming challenge which the candidate needs to solve while sharing their screen, thinking out loud as they do so. The interview is structured similarly to phase 2 in option 1:

0 to 10 minutes: Introduction and Overview. Ask the candidate to give you a 1–2 minute overview of their background, and to confirm the role to which they are applying to. This serves as (i) an ice-breaker and low-ball question to ease any nerves, (ii) for the interviewer to confirm that they are interviewing for the correct role. Next, provide the candidate with an overview of what will happen during the upcoming hour.

Until minute 45: Ask the candidate to share their screen and explain the exercise to them. Encourage candidates to think out loud, and emphasize the focus on arriving at a solution (rather than on implementing minute technical details). Candidates may feel pressured due to “having somebody watch over their shoulder,” so do your best to make them feel at ease, and remove any hard stoppers (i.e., allow for the interview to run over the time limit if need be). The objective behind the programming challenge is to gather signals on (i) the candidate’s ability to reason, abstract, solve and communicate; (ii) technical competence; (iii) behavior in a collaborative setting.

Minute 45 to 60: Ask questions regarding their solutions. Can they identify any problems with their code/solution? Are they able to think of an alternative approach? How would they test their code?

Minute 60 to 75: Leave the floor open to the candidate. It is now their turn to ask questions.

Phase 2: A 1-hour long systems design question. See option 1, phase 3.

Phase 3: Interview with an engineering manager or technical lead, designed to drill into any specific competencies that the position requires, but that could not be covered by phases 1 and 2.

Option 3: Three Phases, Two Remote, One in Person

Phase 1: A 75 minute long technical screening consisting of a programming challenge which the candidate needs to solve while sharing their screen, thinking out loud as they do so. This phase is identical to phase 1 in option 2.

Phase 2: A 1-hour long systems design question. See option 1 or 2, phase 2.

Phase 3: A day-long on-site, consisting of multiple rounds of interviews, including
  • A collaborative programming challenge that simulates a typical work day at the company

  • Interview with an engineering manager or technical lead

  • Interview with stakeholders

The more time and interactions interviewers have with a candidate, the more signals they can gather. Hence, the more accurate their evaluation of the candidate will be. If a company can muster the necessary expenses and resources for on-site or in-person interviews, then it should do so. In-person interviews are a great way to get to know the candidate(s), and in turn allows them to more closely evaluate the company too. It also signals that the company is willing to invest in attracting good talent.

Conclusion

Everybody knows that, if you want your company to grow, you need to hire good professionals. However, many people forget that hiring is not just about growth: it is also about retention and maintaining a solid baseline. A few bad hires can destroy entire teams. To complicate things further, finding good talent is difficult. As such, we outlined a set of attributes that will help you hire the right candidates. In summary, these are humility, experience, a high degree of self-consciousness, technical ability, good analytical and good technical skills as well as the ability to anticipate problems before they happen.

..................Content has been hidden....................

You can't read the all page of ebook, please click here login for view all page.
Reset
3.133.160.156