Built a tool to help with interview studying - How can I improve it?

Profile picture
Mid-Level Software Engineer at Contract17 days ago

It's a combination of spaced repetition learning and interview preparation.

The basic premise is that the better you perform on a challenge, the longer it will be before you reencounter it. If you forget, you will see it sooner.

Users can create and manage a table of questions, track their mastery, and schedule review sessions based on a space repetition algorithm.

Check it out: https://interview-flow.vercel.app/

  • The features
    • The Grow Table:
      • An editable and filterable table
      • Each record has:
        • Topic.
        • Question.
        • Confidence.
        • Last reviewed date.
        • Next review date (based on space-repetition algorithm).
        • Review count.
      • Clicking on a record gives a more detailed view of the exercise you’re working on.
      • You can rate your confidence, which creates a new review note.
        • It also updates the next review date based on confidence.
        • You can see all of your past review notes, and you can create new review notes.
    • Adjust the space-repetition algorithm based on how long you have for an interview.
      • 1 week
      • 1 month
      • 3 months
      • Custom
  • The use case it was meant to help with:
    • The goal is to help you pass your technical interviews by using spaced repetition to focus on exercises that are difficult for you.
  • Tech stack:
    • NextJS
    • Shadcn/UI(radix UI + tailwind CSS)
    • Supabase for backend

I have more features in mind, but for speed, this is the initial feature set that I plan to release the application with.

4 Likes
134 Views
6 Comments
👑

Discussion

