
Ask HN: How to tell if a JavaScript/front end candidate is mid-level or senior? - mavsman
I often find that niche topics are used to distinguish between certain levels. What criteria (including specific topics or questions) do you use?
======
commonturtle
Hmm.. for distinguishing senior engineers from juniors I would look beyond
just knowledge on technical topics. Two important areas to cover IMO for
senior candidates, beyond coding skills:

1\. Design / architecture / product skills. Here I mean 'design' in the
software sense: can you design a good API, can you structure a large project
well? Do you have good enough product intuition to work well with a product
manager and a designer?

2\. Past experience. What have they shipped in the past? How did they deal
with difficulties like conflict between teams, deadline misses, uncooperative
team members, etc.

~~~
xcubic
Any good sources to learn 1?

~~~
dglass
Besides experience mentioned in the other replies, I'd recommend reading open
source code. Search for open source projects related to the programming
language of your choice.

Other ways to find good projects to read are to look through the codebase of
whatever framework you're using, if you're using one. Are there any
dependencies/libraries you always reach for? Read through that code as well.

Learn design patterns to properly decouple parts of your system. The Gang Of
Four book is considered the best book on this topic.

------
ryanchants
I use this a lot when interviewing at companies, but find it useful when
interviewing senior folks:

"What is a technical decision you made on this project that you wish you would
have made differently, that you are still living with today?"

This opens up a lot of conversation around how it could have been solved
better, what they know now that made it apparent is a sub-optimal decision,
what steps were taken to minimize the impact once this fact was discovered,
and is there any plan to correct in the future or just live with it.

The big thing is to see that someone has not only built something, but
maintained it after the fact, and for long enough to see the impact of trade-
offs.

------
austincheney
Don’t use edge cases or niche anything. Expect a senior to provide original
solutions to problems.

If you want to be very specific determine the level of hand holding the
developer requires.

* Can they do the job without a giant framework and a billion build tools?

* Can they interpret and refactor other peoples code?

* Can they write documentation?

* Can they objectively consider evidence based approaches to code decisions?

* Can they distinguish product quality from developer convenience?

Consider that a good mid level developer is at the top of the bell curve. They
know all the latest trends and fashions. They have probably mastered things
important to beginners. A good senior has learned to leave all that nonsense
behind to produce simpler code more productively.

------
thorin
* Assuming a mixed stack, the ability to communicate to with the other devs is important. Often front end devs think they know everything about the product and don't get on with the back end apis and vice versa.

* Understanding of things outside their scope such as databases, server setup and deployment

* Good knowledge of a couple of frameworks, but the flexibility to pick up others quickly too and not constantly complaining if they have to deal with legacy code or frameworks they don't like!

* Communication, humility and the ability to teach or mentor more junior staff

* Knowledge of base JavaScript and programming in general should go without saying. Ability to do reasonable design / css / html even if that's not their area

* Remember one persons expert is is Brendan Eich or Ken Thompson. Another persons might be any career developer with 3-5 years experience!

------
dglass
Lots of good replies already, but I would also consider a senior engineer
someone who puts the team first. They admit mistakes early, look for ways to
improve not only the codebase but the software development lifecycle and their
teammates as well. Mentor younger engineers, write and maintain thorough
documentation. Add processes to reduce risk of shipping faulty code, and
preventing production incidents.

------
siquick
Communication skills - ability to convey tech details to non-technical
stakeholders.

Ability to understand the bigger picture in the organisation rather than just
focusing on what's happening on the dev team.

Make good decisions on what's important to build for the sake of the
organisation versus what devs want to build to entertain themselves.

------
scott31
Ask them fizzbuzz:

    
    
      Solved <  7 mins: Senior
      Solved < 15 mins: Mid level
      Solved < 45 mins: Junior
      Otherwise: No hire

------
sktguha
How about asking them to design and build a basic version of react/ redux/
react-redux/ react-router etc

