Disrespectful Code Challenges for Senior Software Engineers
Imagine these two situations.
- A Hospital wants to hire a well-known surgeon with 10+ years of experience in very complicated surgeries. The hospital contacts the surgeon (through a recruiter), and he gladly accepts to assist in this interview. After discussing his experience and talking about surgery techniques, the hospital’s director takes him to a surgery room where there is a corpse on the table (yes, the doctors practice with cadavers) and ask him to open the chest of the corpse and show him where is the heart, and then close the chest of the corpse to see the surgeon technique.
- Similar to case one, just in this case is an architecture studio, and the candidate is a well-known Architect who designed several buildings across several cities. After the interview, the manager asks him for homework to deliver a prototype of a new building with given features (also tells him that it should not take him more than four hours, but they provide him with a week to finish the test, no pay for it).
In Both cases, the surgeon and architect have jobs that provide for them well; they didn’t apply for the job in a job board or LinkedIn. The hospital and the study were the ones to reach them.
Imagine how these two professionals will feel about these companies. I think that they will stand up and leave the place offended, and with a good reason. We all can agree that this is disrespectful to the experience of these two prominent professionals.
Then if we think that is disrespectful for doctors and architects, why is it not the same for Software Engineers? Even worst, most businesses consider this a standard in the industry.
These two cases are comparable with the most common code challenges that we Software Engineers are asked to do when a recruiter reach us to join a new company:
- Live Code interviews: They ask us to solve a problem writing code sharing the screen or in the code platform. These problems usually are odd cases that you never will see in real life (like balancing braces and brackets, dumb the IDE do that for us). Or some theoretical algorithms implementations like doing a binary search, max deep of a binary tree, or hash table implementations. These things are comparable to the hospital asking the surgeon to show where the heart is and close the corpse on the table.
- Homework Code Challenges: This kind of test require that we use several hours of our time after work to develop a solution planted, like creating an API or implementing a User interface. These tasks are real work that they ask us to do with no pay. And it is like they didn’t see all our references or places where we work before or even check if we made some open source contributions in GitHub. It is like the study asking the architect to develop a building prototype.
Pieces of Advice that nobody asks me for:
You can reject this kind of disrespectful task. You can leave and continue in your current job, explaining why this is wrong (I permit you to steal my surgeon and architect examples). You can kindly lead them to check your GitHub Profile, where there are many code examples that you tried in the past. Or you put them in contact with some people that have worked with you in the past and can give them a good referral of your way of work — no need to spend your valuable time doing this thing of annoying tasks.
Please avoid this kind of thing. If you really want that a candidate did a homework challenge, offer to pay for it. Our time is not free. We have families, pets, and reasons to live, believe it or not. Concerning the live code challenges, there are tons of self-learners developers who never went to the University they learned how to do things doing it. They may not know the concepts of a binary tree or hash table, but be reasonable. Do you really need this kind of thing in your business? How many hash tables do you have implemented in your codebase. Using this kind of test, you may be losing great thinkers and problem solvers, people.
Please, be clear concise, and explain all the hiring process steps to the people you reach. They may not want to spend their time just for you to win a bonus. If you are clear and check the references or places where the candidate worked, you can educate your clients about the hiring process. It supposes that you are the consultants. You are the professionals in the hiring process. Then act like professionals and educate your clients about the best way to lead a hiring process, and not simply bow your heads and throws tons of candidates that you reached copy-pasting messages in LinkedIn.
Preaching with the example
I am tired of this kind of interview. I am not just a fool, an angry engineer writing things to make a point (Ok, I admit, yes, I am an angry engineer but not a fool one). I was leading Tech interviews for several companies I worked for, and I refused several times to do this kind of test in my interviews. I have enough experience to determine if the candidate is, which he says he is in a quick tech call, and that is what I do.
Also, I am creating a Software Agency (NamuCode — Working on the web page, actually) where I encourage all the team to find the best engineers for the client business. I could have a top 1% or top 3% of developers, as many agencies say they have, or even I could have the reincarnation of Dennis Ritchie on my team. Still, if he does not understand my client’s business or how they make money, they will create the best, well-done, and useless piece of software that will lead my client to break.