Chalarangelo/30-seconds-of-interviews

FEATURE: Categorize questions by difficulty and random interview

fejes713 opened this issue ยท 5 comments

Currently, we have around 30 questions. In order to implement difficulty category we would need a bit more, lets say 50+.

This issue represents mixture of my and @atomiks ideas.

We would like to implement some sort of real interview. When a user presses a button on a landing page he is redirected to a custom page where he is welcome with ~10 random questions. The user should be able to select dificulty junior, medior, senior for questions. We do not have Duolingo algorithms but @atomiks suggested that after each question user would press one of the 3 buttons:

  • I know
  • I partially know
  • I don't know

Each button would carry different weight and at the end of interview, user could see his score (summ of all weights).

In order to make this interview, we would need to categorize questions by difficulty too. Would such thing be hard to maintain? Do we need categories for random interview(junior, sentior etc.) or we should have one single category?

We could also display small tag on question's card based on question difficulty on our main page.

What are your opinions on this one?

First off, this whole idea sounds like it qould most likely require a server at some point.

With that out of the way, I think generating a random interview is not exactly the most fair way to go about this for a few reasons:

  • What is easy for one junior dev is hell for another. Even though simple concepts are usually simple enough for most people, you can't really know what kind of experience and/or background everyone has and what role they are applying. This, in turn, could lead to people feeling inadequate before a job interview.
  • Interviews are bound to roles and/or tech stacks. This means that generating a random interview for a web developer might be irrelevant to the position they are applying for, as the algorithm might not generate questions relevant to that role and/or tech. A PHP backend dev role is extremely different from a Node/Express backend dev role, who is in turn very different from a Node + some other tech backend role.
  • Maintaining dificulty for questions and weighing them is going to be a bit tricky, especially when a lot of people start arguing about their difficulty and submitting PRs to "fix" it.
  • Questions could get outdated and/or their difficulty could change dynamically over time. Prime example of this are Promises which were all the rage a couple of years back and most people had not idea how to use them. Nowadays, they are still very much relevant and most people I know have at least some experience with them.

Based on my above points, I have a counter-proposal to make:

We can start adding a difficulty score to questions and see how the whole idea turns out. It might not be as complex and problematic as I think and we can always come back to this and use a generator to create interviews.

Apart from that, we can also make some static pages that we curate for specific role descriptions and tech stacks and present questions in a nice page that could help someone land a job. That sounds way less complex and would make use of the tag system, as we could tag a question with something like node, webdev, junior, backend and then add it in all those interviews. If we get too many questions in each tag, we can still use random generators to not show the whole thing, but just 10-15 questions per page.

TL;DR: Sounds way too complex, why don't we stick to proper tagging and curating interviews per role/positon/tech for now? Add the difficulty ratings as an extra and see if they are worth it.

Actually this could be done with a client side script. If they clear their cookies we would lose track of progress, but it would be entirely doable client side with those storage mediums(isn't JSON great?)

The parts would be:

  1. Question list script(generate and save the question list and their answers as an initial state)
  2. Question display script(display the question and record their answer)
  3. Results calculation script(calculate and show their result, offer a print or copy, make them the storage medium)

Any modification to the storage would mean an immediate loss of progress and having to start over, but since we aren't going to be storing the results etc... etc... you can see where this train of thought is going.

However @Chalarangelo hit the nail on the head:

This needs curation, and people arguing over how difficult a question is leads to chaos. That kind of makes it hard, so we would need to not allow pull requets to modify them and would instead have to allow people to vote for them over time with a reaction on a github issue(so authentication is taken care of) for the question in comment and lock comments to maintainers, but allow public to react(if possible)

Otherwise this will require a server. It should be doable with the abilities that Github provides, but would mean manual labor time, or a server to aggregate and collate based on an algorithm

This needs curation, and people arguing over how difficult a question is leads to chaos. That kind of makes it hard, so we would need to not allow pull requets to modify them and would instead have to allow people to vote for them over time with a reaction on a github issue(so authentication is taken care of) for the question in comment and lock comments to maintainers, but allow public to react(if possible)

This pretty much sums it all up. There is definitely going to be a lot of problems with deciding which questions goes where in terms of difficulty.

For now, we can just generate 10 random questions just for fun. Real interviews could come into play later down the line when we have over 100questions and someone to maintain and sort them properly.

@Chalarangelo I like the idea about static pages designed for specific job roles. But, as you already said, this is not something that is urgent so we can postpone this feature for some time(I will have time over the summer so I could implement something like that).

I am closing this, as discussed above there is still no need for this as it would be very hard to maintain. The page with random questions will be implemented soon. ๐Ÿ˜„