(6 comments)
  • Profile picture
    Senior Software Engineer [5A] at Uber
    17 days ago

    You have overindexed on the "what" not "how" of software engineering. You are essentially creating a glorified flash card memorization system.

    Not only that, you have created a website where the person has to fill in the topics, time, and check off boxes themselves. This isn't a interview preparation app. This is a productivity app that keeps track of what to study. Its really more similar to Jira.

    There are 2 parts of being a software engineer: the software (coding, language, concepts, info) and the engineer (think, design, test, create, improve). I would argue you are an engineer first before you are a software engineer.

    Consider what features you can add to help people execute faster and better on the information that they already have. How can they efficiently use this information to solve any problem they may receive? Where may they misexecute on problems? Why? How will knowing "NextJS" help them in their Google interview? Is it the most important thing for them to know?

    There are plenty of platforms that sell "information" (I argue that bad information is worse than no information). But there are few, if any, platforms that train you on how to think, take effective action on the information you know, and how to work through problems effectively and efficiently in unknown and unknowable spaces.

    You aren't paid for what you know. You are paid on how you act on it. Ideas are cheap. Execution is everything.

    For a better treatise/explanation of where I am coming from, here is my doc

    Welcome to the Coding Interview, You Suck

    6 Likes
  • Profile picture
    Tech Lead/Manager at Meta, Pinterest, Kosei
    16 days ago

    Be explicit about what your goal is. Do you want users, revenue, or learning? Or did you just build it purely for yourself to help with your own interview prep?

    For most devs building side projects, the goal is to get users. In that case, the vast majority of projects are lacking when it comes to UX. It needs to be incredibly easy for someone to understand how and why they'd use your tool.

    The reason most side projects fail is that this is traditionally not the "glamorous" part of engineering: you're not learning new algorithms or working with a cutting-edge API. You just need to do the hard work of writing good copy, reducing button clicks, color-coding the UI appropriately, etc.

    For your app, I'd really focus on the usability. A few things come to mind immediately:

    • Make the tap targets bigger. Right now I have to hover over the row in order to click “Open”.
    • Color code the “next review” and make the time relative (“in 2 days”).
    • I'm not sure what title refers to. Can you link it to a Leetcode problem?

    See the masterclass about building side projects here.

    4 Likes
  • Profile picture
    Mid-Level Software Engineer [OP]
    Contract
    14 days ago

    Thank you for the feedback, Edbert. You're right, this app is more focused on managing interview preparation material like DS&A.

    To be honest, all the information needed for interview preparation is already available, from resources like AlgoExpert, NeetCode, LeetCode, Educative, Grokking interviews, and various YouTube channels.

    What I aim to do is build a platform specifically designed for managing interview preparation. For instance, let's say you have a technical interview scheduled with Meta in three weeks, and you have already gathered interview prep material from sources like Glassdoor and the recruiter. With this platform, you can add all those challenges, set your interview day, and start working on them using your preferred DS&A platform. As you work on these challenges and reflect on your attempts, you will quickly identify areas where you struggle and address those weak spots before the interview day.

    To make it easier for users to get started, I am considering creating templates that include all the exercises they need to work on, such as a Google interview template, a Blind 75 template, an AlgoExpert template, and more.

    1 Like
  • Profile picture
    Mid-Level Software Engineer [OP]
    Contract
    14 days ago

    Thank you for the feedback, Rahul. It started with building something for myself and quickly became "other people could use this as well.”

    Now, my focus is on making it extremely useful for myself while also encouraging others to sign up and use it.

    And on top of that, it’s fun to work on a side project.

    I like your idea of having a link to an exercise on LeetCode or any other platform where the exercise lives.

    1 Like
  • Profile picture
    Tech Lead @ Robinhood, Meta, Course Hero
    14 days ago

    As someone who has built many, many side projects to great success (3.5 million+ users, 5 apps with 100k+ users), many of them utility apps like yours, the important thing to remember is this: People are lazy.

    When it comes to software design, this usually boils down to: How can I make getting value from this product as fast as possible, requiring the minimal amount of clicks?

    It takes a lot of effort to incorporate a new app into your repertoire - There are so many apps out there and not enough time. Right now your app requires a lot of clicks:

    1. You need to fill out a form to add a new interview problem.
    2. Every time you update your progress (e.g. You advance from partially recalling a solution to totally recalling it), you need to update the relevant row.
    3. You need to regularly check the tool to see which problems are "due" soon for your study.
    4. If an item is coming up and you need to study it, you need to navigate to the URL (probably offsite on LeetCode or something) again as I don't see links in your demo items where users can navigate to the proper problem area with a single click.

    In order to fix this, it's unfortunately going to take a good amount of work:

    1. Ideally, you just integrate with all the interview prep tools like LeetCode, AlgoExpert, etc. The idea is that you can connect with the users' accounts on those tools and pull in their progress via an API. This will also allow you to link things directly.
    2. To fix #3, you should send email notifications when problems are almost due or past due.
    3. If you can use pre-fill data sets or templates in general (i.e. people can search for problems instead of having to type them in), that also helps with #1.
    4. A spicy idea is to have the interface be company-oriented. You tell the tool what interviews you have coming up, and it automatically suggests all the problems you need to do by pulling from sources like LeetCode Premium.

    That being said, not every side project needs to get a ton of users (that's just what you need to do if your goal is to have this look impressive on a resume). Side projects are also useful for raw learning as well. As is, the tool's UI looks very clean, better than 90% of side projects I've seen. This is something you should definitely be proud of 😊

    To learn more about better executing your side project, check these out:

    3 Likes
  • Profile picture
    Mid-Level Software Engineer [OP]
    Contract
    7 hours ago

    Based on initial feedback from Edbert, Rahul, and Alex, I made a few changes to the prototype.

    The first major change I implemented was the creation of a dashboard layout to improve application navigation.

    I added a slide-in navbar with pages for backlog, sprints, calendar, templates, and reports. Initially, the backlog and sprints pages will be the primary focus.

    The backlog page includes a preset of exercises from LeetCode, allowing users to create interview sprints without wasting time on exercise creation. Each exercise in the backlog links to a specific exercise on LeetCode. If users don't find the exercise they want to practice, they can create it.

    Since users may be preparing for multiple interviews, they can create multiple sprints and add the questions they need to practice for each interview.

    To enhance user-friendliness, the tables are collapsible. And the website is also mobile-friendly.

    Additionally, there is a sprints page for managing all interview sprints.

    Check it out: https://interview-flow.vercel.app/

    0 Likes