* Public source code profiles (Github, etc.) * At-home coding assignments * Code katas * Live coding * References
I know at-home assignments, while commonplace, and even live coding are sometimes looked upon badly, but which of these methods above are best? What about other methods that I'm missing? Are there any good online resources/services that help make this part of the hiring process easier and better for all involved?
Having said that, the best bet (assuming you are in this category -- senior-to-expert), I would recommend hiring someone as a 3-6 months trial, and then see how it goes.
If you don't know coding, my take is you'll NEVER be able to know how a candidate can actually code -- don't even attempt hiring in this case.
What is the REAL "level" of programming required to be successful at this job? Please don't keep the trend going of asking whiteboard questions to a person who will be coding CRUD apps all day.
A junior developer is a person who's looking to learn and make an impact in what it means to develop a system. I find it best to interview for potential. Ask them to solve the same problems you'd ask a senior to solve, but with a different bar and more focused on seeing how they think through them.
A senior developer should be a person who's technically competent, experienced, knows how to make technical decisions, and understands the basic idea of value proposition. They get why they're building what they're buidling. Sure you can sit there and ask them a crap ton of coding trivia, but that's not what you actually need from them. A senior should be able to tell you the differences between languages they've used, the challenges they've faced and how they over came them, and clearly highlight key aspects of their technical decision making capabilities.
A lead and manager should be more people oriented.
Asking someone to do coding tests is fun, but it's a really bad signal. Asking someone to work with you on a problem is a lot more interesting and can help you gather much more valuable information. Do your best to setup a test environment that is as close as possible to your real environment. Respect candidates, allow them to highlight their strengths, make them comfortable enough to admit their short comings honestly, and think carefully through what "level" you need.
I love days long coding assignments and hate live coding. I especially hate giving my code samples - most of the code I've written are proprietary, and everything public is some kind of messy experiment. Code samples also feel like some violation, like stripping down while applying for a modelling job; I understand why it's there, but there are probably better options, and it feels creepy and judgemental.
But other people also have strong opinions on this, and they're not wrong. Everyone values different things and the filters are often right for them. Interview is a part of company culture.
I still think that the best thing to interview for is to find someone who is smart and gets things done: https://www.joelonsoftware.com/2006/10/25/the-guerrilla-guid...