12

I am working in a small start up where thus far the development has been outsourced but we are actively looking to build an in-house dev-team to take over (some parts of) the development process.

The issue is twofold: On the one side, the process of hiring new team members is fairly new to me. On the other side, I am not a developer (I'm a mathematician) and I am not that familiar with the stacks used (Java & JavaScript - I'm proficient with R and Python, and have only basic knowledge in Java).

Do you have advice on how to (nicely) test candidates?

My ideas so far were

  • give a small (not a dull) task, something where candidates have enough freedom to provide out of the box solutions or apply logic in some way. The problem is find the right task (especially since I am not proficient with Java/JS).

  • share a small portion of code that candidates have to comment, review or share their impressions (what could be done better etc). The idea here is that I could provide some Python or R code even if I'm looking for Java devs (this could put them a little bit out of their comfort zone and maybe force them to apply their logic skills - also I'd be able to understand the underlying task and the reviews).

  • 6
    Who will be leading that team? Seems to me that (1) the leader of such team should be the one interviewing these candidates and (2) that such leader should be proficient with all the technologies you plan to use on the dev team. – DarkCygnus Sep 16 '19 at 20:43
  • 2
    @DarkCygnus The problem is that we are still looking for - but do not have a CTO (who then would be in charge of the dev-team). As opposed to finding a CTO, finding developers (full-time or interns) seems much simpler. We are contemplating hiring a developer even if we do not have any CTO and ideally have them gain more responsibility at the company and potentially grow into the CTO position. At any rate, my question above also applies to interviewing potential CTOs I guess. – user101 Sep 16 '19 at 20:52
  • Say you give them a small Java task. How are you going to evaluate their proficiency with the language when you don't know much about it? – undefined Sep 17 '19 at 7:47
  • 1
    Have you considered using an external recruiter who specializes in the skills you're looking for? – dwizum Sep 17 '19 at 13:03
  • One possibility is to intentionally give them broken code. Instead of writing a solution from scratch, they have to take an existing solution and fix it or add some functionality to it. This is more analogous to the work that a typical dev would actually be doing, though perhaps not in a fresh startup. – DetectivePikachu Sep 17 '19 at 18:51
29

I would suggest you forget the coding tests and focus on concepts, processes and ideas.

You are looking for a very strong profile. Being a full stack dev requires knowledge about back-end, front-end and databases. Somebody with couple of years of experience cannot possibly be strong in all of these areas.

Also you mention you don't have a team or a CTO yet. This most likely means you don't have strong processes in place. So you need somebody who has experience and understanding of the whole software development process.

It would benefit you in the long run to get somebody who is capable of creating a good foundation for the team, code base and work flows independently. In my opinion this would be more important than to find somebody who knows some random algorithms by heart.

So, discuss higher level concepts. Version control, security, reasoning when selecting technologies, pros and cons of frameworks, leadership experience, code/DB optimization etc. Try to find yourself a strong, reasonably experienced team lead who shows qualities of being versatile, well-rounded developer and a hint of leadership and management skills.

  • 2
    +1 for everything you wrote. To that I'd add that the best reason to avoid coding tests with such people is that the breadth of experience, as well as their leadership skills and development / test philosophy will be so much more important than can they develop a tiny fake web server. – Julie in Austin Sep 17 '19 at 18:23
  • Nowadays a fullstack developer is expected to also have at least a basic knowledge of docker + how to deploy code. They don't have to be full dev ops, but they should at least not be completely lost in front of a docker-compose.yml file. – ChatterOne Sep 18 '19 at 7:29
  • Developer here and open to new ideas. I'm curious, why would you ignore the coding part? If they can't code, they can't implement the processes, concepts or ideas. – Bulrush Sep 18 '19 at 13:27
  • @Bulrush It of course depends what kind of profile you are looking for. If you need somebody who can for example write performance critical well optimized code then you should focus more on technical skills. In general, somebody with 5-10 years of hands-on experience will know how to code. It can feel frustrating if they question your main skills even with extensive experience. Also senior/lead devs don't necessarily work with simple algorithms on daily basis. If you focus on larger scale problems, pulling string manipulation etc on the spot can be hard and doesn't reflect your skills at all. – Sopuli Sep 18 '19 at 18:17
