Thank you for joining the AlgoDaily community! It is our mission to democratize careers in software by helping non-traditional developers get better at interviews and sharing hard earned lessons gained from working on various software engineering teams.
This article aims to explain what we're all about, and answer several questions that are frequently asked.
It's meant to be more of a reference than a guide. If you're looking to jump into the experience, start with the How and What to Prepare section.
The AlgoDaily philosophy is this:
Computer Science is fundamentally important to human society. Everything is moving to a device or online-- almost all forms of work, entertainment, music, and education all seemingly live within a browser window. However, there aren't enough engineers around to support it, and even less who are able to go beyond the basics of a CRUD application.
To find engineers who are capable of solving challenging technical problems, many software companies have resorted to testing candidates on Computer Science fundamentals, since they are the best measures of capability in a short timeframe and at a certain level of scale.
Most non-traditional folks don't have access to intermediate-level Computer Science theory, despite them being some of the most determined and hardworking students of the craft. And furthermore, most traditional Computer Science degrees do a poor job of making the "harder" stuff accessible.
AlgoDaily seeks to change this by being accessible, visual, and systematized.
Accessible means that anyone with the basic fundamentals of coding (variables, loops, conditionals) down should be able to understand the material. Mathematical notations and dense text are avoided in favor of plain English.
The big ideas in Computer Science are usually abstractions on top of abstractions. In order to fully understand something, visuals are essential. That's why AlgoDaily ensures we have an abundance of illustrations, videos, and examples to demonstrate a concept.
To do something, no matter how tiny, is better than doing nothing. Small steps taken at a regular interval makes it easier to be consistent, which is the key to improving any skill. Systems, rather than raw willpower, help you achieve your goals. You need something that is automatic, hard to avoid, and predictable (like an email).
When you register for the website, you are defaulted into the daily newsletter (if you leave the subscription box checked).
Every day, you are sent a daily challenge from our list of challenges. The challenge sent is based on where you are in the curriculum.
When there are no more challenges, you stop receiving emails until we add more.
You are free to change the day that you are currently on at any given time. This can be done by going to the
Settings tab and changing your "Day On" attribute.
There's a number of readings that are offered on the site. We highly recommend you do all the readings, as they streamline attaining the technical background you need to solve the challenges.
When you're doing with a lesson, ensure that you click
Mark as Read to mark it as read on your dashboard.
I highly recommend you read the following two lessons. They will provide you with some context in approaching the problems, especially if it's your first time interviewing.
The daily newsletter will provide you with the question prompt of that day's coding challenge. We recommend you take the following approach to try to solve it:
Click either of the blue "Run Tests" or "Run Code" buttons. The first will run the test cases against your inputted code. The second will run just your code with no test cases-- be sure to
console.log out your print statements!
RESET any time you want to reset.
Note: if you see something unexpected (we save your work to your local storage), hit
RESET to get back to the original code state.
Click "VISUALIZE" on the upper right of any challenge to view the visualizer. This is a beloved feature by many in our community, as it allows you to step through a simple input with an algorithm.
Note: Not all problems include this yet!
There's two ways to "complete" a problem:
Click "Mark as Completed" under the Challenge title. Note-- you'll need to be logged in to do so.
Run tests-- if all test cases pass, it'll automatically get marked as completed.
Marking challenges as completed lets you keep track of your progress, and helps you climb the leaderboard.
This shows the users with the most completions, and longest streaks. It is updated multiple times during the day programmatically.
Would you like to add to the curriculum? Email your article to firstname.lastname@example.org, and we'll review it!
Topics often include (but are definitely not limited to):
Sign up for our newsletter list and join over 3,000 brilliant developers leveling up and solving coding challenges daily.