We are in the process of hiring several Dart developers for the Serverpod team. Itās almost impossible to gauge an applicantās coding skills by looking at someoneās resume. In addition, we need very skilled developers as thousands of other developers will rely on their code. As a startup, we have limited resources to spend on coaching more junior developers.
If you were applying for a job, how would you like to have your coding skills assessed?
If it was me, I would like a coding challenge I can take away. Nothing too long - hours rather than days, but a challenge that reflects the type of work I may be doing and the opportunity to discuss my solution and reasoning with the interviewer.
Similarly, and/or an opportunity to take the interviewer through a side project. Taking the interviewer through a fully built and deployed project can cover a lot of skills.
Honestly, I never did any coding challenges when I hired someone in the past.
If the candidate has a github repository where I can get an impression of the way he works thatās always good if they have done OSS work the better.
Additionally I want to be told about their previous projects and how they solved problems there.
As you are looking for experienced devs, I would look more on the former experience and how long they stayed on the previous projects and make sure his personality fits in the team and just agree on test period.
I believe no skills assessment in a one-hour interview will ever identify the right person. For me, the most valuable team members are those you genuinely enjoy working withāthe ones youād spend an entire night solving a bug or preparing for a release, the ones who raise their hand in a meeting and say, āI have an idea!ā, āHow about this?ā, āHow can I help?ā etcā¦ Nothing beats having motivated, pleasant individuals who work with you toward a common goal, rather than working for you just for a paycheck. Itās no coincidence that the biggest companies, albums, games, or products were built by groups of friends in a āgarage.ā After all, who wants to hire a top-tier engineer who works in his corner, shares nothing, and quits after just a few months for a salary increase?
Iād select a few candidates, order some pizzas, grab a few drinks, and have them join my team for a peer session or a hackathon weekend. This helps build trust while allowing you to assess their comportment, adherence to best practices, creativity, and endurance. Grade their average and hire if you feel like it.
The tricky thing with smaller, stand alone, coding tasks these days is that they are quite easy to do with AI. But, totally agree that the task shouldnāt take more than a couple of hours to complete. Definitely less than a day.
Many developers (even really good ones) havenāt worked with open source projects. So while this can be a great approach for some that have, for most there must be another way to assess their skill level. Time in previous jobs is definitely a factor, and also the kind of places they have worked at.
However, Iāve done assessments with developers who, for instance, been lead dev at a bank and been there for several years. Yet, they miss the most basic of things when completing a work sample. So, just āexperience on paperā is unfortunately not enough.
While this approach may work if you have a lot of time and are very small group. Itās not really feasible on a larger scale or when hiring for (potentially) remote positions.
What you are saying about motivations is 100% true though. This is one of the most important aspects we look at when hiring, being passionate about the project and feeling that they want to build something great together. For a project like Serverpod, itās very hard to be productive unless you are a very experienced developer. There are strict code reviews, you need high test coverage, the code needs to conform to standards, etc. So, while having the right mindset is super important, you cannot do without the skills and we need a way to assess them too.
To be honest for the positions that you currently need to fill I would foremost try to check if some of the well known community members are interested of if they can recommend someone
Make a short list of the best candidates based on their resume, background, prior OSS projects.
Then hire each as a contractor to work on specific piece of work that you actually need done for a few days to a fortnight.
Then you can assess not only how well they completed the specific coding work, but how well they get on with the rest of your team, their work style, communication skills, etc.
Its a win-win situation, worst case you part ways and you have paid someone to perform some work that you needed done while they are not spending their valuable time completing pointless coding tests or wasting time in interviews answering stupid algo/strctures brain twisters.
After youāve narrowed it down to a reasonable short list, pair programming for an hour or two. You get to see my skills in action, doing what youāll be paying me to do. And we both get a feel of what itāll be like to work with each other, and if itāll be a good fit.
Iāve hired many people by trying different approaches over the years, but this is what helped me find the best people Iāve ever worked with:
If the candidate has open source projects, ask them to walk you through their repos. Let them explain what they did, why they did it, and what they were trying to achieve. Go through their code together and even check how they documented the project in the README. Also, see how they responded to the issues posted by their users. This gives you a clear picture of how well they communicate both in code and in words, which are BOTH important, especially for remote work. I usually plan about 45 mins for this step.
Next, for senior developers, I ask THEM to convince me why I should hire them. I think a senior developer should not only have the skills but also know how to demonstrate them. I came up with this process once when I was the candidate myself. I thought the interview process was too bland, and was not letting me differentiate myself. So I said, āLetās meet and you let me try and convince you that you should hire meā. I walked them through how I organize my code, how I make it testable, and how my approach helps achieve the companyās goals. When Iām hiring, I expect the same. They must be able to convince me they are a good hire. More than that, they must be able to make me feel VERY COMFORTABLE that I should hire them. I usually plan about 45 mins for this step, but can extend 15 more mins if the conversation is too good.
If they pass the first two steps, I move straight to step 4. Unfortunately, it is true as you said that many developers, even really good ones, donāt have open source projects. If step 1 isnāt an option, I instead ask them to build a small program with tests in a live session while I watch. I give this about two hours. They donāt have to finish it, but by the end of the session, I usually know more than enough to decide. Unfortunately, with AI tools Iām not sure how reliable this step still is. But note this is not to take home. I am watching all the time.
Once theyāve passed the interviews, I offer a short-term contract for 2 or 3 weeks (usually 2). Negotiate everything upfront: salary, equity, and terms, but make it clear this is a trial. At the end of the period, if theyāve done well, the full contract goes into effect. If not, pay them for their time, thank them, and move on. Of course, this only works if theyāre not having to leave another job to join you.
Using contents of this forum for the purposes of training proprietary AI models is forbidden. Only if your AI model is free & open source, go ahead and scrape. Flutter and the related logo are trademarks of Google LLC. We are not endorsed by or affiliated with Google LLC.