My favorite full-stack interview question — design a form
Let’s be honest — while there is no better time than “now” to be a developer, being a developer in 2022 is quite challenging as well. And, you know what is more difficult than being a developer — Interviewing the developers.
When you are taking interviews, many things are at stake — your company’s brand value, your own image in front of other panelists, time management, etc. You might have different opinions about how most companies are interviewing these days — whether take-home assignments work better or whether a live coding round is much better, whether system design interviews are more superficial than they appear — but you all will agree that it is hard to form a judgemental and definitive opinion about another developer whom you just met (or zoomed).
While working for a cool startup in India, I took 60+ junior/mid-level full-stack developer interviews — all over google meet/zoom calls. Before that, I rarely took interviews (for my failed startup); but this exposure was quite transformational.
While I wanted to make the whole interview experience comforting and enjoyable (after all, interviews and basically all recruitment activities are for attracting talents and thus fall under marketing), I also wanted to ask practical questions that “uncover” the real personality and competency of the interviewee. And that’s quite tricky because every developer is different, and depending upon the job description, role level, and requirements, your expectations are different.
Ice breaker questions seldom uncover the real person
I started interviews with “ice breaker” questions (yeah! you got this — “Tell me about yourself”) and sometimes impromptu questions from the candidate’s resume for a few initial days. However, I soon realized that while it could give a convincing start, the interview objectives were lost in a random conversation.
There are so many lame and cliche questions. There are so many topics to cover. What do I ask as a wholesome question in tech interviews?
For the live coding round, I started making a list of coding questions and programming exercises for every role and experience level. For example, we had a different “simple” coding puzzle for interns and a hard coding challenge for mid-level / senior developers. While this worked for a while, it was not a good approach when you have many “matching” profiles with similar experiences. Sometimes a junior developer performed well even when we gave him a “senior” exercise, which many senior developers could not solve.
Later we realized that this way of judging “seniority” itself is wrong and stupid. It’s probably not your coding skills that make you a senior developer (more on this later). And it’s damn hard to decide on senior or junior devs in an hour-long interview. We started feeling that having a different set of coding exercises for each developer level is unnecessary. And that brought us to look for a generic coding challenge that works with any developer with any experience. It has to be open-ended where we don’t have absolute right or wrong answers (unfortunately, most coding challenges don’t have this characteristic). We also didn’t want to follow the leetcode, interview-cake sort of exercises.
We piloted a few questions and failed with most of them; however, we eventually found our golden question — designing a user registration form.
Yes, a simple form with a few simple input fields and a submit button. At first, this might sound pretty straightforward, but so many things are happening here.
First of all, it deals with many fundamental concepts like HTML tags, input types like passwords, mobile numbers, emails, HTTP post, submit, button click — where most of the interns and junior developers should be comfortable.
It also leaves many things for developers to think about and do, e.g., CSS, responsiveness, form validation, and accessibility. Moreover, if the interview focuses on full-stack skills, you can also explore the corresponding APIs — handling data submission, CORS, data validation, type safety, saving to the database, etc. Once the candidate is done with the primary challenge, there are many areas to explore: sessions, cookies, CSRF tokens, XSS, OAuth, etc. And the good thing so far is that the whole interview discussion remains quite generic and close to fundamentals.
So if you are interviewing for (or preparing for) junior/mid-level full-stack interviews (I believe there is no such thing as a Senior full-stack developer) — try this question and let me know how it goes.
By the way, if you are looking to learn about forms, recently Chrome Dev team published an excellent course on forms here.
(originally posted here - https://medium.com/interviewnoodle/my-favorite-full-stack-interview-question-design-a-form-12bc89a465c2 )