I’m currently in the grueling task of trying to find a new job in the software engineering space. I’ve had some really good interviews, and I’ve had some absolute train wrecks.
My most successful interviews have been where the recruiter tries to get to know me on a personal level – what are my passions about software, what are my weaknesses – how human I am. This benefits greatly any interviewer as the candidate you’re hiring needs to function normally as part of a team – you could have an amazing candidate on paper but if they’re anti-social and not passionate about the field, are they really going to be a productive member of the team?
My absolute disasters of interviews usually involve pop-quiz questions on programming. I’ve got over a decade of software development and engineering experience. I have two software patents to my name (and intend on more). But I can stumble to explain things like “What is polymorphism?”, despite writing class inheritance structures all the time, or “Explain Dependency Injection, and name the good and bad things about it”. I’m not at College or University. I haven’t been for over 10 years. The text book answers don’t easily come to mind. Next time you see your doctor – why not ask them a pop-quiz medical question like “Could you explain the human respiratory system to me?” and see if they can give you a coherent answer.
When I’ve been involved in the hiring process – I want to know what the candidates do in their spare time. If their exposure to software development ends at 5pm every day and they’re not showing an interest in the field out of work hours, then they’re unlikely to make any significant contribution to the company. Software engineering is a creative job, so you want a creative candidate.
What I look for in a recruit is:
- Do they program as a hobby?
- Does the candidate read any field-relevant technical literature (tech news websites, on-line courses in their spare time etc).
- Do they contribute to social technical sites? (Stack Overflow, GitHub, or Personal blog etc).
- Are there any examples of their work online? (Code in something like GitHub or SourceForge, or published websites or applications).
- Do they know how to securely code? (how to protect against sql injection, or do TDD to catch problems as an example).
A candidate doesn’t need to match all of the above – but I want to see that a candidate shows passion in what they do. As if the candidate enjoys the work they do, then they are more likely going to produce the best code they can and be willing to learn from any mistakes that they might make.
And when it comes to programming tests – whether it be trivia questions of written tests, they do nothing of any value to an interviewer given that there are well documented on-line guides to cheating such tests to defeat the recruitment process.
Don’t be technology focused. If you limit your team to a certain type of developer, you’re suppressing creativity. The problems you want to solve shouldn’t be limited by the constraints of the programming environment. As an example; Python is becoming increasingly popular for fast data processing and has become one of the most popular languages for implementing NLP (Natural Language Processing) and speech and visual recognition technologies due to its rapid processing performance, often outperforming other languages like C# or Java. So if you claim to be a “pure Java house”, you bind yourself to the limits and vulnerabilities of Java and don’t allow for exploring other more suitable systems to solve tasks. As a technical lead you need to be prepared to explore other technologies that might prove better and safer than your primary focus.
Lastly, it’s important to know just how easy it is to learn new programming languages. Java and C# are near identical languages for the syntax. I graduated as a Java developer and my first role was as a C# Developer. The company hiring me knew this and gave me some simplistic tasks for the first two weeks so that I could pick up the differences in language. After two weeks I was programming competently in C# and throughout my ten years in the industry I’ve either mainly been programming in one or the other. And there are plenty of other languages that are similar in design to each other that allow for this sort of easy transition.