For context: This post is about recruiting and job-seeking in the area of software development, testing, infrastructure engineering, and related disciplines. It isn’t general.
There’s a lot of discussion just now online and offline about endemic problems in the software industry around discrimination, pay discrepancies, hiring practices, humane workplaces, and questionable interviewing methods. Most of that discussion is highly emotionally charged, to such a degree that it’s “unsafe” to disagree with just about any comment online, or even to agree with a comment using words the “owners” (is “dominators” a word?) of the discussion haven’t approved.
That situation does not seem healthy or constructive to me. So, I thought I would take a few minutes to try and cut through some of the emotion to understand what’s wrong with recruiting and hiring in our field, and whether there are some concrete steps people can take, on both sides of the interviewing table, to improve things.
My qualifications? Well, nothing much. In 42 years of industry experience, I’ve done a lot of interviewing from both sides of the table. It’s possible I’ve seen and/or experienced most of the problems people are discussing on social media. It’s possible I’ve missed a few, too. But we have to start somewhere. So, here goes.
The ironic thing is that in my attempt to be realistic, I’ll probably offend literally everyone. Maybe it has to be that way. Maybe the reason we (as an industry) aren’t communicating well about these matters is that we’re each stuck in our own perspective. Getting shaken out of one’s perspective can be uncomfortable.
HR specialists and recruiters have a poor understanding of the work technical professionals do.
Result: Job announcements and job descriptions are scatterbrained, self-contradictory, internally inconsistent, overblown, or just plain wrong. Initial phone screens, questionnaires, and exercises have little or no connection with the work to be done. Recruiters can be swayed by candidates who are personable and friendly, even if they lack the requisite skills.
The majority of HR specialists and recruiters are not very skilled at their own jobs, let alone able to understand other jobs for which they are recruiting.
Result: Wacky interview questions with wrong answers listed on the recruiters’ cheat sheets, overdependence on standardized tests for cognitive styles and personality types, rather than on individual judgment based on real experience, and a tendency to favor candidates who seem similar to the recruiters themselves, rather than (necessarily) good choices to help the organization move forward.
Job candidates have not thought about how they wish to direct their own career growth. Many do not even understand that their career growth is their own responsibility, and not their employers’.
Result: Candidates apply for “any” job for which they think they might meet the requirements (and, yeah, see point #1), and will accept “any” job they can get, even if it doesn’t help them advance their careers.
Hiring managers and their staffs are overworked and have insufficient time to meet and screen candidates.
Result: When a candidate shows up for a technical interview, often no one remembers they were scheduled to arrive, no one is ready to see them, and no one really has any idea how to conduct a technical interview. Someone who may or may not be as qualified as the candidate will try to screen them using “technical” questions (usually, details about a software package or programming language that one would normally look up when needed, and not problem-solving or situational questions), and “whiteboard coding,” which is not coding at all. Like the recruiters, they also tend to favor people similar to themselves.
Job candidates are unaware of the health of the economy and the supply-and-demand situation with respect to skilled professionals.
Result: Candidates approach interviews as if they must prove themselves to the hiring organization, rather than the reverse. They behave in a subservient or “victim” manner. They often have no questions about the organization, and are willing to go along with whatever treatment is doled out to them. In some cases, candidates experience genuine fear at the prospect of going to a job interview.
Suggestions for those hiring
- Don’t route technical recruiting through HR or an external recruiter. You think you don’t have time to meet and screen candidates yourself? Think about the time wasted when you never get to meet good candidates who couldn’t penetrate the HR barricade, and when you have to screen inappropriate ones that were moved forward because HR thought they were “shiny.” Better find the time. It is part of your job, you know.
- Look at the work to be done and identify no more than three key skillsets that are relevant to the work. When you write the job announcement, omit all the “nice to have” skills, and resist the temptation to include every acronym or buzzword you’ve ever heard or seen. Candidates can’t guess what you really need when you do that. No job actually requires deep expertise in 50 different technologies. Be realistic.
But wait, you say, we need more than 3 skillsets! We need Ruby, Rspec, RubyMine, Rails, ActiveRecord, SQL, Selenium, Cucumber, Bash, Jenkins, Chef, Puppet, and Splunk! Okay, don’t panic. That’s a list of tools, but it’s all one “skillset:” development. Think about it that way, and you can get it down to three. I might describe the same need (and then some) as “Application development and support using Rails and related tools. XP practices. Collaborative environment.” It’s better for the person reading the job announcement, as they can parse it in less than 45 minutes.
- Don’t bother with those standardized tests of personality types and cognitive styles. They aren’t science-based, and no practicing clinical psychologist uses any of them for any purpose whatsoever (except maybe to use them as bad examples). Trust your gut feel when you meet candidates, or speak with them by phone or video conference. Is your gut feel perfect? No, but it’s better than any standardized test.
- Dispense with the initial take-home coding exercise. The job market strongly favors “the talent.” Any candidate you meet will be talking to around six companies, and will have been asked to do three or more coding exercises plus eight or more standardized tests. If you ask them to do more of the same, they may become annoyed and walk away. Don’t piss off “the talent.” Yes, you’ll get some false positives, but there are no short-cuts here.
- If you’re white and male, read up on topics like underrepresented minorities and educate yourself about how to be empathetic to the worries and assumptions they will bring to the table. Adjust your interaction style accordingly. Otherwise, you will miss good candidates.
You’re going to get the impression from some pundits that the world is on fire all because of you, and you won’t live long enough to make up for all the evil you’ve done. There’s nothing you can do about that. People have to come to terms with their life experience however they can, and sometimes that includes blaming and judging. The key thing is not to disengage just because that’s uncomfortable for you. You’d be angry, too, if at every turn people tried to prevent you from moving forward. Try to be open-minded, accepting of other people’s experience and perspective, and do your best to be fair. No one can do more than that, really. But if you don’t even try, then of course you won’t make any progress.
One key point is that people from different backgrounds react differently to the same stimuli. What comes across as “assertive” among your while male comrades may feel more “aggressive” to others. When you begin a spirited philosophical debate about some minor technical concept, it may be interpreted as if you’re attacking the candidate or trying to make them feel inferior to you. The candidate may have interesting opinions to share, but not consider it worthwhile to present their opinions as “arguments.” It’s necessary to learn about these things and practice interviewing techniques that take them into consideration.
- A lot of people are very good talkers, and many of them are also very good at crafting résumés. If the candidate appears to have an appropriate range of experience generally, based on a cursory reading of their résumé, then go ahead and invite them in. Emphasize hands-on exploration of their skills and their approach to solving problems, as well as their collaboration style. Don’t waste time with “technical questions.” Don’t waste time with “whiteboard coding,” either, unless that’s what they will be doing on the job (and something tells me it isn’t).
- Rather than probing the candidate’s past projects, start by explaining a day in the life of the person in the position they would fill. They need to assess whether it sounds like a fit for their current career growth plan. They don’t need to act as if they’re grateful for a paycheck. That isn’t the economic reality in the world. Candidates need to understand that (for confidence), and so do you (for humility – your workplace isn’t a factory from an Upton Sinclair novel).
It’s almost always okay if a person has most of the necessary skills and can fill in the gaps during their first few months of employment. Think of it this way: If someone already was a complete master of everything your position will require of them, why would the job be interesting for them? There’s more to this than running down a checklist of skills and choosing the candidate with the most checkmarks. You need people who have the fundamental skills they need and the ability to grow in the job. That person will be motivated and interested.
- Two factors that are widely accepted as factual can act in conflict with one another. First, it’s generally established that a diverse team achieves better results than a monocultural team, because team members can apply multiple perspectives and approaches to each problem. Second, it’s generally recognized that humans naturally relate to others who are similar to themselves. When in a hiring role, it’s important to be aware of this and consciously guide yourself to look for qualities in candidates that are different from current staff, and from yourself.
Suggestions for those seeking work
- Think about where you are in your career and where you want to go. Decide how important your “day job” is in the grander scheme of your life. Develop a mental image of the sort of job that would meet those personal requirements, and set you up to take the next step in your career as well as you can imagine it at the moment. Don’t worry: You can always change your mind later.
Part of understanding where you are currently in your career development involves being realistic about your present level of experience. Many on social media complain that they’ve been passed over for jobs they were qualified for, and they speculate it was because of discrimination. They’ve experienced it repeatedly. That certainly happens, and it shouldn’t.
On the other hand, it isn’t quite true to say that “anyone” can fill in the experience and skill gaps for “any” job if you just give them a chance. That will work for many jobs, but for many others you really do have to have bona fide high-level skills even to do marginally-acceptable work.
Every skill gap can’t be filled in quickly on the job, but some can. Consider the example I gave earlier in this post, of a job announcement for a team that supports a Rails application. Genuine skills in software testing take years to cultivate, but it only takes a few hours to become basically proficient with Selenium and Cucumber. If you have testing skills but haven’t worked with Cucumber before, you can legitimately talk your way into a job where you’ll have to learn Cucumber. But you can’t legitimately talk yourself into a senior software testing job unless you have bona fide software testing skills, irrespective of tools. It’s too much to make up for quickly on the job. You aren’t doing yourself a favor if you complain about not getting that job, because being “smart and willing to learn” isn’t sufficient. If you want to go into software testing and lack the skills, then aim for a junior-level position instead.
Social media participants also make the point that all roles deserve respect. That’s true, but it isn’t true that the skills involved in every role are of equal difficulty to learn, or can be mastered in the same amount of time. Be realistic about where you are today and the steps you need to take to reach your career goals.
- Look up the current unemployment numbers and get a handle on the supply-and-demand balance in the job market for your line of work. At almost all times since computers were invented, the job market has been slanted in favor of “the talent.” If that’s the case, then behave accordingly. Be confident. You have nothing to fear about job interviews; you’re “the talent.” Don’t walk in the door already a victim. They’ll just eat you for lunch. (I don’t mean to say you should be disrespectful or arrogant; just confident in yourself.)
- In the interview, take the lead (in a profesional way) in how the discussion progresses and in the sequence of things that are discussed. Don’t just wait for them to ask questions and then try to answer them. Guide the discussion to provide yourself with the information you need.
Think about your priorities and plan to cover the important points during the interview. Learn about the company and the particular area where you would be working as best you can beforehand.
I can’t tell you what your priorities should be. For many of us, the priorities when looking for a new job are similar to the following. This is only an example. You decide what your priorities are.
- Humane workplace
- Diverse team
- Culture of trust and transparency
- Collaborative working style
- Interesting technical challenges with ample opportunity to learn new things
- Meaningful work – positive impact on people
Meet the team
Managers or others who don’t directly contribute to the product will have an abstract view of what working life is like for those on the ground, despite their best intentions. You want meet at least two of the members of the team you would be joining in the interview, if that is at all possible.
If you do some sort of “technical” work such as programming or testing, then you want to work in pairs or in a group with actual team members on one or more “real” tasks of theirs. This is not something to fear, it is something that helps you find out if the environment is right for you.
You might have to sign a non-disclosure agreement before you can do this. If you’re applying at a government agency that has security clearance requirements, then the best you might be able to do is to pair on a contrived problem. You can still see how the team members generally interact and collaborate.
It always puzzles me when people express hesitation about this. Frankly, when I’m on the hiring side of the table, it’s a significant red flag when candidates are afraid to demonstrate their skills and collaboration style. Don’t shoot yourself in the foot by being afraid to do the right thing here. I know you can find plenty of people who will coddle you about this, and it’s certainly more comfortable than listening to me. But I’m telling you the truth.
You might protest, But in the past, they haven’t treated me respectfully while pairing, and I don’t like it. Remember it’s an interview situation. Both sides are exploring the other. They might be role-playing a bad pairing partner. They might genuinely be assholes. Either way, it’s the moment for you to speak up. Tell them to knock it off and collaborate respectfully, or you’re done. If it’s the right kind of environment, they’ll appreciate it. If it’s the wrong kind of environment, you probably need to get out of there sooner rather than later. Either way, it’s the right thing to do.
There’s no other way for you to know whether you might enjoy working with this group of people. No amount of talking will give you this information.
See the work environment
Whether or not you are able to work with actual team members during the interview process, it’s a good idea to see their real work environment. There’s a lot you can glean just by looking around, even if no one is there at the moment.
Let’s say you’re interested in working in an agile environment. I prefer that myself, so I’ll use it as an example here. If you can walk through the area where the team works, even when they’re absent, you can tell a lot about what it would be like to work in that space 8 hours a day.
Do they sit in separate cubicles? It isn’t an agile environment. Do they sit in a gigantic open-plan office space? It isn’t an agile environment. Look at the information radiators on the walls. Does the work flow through a waterfall-like series of stages? If so, it indicates there are functional silos within the team. Is there a formal “code review” step in the process as depicted on information radiators? It isn’t a team of peers, and/or they aren’t using collaboration techniques such as pairing and mobbing. Are there a lot of items in progress, with congestion at one or more bottlnecks? They aren’t managing flow. Are there a lot of blockers shown? They have a lot of cross-team dependencies. Are there a lot of open defects on the board? They aren’t using robust quality techniques such as TDD, or they aren’t collaborating closely with business stakeholders.
Talking to a manager in a separate room can’t give you this information. The manager may believe whatever they’re doing is “agile.” If you just ask, the answer will be “yes.” You can’t afford to accept that, because there are so many people out there who misunderstand what it means, and so many different nightmares operating under that banner.
Read the diversity policy
Pretty much every company today has a formal diversity policy. They are proud of these, and they may give you one as a handout when you arrive for your interview. If they don’t, then ask for one.
Diversity policy statements come in two flavors:
- Guidelines for inclusivity
- Protection against lawsuits
You need not examine the document in detail, like an attorney. It’s sufficient to scan the document and make a judgment about which flavor it is. If it reads like guidelines for inclusivity, it indicates that diversity may be important in the organization (it isn’t definitive, but it’s an indicator). If it reads like protection against lawsuits, it indicates management is afraid employees or job-seekers are likely to sue them for discrimination. Draw your own conclusions based on other things you see and hear during your visit.
If you are an underrepresented minority, the value of examining the company’s diversity policy is probably obvious. I will suggest it’s an important thing to do even if you’re male and white. In the process of cultivating a culture of inclusion, an organization will become more humane in many other respects, as well. The changes necessary to support inclusion are far-reaching, and affect things like safety, transparency, honesty, and trust. Those things are good for everyone.
If the organization asked you take more than one or two standardized tests, it suggests they depend on the tests to tell them who you are, rather than using normal human methods of getting to know you. This is a red flag that may mean the workplace is inhumane.
If they ask you to take several tests, that in itself is a red flag. Be attentive to clues that the people are wearing “masks” or maintaining false, plastic smiles.
Ask what they dislike about working there, or how they dealt with the last interpersonal conflict they had at work. If they say there’s nothing they dislike or they’ve never had a conflict, it’s a red flag. It often indicates the culture is not based on trust and transparency, and that it is risky to raise issues or voice opinions.
Ask if they can show you the salaries of people doing work similar to the position you’re interviewing for. Most companies will not share this information, but those that do so tend to be far more open and transparent than the norm. If this is important to you, then it’s a strong positive indicator.
If the organization asked you to take standardized tests for things like personality type and cognitive style, then ask the interviewer(s) how they use the test results.
What you’re looking for here is evidence that they use the tests to find people who bring unique and different perspectives to the workplace. It is highly likely they will say “the right things,” and you will have to be attentive to body language and other clues to interpret their answers.
There’s a very common trigger phrase to listen for: “Culture fit.” If they say they are looking for “culture fit,” they are creating and maintaining a monoculture. This is the opposite of diversity. They may insist that isn’t what they mean by “culture fit,” but it is almost a certainty that a monoculture is rewarded, either overtly or tacitly.
It is possible they sincerely want people who “fit” into a diverse “culture.” That’s a pretty strange way of saying it, however, and most of the time when people talk about “culture fit” in the context of recruiting, it isn’t what they mean.
Forward or backward focus
The interviewer(s) may appear to be more interested in the past than in the future. They may ask about previous salary levels, previous technical projects, and other matters to such an extent that you begin to wonder if they intend to send you back in time to repeat earlier segments of your life.
A more-desirable employer will be interested in how you work today; your thought process, lessons learned from past mistakes, ability to adapt to new situations, ability to learn new things.
This point reinforces the importance of demonstrating your skills with some sort of hands-on activity during the interview process. If everything they know about you is documented in your résumé, they may come to believe there’s nothing more to you than the things you did before. You want them to be more interested in the things you can do now, and going forward.
You may have to guide the discussion back to the future (so to speak). You and they need to understand how you can contribute to the business going forward. The past does give an indication of what you may have experienced and what you may know about, but it’s unlikely you will repeat the same mistakes and the same learning curves that you’ve already been through.
Everything has a market value, including technical services like analysis, testing, application development, infrastructure engineering, project management, and technical coaching. The value is based on supply and demand.
If the interviewers want to know how much you are asking for compensation, it’s a red flag. They already know the salary range at their organization for the position in question. You should be the one asking how much they value the services you have to offer.
In any case, money is a topic that should wait until late in the interview process. It’s more useful to discover whether both parties feel there is a fit before introducing this topic. However, it should not be left to chance, either.
You can research typical compensation levels for similar work to educate yourself about what is or is not a reasonable offer.
If you are a woman, your research should include asking other organizations and male colleagues about general compensation levels for similar work. Secrecy about salaries is the main way companies have been able to maintain pay discrepancy based on sex. Remember the market favors “the talent,” based on supply and demand. That’s you. Your services are worth what the market says they’re worth, and the market doesn’t know or care about gender.
Consider the complete compensation package, and not just the base salary. There may be other elements in the compensation package. It’s fair to ask about any or all of them, and to treat them as negotiable. These may include such things as:
- Hiring bonus
- Annual bonus
- Profit sharing
- Healthcare coverage
- Retirement fund contributions
- Parental leave
- Paid vacation time
- On-premise daycare
- Education subsidy
- Subsidized meals
- Exercise facility or health club membership
- Housing allowance
- Transportation pass
- Parking space
- Telecommuting options
- Training allowance
- Conference attendance
It may be useful to mention another point about compensation, as many people seem to have unrealistic expectations. A lot of people enter this field because they’ve heard they can make a lot of money. It’s true that software-related occupations tend to pay a bit more than other white-collar jobs, like accountant or office manager, but programmers and other technical workers don’t earn massive quantities of money. It’s a solid middle-class income, and that’s not a bad deal generally, but you’ll never get rich working for a salary.
Maybe you’ll write the next killer app. Who am I to say you won’t? But the chances are slim. People like Bill Gates and Steve Jobs didn’t get rich because they wrote code; it was for other reasons.
You can earn more working as an independent contractor than as an employee; somewhere between 50% and 100% more than similar work in a salaried position. But you have a lot more administrative overhead to deal with in that case. It’s a choice. On balance, it turns out to be roughly the same, financially.
I mention this because I’ve interviewed quite a few people for technical jobs who believed they were worth two or three times their real market value, and who weren’t nearly as “senior” as they thought they were. I’m not sure where people are getting the idea this is possible, but apparently it’s a common misconception.
Most of us are motivated mainly by non-financial attractors, like the opportunity to work on interesting problems, to be in a perpetual state of learning, to work alongside smart and creative colleagues, and to make some small contribution to the world. The pay is generally sufficient not to be a concern; but if you really want to pile up cash then you’re in the wrong line of work. Consider real estate speculation, day trading, entrepreneurship, or venture capitalism.
Another point to keep in mind is that salaries vary by local market. If you balance the typical salaries in a given market against the cost of living, you’ll find the lifestyle possibilities are approximately the same everywhere for people in our line of work. The numbers might be higher or lower, but the general socioeconomic stratum and material quality of life are similar everywhere. This reinforces an earlier point, that employers should not make offers based on your previous salary. They shouldn’t in any case, but when you’re changing markets, it’s really meaningless.
It seems there’s quite a lot to improve in our industry’s recruting, interviewing, and hiring processes:
- All parties must understand which “skills” are skills and which are merely tools, so that opportunities can be described concisely, accurately, and without internal contradictions.
- All parties must understand which skills require significant learning time (years) vs. those that can be caught up on the job without loss of quality (hours to months), so that candidates will not be rejected for trivial reasons or hired without critical skills.
- Teams and hiring managers must take control of the recruiting process, as they are the only ones who have the knowledge and experience to screen candidates, including the first round of screening.
- All parties must put standardized tests for cognitive style and personality type into perspective, and not depend on such things to provide more than the most superficial information about job candidates.
- Teams and hiring managers must cultivate empathy and listening skills to try and understand the needs and fears of a wide range of different people.
- Managers and others in organizations must recognize the hard business value of diversity and seek genuine diversity in hiring, rather than paying lip-service to politically-correct buzzwords as a hedge against lawsuits.
- Technical interviews must include hands-on skills demonstration that is relevant to the job in question while recognizing that some candidates will be uncomfortable with this due to previous negative experiences.
- Candidates for technical roles must understand the market value of their services so that they can feel confident in interview situations, and so that they can negotiate realistically for fair compensation.
- Candidates must think about and keep in mind their own needs, their own current level of expertise, and their own desired career direction so they can choose the appropriate opportunities to apply for.
- Candidates must remember an interview is as much for their benefit as for the hiring organization’s, if not more so; it isn’t a school-like “test” to pass or fail, and candidates are not helpless victims of the process.
- Technical staff who are involved with interviews must understand that interviewing is a distinct skill in itself that requires learning and practice, and their function in an interview is not to make candidates feel stupid.