8

From what I've learned recruiting developers, carefully reviewing with them their work experience can already hint you a lot to what to expect in terms of abilities and proficiency. So as a long and important introduction, I would ask about their past experience.

Companies they were working for (it can be a good plus a developer understands business and what matters in a company, actually), the team size they were working in, development methodology (agile or not, if they were ticketing, how were things specified, if they had tests), systems they built (server architecture, front-end, design possibly etc.), and technology they used.

I also try to know salary expectation, even though it wasn't my task to negotiate such things. I ask primarily to make sure my technical expectations are correct. I suppose this is purely optional and hinted by the candidate seniority, though.

By the time you finish this, in addition to how related is the developer work experience, you will also know if he or she is a good communicant, if he or she took leadership roles in the past, and importantly if he or she understands the framework his or her job fits in, which is quite important when working in a startup.

You can then proceed on a coding task. We got ours from websites like LeetCode and HackerRank. I suppose you can get a task there. This task will be super easy to some and difficult to many, even not being a developer I suppose you know where to put expectation there. Some people may not pull the right algorithm on first try. Pay close attention to how they are progressing though.

Last, if the candidate is successful on the coding task, and you consider recruiting him or her, if he or she is mid-level or senior you could try to ask software engineering / whiteboard questions. This perhaps the most difficult to pull if you are not a senior developer yourself. As an attempt for this you could ask "Do you know any design pattern ?" Pick one and "Explain me that one".

If a developer has sound, related experience, knows how to code and can make a decent explanation of abstract concepts, he or she is probably worth hiring.


As Sopuli rightfully explains, you would probably prefer a good technical lead over a cheap hire in your situation, but company life being what it is, I also know many startups that started with giving job to interns, and others who struggled to get the right candidates to apply, which is why I give you a general how-to-hire for a broad range of profiles. Skipping coding test is fine for experienced candidates.

  • 1
    A key question when reviewing experience: "What did you personally do for that project? " Another one: "Tell me about an interesting / challenging / elusive bug you fixed." – O. Jones Sep 19 '19 at 9:58
4

In a comment, you stated, "[a]s opposed to finding a CTO, finding developers (full-time or interns) seems much simpler."

I'm sure it seems simpler to to hire developers rather than a CTO, just as it will be simpler for your startup to fail than to succeed.

Hiring the developers first, before hiring their leader/manager (whatever the title) is an outright disaster waiting to happen. First, as your question alludes to, you have no idea how to evaluate developers. Second, you don't know how to construct a development team (which involves determining the skill sets, size, and relative levels of seniority that the team needs).

Finally, even if you manage to hire a great, balanced team, how will you manage them? How will you assign work to them? How will you evaluate their output? How will you resolve when different developers offer different technical solutions?

Focus all your energies on finding your CTO, and then task him/her with building out the team.

  • +1 for hiring the CTO, but I was tempted to -1 you for suggesting the CTO would build the team. In a startup the entire "technical team" is usually small enough that a group interview, with a final interview with the CTO might be more appropriate. Once there are enough developers and leads to conduct the interviews, the CTO can start being left out completely. – Julie in Austin Sep 17 '19 at 18:26
  • @JulieinAustin - What I mean by "construct" a dev team is stuff like - what skill sets does the team need? how many developers, qa, etc.? how senior are the various roles? – dan.m was user2321368 Sep 17 '19 at 19:04
  • Dan - Thanks for that clarification. You may want to edit your answer with what you just wrote. – Julie in Austin Sep 17 '19 at 19:05
2

With all due respect, I think your question is missing your actual problem. You can test your candidates in all the ways you like aiming at whatever skills you desire. But no test will be of use to you if you lack the knowledge to understand and especially evaluate the answers. Therefore, it is common to have HR-personal, as well as technical-staff present during interviews when hiring technical stuff. Since you are building a new dev team it would be reasonable to hire a team-leader first, with a solid CV and experience in the needed technologies as well as a history of previous responsibility for employees. Part of his responsibilities would then include to help you recruiting any additional developers.

