Assessing Development Candidates: How to Choose the Right Warriors
Many software development team managers struggle with assessing development candidates during the recruitment process. It's important within these interviews to stay focused on the number one goal, finding a peer that will help fight the real enemy, complexity. In the software development industry, it can be challenging to find an individual who can balance ambitious timelines and create maintainable, readable, and efficient code. If you choose a team member with either the wrong attitude or subpar talent, you will most likely only make your load heavier. But, if you choose a team member correctly, you may just have a fighting chance.
The trick is all in how you evaluate your warriors during the interview process.
If you're a movie buff like me, you will remember Akira Kurosawa’s epic film, Seven Samurai. In the film, there's a scene where samurai team leader, Kambei, is choosing warriors to fight a group of bandits that are tormenting a farmer's village. Kambei's selection process is quite simple, invite the candidates to walk though a door into an unknown room. He then assesses their reactions. Are they walking into danger? Will they be able to react successfully to what they find?
Just like Kambei, when I'm assessing development candidates, I like to have an exercise where they perform their craft in front of me. I then evaluate them in 5 main areas: knowledge, code craftsmanship, architecture/design, refactoring/tests, and peopleware.
The first thing I want to assess is how familiar the candidate is with their tools. I pay specific attention to how fast they navigate menus, use shortcuts, and how easy it is for them to create artifacts in each tool. In our live assessments at number8, I specifically analyze the following:
Web Development Language/Framework
2. Code Craftsmanship
The main deliverable for most software engineers is code. So really, we are interviewing collaborative authors to write and revise different parts of the same text. Therefore, we have to adhere to certain principles if we want other poor souls to make sense of our code. For junior talent, coding principals can sometimes be easily dismissed, but professional developers know better. Good code means that other developers can read the text like a story. The code should be modular enough to assign separate parts of a solution to each team member to maintain. In essence, good code has to be:
Clean | D.R.Y | Readable | Expressive
3. Architecture and Design
In this area, I want to see the candidate’s understanding of services and how well they distribute the responsibilities of the proposed solution. I pay specific attention to the following activities:
Solution Layers: There are different approaches for different problems. I want to see what is presented and the reasons behind the decisions.
Data Model: One thing every software has is data. A candidate always has to define entities, real world or abstract. Relationships and interfaces are specified for those elements to speak to one another.
API Design: One clean and modern way to provide communication is to create APIs. What is included in the interface and how they are explained is very informative during an interview.
4. Refactoring and Tests
Whether it's to make things clearer or to solve a bug, most of the time software engineers are reading and changing code that someone else wrote. Because of this, I always pay close attention to testing. I believe, the only way to make sure a candidate is really fixing an issue (instead of making things worse) is to run create tests. Unit and integration tests are simply not optimal in today’s world.
Peopleware is a book and term coined by the American software engineer, Tom Demarco. The book explains the importance of understanding how a software developer fits into an organization's culture and how well they will work alongside the rest of the team. When assessing this area, I pay particular attention to the following:
Communication skills: I notice if the candidate asks questions. If they didn't understand my solution, did they ask for clarification? The other side of communication is listening. I always assess a candidate's ability to follow instructions and how closely they pay attention to the outlined requirements.
Feedback: Some candidates are shy and some developers simply can't take criticism. It's important to have a good understanding on how a candidate will react to feedback, since it can present a burden to the team.
Teamwork:I throw questions or make last minute requirement modifications during the exercise, in order to determine how well the candidate can make compromises and delegate tasks to other teammates. Using or refactoring someone else’s code is a natural follow-up to the introduction of last minutes changes. It also adds pressure at the end of the interview and mimics reality. The reaction I get from candidates when I change the requirements or ask them if they would prefer to use external code always lets me know if they will elevate or bring people down during a project, or if they have a big ego that could constitute a project liability.
After these 5 areas are assessed you should know if you've found your warrior.
In conclusion, software engineering is a complexed and interesting profession and engineers are always moving from one state of ability to another. Your candidates could be well-rounded or specialists, but there are always specific foundational blocks that are common to all. Assessing development candidates with the outlined blocks in this article will provide you with an ability to easily gauge what a new team member will bring to the table. Remember, when you conduct an interview, you are not trying to find a genius or accept every candidate; you are simply looking for warriors that are prepared enough, and have the right attitude to get the job done and fight by your side.
About the Author: Stuart Matamoros is a Team Manager and has been with number8 for 9 years. He was instrumental in creating our candidate assessment process, which includes a short assessment, live assessment coding challenge, and personality assessment.
Looking to add an experienced developer to your team?
number8 recruits and qualifies mid-level and senior developers for U.S. based development teams. If you have specific skill gaps or are struggling to find great talent, number8 can help with that. Connect with us today or continue exploring all of our custom software development and remote staff augmentation services here.
Provide your information to talk with a number8 Relationship Manager about your development needs today and feel what it’s like to be listened to before being sold a solution.
number8’s onshore office is located in Louisville, Kentucky where our Account and Relationship Managers work hard to provide all of our clients with exceptional customer service. We also have consultant offices located in Escazú, Costa Rica and San Pedro Sula, Honduras that give us a strong local presence allowing for top-level recruitment, technical training and low employee turnover.