Skip to main content

Build A Redis Server

Master Systems Programming Through Practice

Code a network server from scratch. Master network programming, concurrency, testing, and systems software while building a Redis server.

Start DatesPriceBooking Link
17th February 2025500 USDIn Progress
May 2025500 USDSign up for Waitlist
August 2025500 USDSign up for Waitlist
November 2025500 USDSign up for Waitlist

Reviews

4.9 (5)

Reviews
"Thank you again for the course, it was fun! Overall I really liked the course structure as we could code during and get feedback."

Become a better software engineer by building real-world systems software.

Challenge yourself by implementing a lite version of a Redis server. Starting from scratch we’ll work through building a clone of the original Redis server and extending it to support the RESP2 protocol and some additional commands.

This course is entirely project focused. The goal of the course is not just to learn how to write a server, but also how to approach the problem of server software. Part of the course involves group discussion about problem decomposition, coding techniques, design tradeoffs, testing, and other related topics. The rest of the time is spent working on individual coding.

Coding examples are written in Python and Go. However, the project involves no third-party libraries, esoteric language-specific features, or language-dependent tooling. As such, you're free to implement the project in any programming language that you wish. Writing a server is a great way to learn a new programming language too.

Who is this course for?

Mid-level software engineers who want to learn how to sharpen their skills, improve their unit testing and gain experience code reviewing.

Senior+ software engineers who want to learn from their peers and gain insights on how others tackle real-world problems with a hands-on project.

Engineering Managers to CTOs - who want to remain hands on and refresh their understanding of current software development methodologies.

What you’ll get out of this course.

Learn about Redis, how it's built, and the data structures behind it

Redis is one of the most widely used key-value / NoSQL databases. It's also a great example of the power of Open Source software, great code and great documentation.

Develop your parsing skills.

These can be applied to a variety of problems including data munging, scraping, protocol implementation and more.

Understanding network programming.

This can be applied to making more robust, secure and scalable distributed systems.

Experience handling concurrency and parallelism in software.

Giving you the core skills to build scalable distributed systems.

Improved testing skills.

Network servers are complex system software with components that can interact in non-trivial ways. Figuring out how to test them is a challenge. You’ll explore unit and integration testing.

An introduction to Test Driven Development.

TDD is a great way to develop core components of system software, you’ll learn how it can help.

Experience pair / mob programming.

Optionally pair or mob with your peers and experience collaborative development practices.

Develop your code review skills.

Experience reviewing code written in different programming languages and styles.

Course syllabus

The course will run for two working weeks from the start date. During the course there will be six live, instructor led sessions.

The instructor will also be available throughout the course for questions on a private Slack channel for the course.

Week 1

Session 1 (Monday) - Introduction and Parsing RESP.

  • 17:00 - 17:55 GMT Instructor led lesson.
  • 18:00 - 19:00 GMT Office Hours, instructor available to pair and answer questions.

Session 2 (Wednesday) - Listening for connections and handling the the Echo and Ping commands.

  • 17:00 - 17:55 GMT Instructor led lesson.
  • 18:00 - 19:00 GMT Office Hours, instructor available to pair and answer questions.

Session 3 (Friday) - Handling concurrent clients and set and get commands.

  • 17:00 - 17:55 GMT Instructor led lesson.
  • 18:00 - 19:00 GMT Office Hours, instructor available to pair and answer questions.

Week 2

Session 4 (Monday) - Handling expiry and the remaining commands.

  • 17:00 - 17:55 GMT Instructor led lesson.
  • 18:00 - 19:00 GMT Office Hours, instructor available to pair and answer questions.

Session 5 (Wednesday) - Persistence and benchmarking.

  • 17:00 - 17:55 GMT Instructor led lesson.
  • 18:00 - 19:00 GMT Office Hours, instructor available to pair and answer questions.

Session 6 (Friday) - Course summary.

  • 17:00 - 17:45 GMT Instructor led discussion and final code-reviews.

When Is The Course Running?

Start DatesPriceBooking Link
17th February 2025500 USDIn Progress
May 2025500 USDSign up for Waitlist
August 2025500 USDSign up for Waitlist
November 2025500 USDSign up for Waitlist

Meet Your Instructor

John Crickett

I'm the founder of Coding Challenges, a software engineer, and sometimes a manager of software engineers. I've worked as both a senior individual contributor (Staff+) and a senior manager (VP Engineering, Head of Software Development).

I've worked across many tech stacks. I've spent most of the last six years building distributed systems with Python and Flask deployed on AWS using CloudFormation and some CDK.

I've done some TypeScript/JavaScript, React and Next.js on the frontend with Node.js and Express on the backend. All deployed on AWS using CDK.

For most of my career before that I worked in C++ as well as a number of other programming languages including C, Java, C#, PHP, Perl, Visual Basic, Pascal, Deplhi and others.

I'm currently working in Python, Go and occiasionally Rust. Coding Challenges was born out of the process of learning Rust by building real-world applications.

Frequently Asked Questions

I work full-time, what is the expected time commitment?

This is a intense immersive course, to get the most from it you need to attend during the sessions and complete the project. Most organisations provide a learning and development budget so I suggest you approach your boss and ask them if they'll cover the cost of the course and give you time to attend. If you need anything from Coding Challenges to support that, please reach out!

What programming language can I use?

You can use any programming language you like. We can't promise that we'll be familiar with it.

One of the key skills that's helped John through his career is jumping into new code bases often in new programming languages - we will use the diversity of languages used by students to explore this.

Does each participant develop their own clone or is it like a team project?

The intention is that everyone builds their own Redis clone. However the course aims to provide a collaborative experience around design decisions and code reviews - it is fine if people want to take it even further and collaborate on the coding too.

What’s the refund policy?

Things come up.

If you have to cancel and do so more than 72 hours before the start of the course we'll give you a full refund.

At any other time, you'll have the option to reschedule to a later course.