However, this kind of know-how comes at a price and might be over the budget of a start-up-company. So the alternative would be, to outsource the evaluation-part of the hiring-process. There are several personnel service providers on the market who you can contract to look for the profiles you need. In addition I once came across a service called qualified (https://www.qualified.io/) which seems to be specialised in doing engineer/developer assessment for you. I do not promote their services since I have never used them, I just wanted to show another option.

Personally I would recommend “solution” 1, since you probably need a team-leader for your new dev-squad anyway.

0

There are few things you can do:

1) You mentioned you are outsourcing the development of you application at this time. Is it possible to get team lead/senior developer of the outsourcing team to be involved in the process? That person should know what particular frameworks and languages you use as well as for what to look when hiring a person. I suspect you would not cut off the outsourcing team immediately so there is going to be a development transition time and by involving people from outsourcing company you could figure out if a new hire would be able efficiently communicate with external company;

2) Ask a candidate to describe some simple stuff (like how would you do a peanut butter jelly sandwich) and see if the person can apply an algorithmic thinking to an everyday task (please do not specify to give you algorithm, but see if the directions person would give you would sound like algorithm, note if person skips a steps like "take a peanut butter from the fridge", would be even better if person would say "open a fridge, take a butter, etc.."

3) Ask a person to write an algorithm to a simple problem (like sort) in pseudo language (you might be surprised how many people would fail here).

4) You mention JavaScript... This is too broad and I haven't seen application that are using some sort of framework (Angular, Vue, Ember, React, jQuery, etc.) one way or another for more than 7 years. Figure out what framework you use. You might want to go through a quick online tutorial that would take 3-4 hours on that framework afterwards and ask the questions from Q&A section of that tutorial and compare if the answer given by the candidate is similar to the answer from tutorial; You might try similar thing with Java but tutorial for that might take full work week just to cover basics.

5) If you are familiar with the concept of the Object Oriented Programming (since your company use Java) ask person some questions like what is the class, what is the object, etc.

Honestly, it would be really important to get somebody from the team who is currently writing the software to be involved in the process. If the would be involved they could ask more advanced questions that target frameworks, languages, demonstrate snippets of code that contains compilation or logical issues. However even if you get them involved in the process I would still ask questions 2, 3 & 5. Without the people from the outsourcing company being involved you might get not optimal candidates though.

  • 2
    I disagree with point two - daily tasks are loaded with context and unspoken assumptions which usually work and any issues in the odd case can be resolved easily. Even if it's a person who likes to do microoptimisations in their daily life (like checking which train doors are closest before getting off) they won't describe it that way unless it's a task they do daily which is a hit or miss. And relying on the context of this being an interview for a developer position might make you miss on a good candidate who lacks some people skills or is simply stressed out. – Jan Dorniak Sep 16 '19 at 23:23
  • @JanDorniak, in my experience this question filters out the people who cannot think in a process oriented way. Also this filters out people who do not pay attention to the details. Basically people who cannot describe steps to reproduce an issue, put a clear diagram of some process and people who prone to miss steps either when estimating what should be done for the task or who would jump over the some important steps in the process (like skipping testing your code before submitting pull request). – AlexanderM Sep 17 '19 at 0:16
  • and also weed out developers who rely on instinctual thinking. It does not mean I don't analyse problems but analysis of simple problems is often subconscious. Could you maybe tell me which part of development process this question is meant to reflect? Because I honestly fail to make the connection. If you add some leading qualifiers to that question to make the candidate get into the same frame of mind as during development - sure. But without those it seems like this question will get a lot of false negatives. Oh and the downvote is not mine. – Jan Dorniak Sep 17 '19 at 0:26
0

I would recommend giving them a IKM Java test. It provides you with an easy to read printout of their skills and shows the areas where they are weak and strong with the language. It shows their skill level compared to other developers who took the test. It is multiple choice and can range from 1-2 hours. Here is a link below: https://www.ikmnet.com/java-code-challenge-basic/

-4

The best advice I ever received about hiring developers was from the below article. Hopefully this will help:

https://www.joelonsoftware.com/2006/10/25/the-guerrilla-guide-to-interviewing-version-30/

  • 4
    Please don't post link only answers. Instead, summarize and write the relevant details of the article you mention here, so it is preserved and users don't have to navigate outside SE – DarkCygnus Sep 16 '19 at 23:56

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.