Hiring demystified - PyConES 2020

Oct 3, 2020 13:00 · 2781 words · 14 minute read even unhappy care important team

hello everyone and welcome to hiring demystified my name is mar, you can find me online by those handles and as you can see i know my way around pythons but aside from real snakes, i’ve been working as a software engineer for more than a decade now, mostly doing web development for startups in malaga and london. During my career i’ve experienced dozens of interviews as a candidate and then in the later years i switched sites and became an interviewer. Today i’m here to tell you all of learn after tons of trial and error. Let’s accept the fact there is something off with hiring in our field, in no other profession you see so many memes, so many jokes, and even books that help you prepare for enduring coding interviews. There’s a certain mystic about hiring developers a set of rituals that we all know and accept: whiteboarding algorithms, take on projects, quiz questions, crazy job specs, but is there a reason behind all these practices or like religion we all just follow without questioning them.

01:10 - If you ask people about their reasons the answer everyone always gives is: “We want to hire the best” and for that, we need to test. Every company i’ve ever interviewed with always prided on hiring the best developers, but, can you see the contradiction? it’s a physical impossibility that every single company is hiring the best people the best people in fact are unlikely to ever be on the market. Somebody from their network is likely to offer them a gig when they need a job and if a top developer happens to go jump hunting can they find you can you pay their rates, will they bother with a tiresome and lengthy process of interviews. Even if we assumed you could get the best developers unless you’re a globally remote company you’re only going to be getting the best developers from your area alone and assuming they speak your same language relocation packages are less and less convincing in a world where most companies are turning remote so in essence sorry to break it to you but no you’re not hiring the best people in the world at most you can attempt to filter the best from those that reach your pipeline but okay let’s say that you still want to test those that reach your pipeline to identify the best. The question is what are you selecting for with your testing you want the people who are going to be the best at providing value for your team and your company in a job you want people to write good code yes but that’s just a small part of what working as an engineer is about there’s a lot about adapting understanding team working a lot of soft skills that are very difficult to evaluate during a formal test the way your interviews are designed however you’re not even optimizing to identify the best coding ability the people who are vested in interviews are those who are confident good at selling themselves or that did a lot of interview practice or studying the reason interviewing kinda works is because there is an overlap often people who are good at interviews are smart and smart people are often good developers too but you’re also missing on tons of candy days who would be perfect for you but you’re not testing for the right traits while at the same time you’re still going to be getting some false positives people who are good at interviews but not so great once at the job all of this while losing a great deal of time and energy both from your team members and from candidates the question comes then if our hiring is so inefficient why do we even start doing it in the first place okay i believe like many other trends in the industry we’re just copying the practices of our gods the big giants of silicon valley but of course the situation for them is very different than it is for the rest of the companies they have certain characteristics that might make this type of hiring appropriate for them but that doesn’t mean that it’s a good idea for you but then what is what should we do instead should we do no interviewing at all hire people on the spot i don’t think things are black or white it’s always a spectrum and the correct approach might be different depending on your company your team and your hiring needs if we want to hire effectively we need to be realistic about our company and the characteristics of the developer market out there it’s normal for companies to want the more senior developers they truly are worth their salt but guess what they are also more difficult to hire there’s less supply of them and more demand so you’re going to have a hard time snatching them and you can make it even harder if you make them go through a difficult and long hiring process the good news is you can’t always get what you want but if you try sometimes you get what you need most companies what they really need is a small amount of mentors and decision makers and then a bigger amount of horsepower that’s what the mid-level developers shine people with some experience which know how to code and can work with minimal supervision then there’s juniors they are cheap easy to hire and often young and willing to work long hours to compensate for their inexperience but no matter how smart they are they need at least some amount of supervision and guidance so out of the box you don’t get a lot of value from them but in the long run they can be a valuable investment if you manage to keep them with you and set them on a progression path so step one is target the type of developers matching your needs step two is test for each segment appropriately it’s okay for a junior straight out of uni to pair implementing a single algorithm they often come with no experience at all and you want to make sure that they at least know the very basics of coding for seniors on the other hand you want to keep testing to the minimum possible in order not to scare them off if you must i feel it’s okay to discuss about higher level topics regarding architecture or text tags perhaps discussing the one of your company some whiteboarding in this context is acceptable but algorithms quiz questions or take home projects i find are even insulting at this level they make you look like you don’t trust that the candidate is experienced for those in between a mix might be in order pairing on something from your own code base could be a good two-way exercise in which the candidate also gets a feeling of what they are going to find in the company take on projects when they are sensible because many times they are not might also work at the at this level as well as discussing on technologies in an informal way a very important thing to remember is that hiring goals goes both ways you’re not just selecting people people are also selecting you so the higher you go up the seniority ladder the more you need to relax the friction and switch from a buying mindset to a selling mindset it can be okay for a junior to have to prove that they are worth your time but for seniors it’s the other way around you need to prove to them that your company is worth their time so don’t waste their time but at every stage i think it’s important to proceed with respect and trust for the applicant and try to keep the process as relaxed and pleasant as possible now let’s change topics and talk for a bit about diversity hiring normal hiring is difficult having diverse people seems to be downright impossible for most companies when we say diversity what i mean is hiring people from demographic groups that for some reason or another are underrepresented in our industry for example women but also other people and in this industry notice 40 years is already old age non-whites people with disabilities when i say underrepresented i mean that they are present in small quantities in a pool in the pool of available developers why some of these collectives are minorities in our industry when they account for a much larger share of the general population is out of scope for this presentation we will focus here just on how to hire from these already small percentages so why exactly is it hard to hire these people first as we’ve seen there’s not a lot of them we have to be realistic you can’t expect your team to have a higher percentage of diverse people than there exists in the hiring pool then there is similarity bias this is an unconscious tendency to connect better with people who are similar to us is that feeling of yeah this guy gets it he’s totally on my way of length that you get with some people and it’s very difficult to get that feeling with diverse applicants because they are different from you and they are different not only in physical appearance the issue is that they have a different culture and different behavioral traits for example imposter syndrome or in general a lack of confidence is well documented to be more prevalent in women than in men unpopular hiring practices vastly favor confident people diverse candidates will also put a lot of value in having a work-life balance many have dependence need to care for their health or simply value having time for them outside of coding so a culture of work hard play hard doesn’t work for them this is often confused with lack of passion the culture mismatch hearts in both directions a healthy company culture is the most important factor that diverse applicants seek on a job so if they feel there’s a cultural mismatch they will turn down your offers or even not apply for their jobs so if hiring diverse people is difficult why should we bother at all with it let’s be honest working with similar people has real advantages too if people think like you you barely need to communicate with them they can be more autonomous and working with them feels easier but there’s a drawback there’s only one opinion and one way to do things if this way has a weakness you won’t be able to realize it’s like your team is a stack of identical swissy slices all with the holes perfectly lined up on the other hand working with diverse people requires more communication and understanding they think different from you they have different opinions and approaches and it takes effort for both sides to adapt to the weights of the other but once you manage to do that you will come out stronger in a diverse team people complement each other the cheese slices have the holes in different places so you will end up having no gaps in your cheesy structure okay let’s say i’ve convinced you and you want to hire diverse developers but how the good news for you is that there is a magic formula but it takes some effort to achieve first you will need to attract to attract them and for that you need a company culture that is friendly to diverse people bro culture work hard play hard is fun but very off-putting for diverse candidates in order to cast a wider net you will need to tone it down a bit and make your culture a bit more boring more neutral more professional it doesn’t mean not having a culture just putting the value in work ethics or competency rather than things like hustling or people being fun to have drinks with it’s very important for your culture to encourage a work-life balance while discouraging toxic behaviors such as discrimination harassment patronizing etc second once you you’re attracting them you need to learn to recognize their value due to similarity bias their differences are often mistaken for for incompetence but remember these candidates often lack confidence and free time so it’s normal for them to not have any experience outside their jobs or not know a lot of technologies it’s normal to diagnose this as they lack passion or they don’t look very experienced when this is not the case big bonus if you adapt your culture and hiring process to be more inclusive it will become easier to hire non-diverse people too regular white guys despite demographically being the same collective can be culturally diverse too people who you would have previously dismissed as not being a culture match perhaps now will pass your filters okay final word of advice don’t talk in her what i mean is don’t hide diverse people at any cost just because you want to have the diverse team badge the badge itself is worth nothing if you can’t reap the benefits similarity bias is difficult to overcome it takes a lot of effort and practice to start seeing value in different traits than you’re used to but if you truly don’t see it don’t force it either just don’t hire the person if you hire someone but then don’t value them they will notice it will hurt their self-esteem they will be unhappy and they will leave your company repeat this a couple times and their confidence will hurt so much that they may decide to leave the industry altogether and before we finish let’s quickly go over some extra tips and tricks when deciding your interview process try to keep testing to the minimum viable possible this might mean that you just need to do a face-to-face interview and that’s it when in doubt less testing is better than more testing keep your process short the whole process with all the steps combined should be no more than two or three hours time is valuable both for your candidate and for team members beware of a symmetry the interview inside has all the contexts and but the candidate doesn’t prefer open-ended discussions rather than questions with right and wrong answers many people try to tailor tests and questions to search for traits and even have a checklist i think this is self-deceiving all you can get from an interview is a general feeling once you have a process in place test it on your team first you might be surprised as many of your best engineers can’t pass the process from time to time there comes an applicant with a portfolio open source contributions a blog a podcast pet projects when someone comes with this much to show don’t send them homework you do the homework and go check their stuff a short contract is a great alternative to testing no amount of testing is going to be as accurate and as fair as a real job but for it to work you need the candidate to not be working elsewhere and have a faster efficient onboarding process so that the candidate can have a chance to demonstrate product productivity quickly about rejections you have a debt with the candidate for then investing your time and energy at least have a basic etiquette and tell them that they are out don’t ghost them it’s great if you can also give them honest feedback this way they can take some learning for the next interview people are often terrified of getting a false positive about hire zombie that’s what probation periods are for you will lose more time more energy and more money seeking for the perfect higher than keeping about higher for a short period of time and remember the best candidates are probably already working with you they are your own employees they have all the contacts they build your systems they already know your process make sure you keep them with you and raise their salaries to match those of any new hires also you can evolve them into higher level roles so that you don’t need to hire senior developers in the future um that’s all thank you for attending my talk i hope it was fun and educational and we now have a few minutes for questions but please be invited to also follow up online bye .