Summer co-ops are closing in fast and we're all applying for our first coop term! We're super anxious for the technical interviews, having never really done them before. This is especially given that quarantine has made it difficult to stay energized and to collaborate with those around us. And it seems that for the majority of students applying to jobs whether they are lacking in technical or communication skills. With prepear, you are able to mimic the environment of a technical interview. You are able to practice critical communication skills in walking through your thought process while improving your problem solving through tackling programming challenges.
🤔 What it does
prepear, run by our faithful pear, Benjamin, is a discord bot pairs programmers up, randomly generates a Leetcode question and sends the programmers into a voice channel to tackle it together through live code sharing session. You are paired up with another programming depending on the language you use and the difficulty of the question you would like to solve. Once a pair is generated, they are sent into a voice channel, given a link to Leetcode and a link to codeshare.io where they can collaborate in real-time.
🧰 How we built it
We used python/discord.py to create the Discord bot and used CockroachDB to store our data securely and easily. We watched countless tutorials and read through the discord.py bot documentation to help us get started. Above all, we leveraged each other, whenever we got stuck we pear-ed up and worked out our bugs and challenges together.
😅 Challenges we ran into
Testing bot/Version control
- The discord bot did not run based on a repository but rather based on the code within our personal environments. When there was a bug it was difficult to tell whose code it was as all four of our versions were different. We quickly learned that we had to constantly push and pull our code to keep the most up to date versions.
Adding the ability to create temporary voice channels
- We had to research many times and check out tutorials on how to implement it, which was difficult as first-time developers using discord.py. We ended up reading the documentation and watching a couple of videos to get it working.
Assigning a role through an emoji reaction
- We ran into the problem of not being able to get the user id who is reacting to the message in order to change their role of the user. After reading the documentation again and looking for patterns between exemplar pieces of code, we were able to resolve this problem.
🤩 Accomplishments that we're proud of
This was our first time creating a discord bot! We decided to challenge ourselves by making something we had never built and working with languages we weren't familiar with. We’re proud that despite having no experience and facing many challenges, we were still able to make an MVP of our discord bot that we knew could help our community of hackers and coding enthusiasts to connect with one another, build skills, and reach their career aspirations.
🧠 What we learned
How to build a discord bot! Although this wasn't the most complex bot, this was our first time trying to build one. We learned a lot about how to make commands, how to handle role assignments to users through reactions and create voice channels. We learned a lot these past 36 hours, from trying new databases to handling JSON in python. We also had never used cockroachDB before so it was really interesting to try out a different database, and it was super easy to set up and had really fast response times, making it perfect to use for large datasets, which we definitely plan on using in the future :)
✨ What's next for prepear 🍐
In the future, we would like to have the bot randomize and use text to speech to ask random behavioural interview questions. Recording the interview and replaying back in the voice channel, so the speaker can listen to themselves. Create an AI to analyze what is being said throughout the interview and be able to provide feedback, such as the number of filler words (e.g. “um”, “ah”, “you know”) said in the duration.
Have a larger problem set and allowing community members to add problems, helping to automate and scale the process of getting new technical problems.
Adding Quizlet-style flashcards to technical questions is something we're looking forward to too! Examples include asking what’s an array, what about a LinkedList, what’s the complexity of bubble sort, etc. This feature could also use discords markup text for hints and cover answers!