CodeCrafters makes interactive courses for software engineers, where you get to recreate popular developer tools from scratch.
Build your own Redis, Git, Docker, and SQLite—in Go, Python, Rust, etc.
Hello Product Hunt!
We’re different in the developer education segment in 3 main ways:
◆ First, we cater to people with programming experience. There are tons of introductory “learn to code” resources out there, but surprisingly little once you get past the basics. Good programmers want to get better and to develop in areas where they’re not strong yet, and that’s what we help with.
◆ Second, the coursework involves writing actual code instead of consuming videos. You handle concurrency, develop statecharts, traverse B-trees, etc. While we test against a fixed spec, you’re welcome to try different approaches. E.g in our Redis course, you could implement handling concurrent clients either using threads, or using an event loop.
◆ Third, instead of coding in the browser, you build these projects in your local dev environment. We create repositories for you to work out of, and you git push to run tests. The actual code can be written in your editor of choice (VSCode, Vim, Emacs, etc).
This last point in particular — our git-based workflow — is something customers repeatedly tell us they enjoy.
As open source contributors, we’ve always been interested in the internals of software we use day-to-day. We’ve learned how much hunger there is for a skill-building path that’s structured, fun, and focused on cool, well-known projects with serious technical dimensions. Jumping straight into the deep end as an open-source contributor has always been an option, but it’s daunting, if not intimidating.
It can take a long time to get oriented in a major codebase, and mentorship isn’t always available. There’s a need for an intermediate approach with lessons that build technical expertise, and that’s where we fit in.
Thanks for hunting us @mwseibel, and hello Product Hunt.
For @rohitpaulk and I, our desire to get really good at programming began 10 years back in Uni.
One time we had the crazy idea to reimplement Git in Ruby (why not, right?).
At that time we thought only some crazy genius types could build such a complex project. But not only did we build it, we also taught our friends. It turned out to be such an enriching experience that Paul and I became best friends over it. Years later, it's led to our first company together.
Today, through CodeCrafters:
◆ Developers at companies like Apple & Vercel are mastering Rust, Go, Haskell, etc.
◆ Harvard & MIT students are mastering the internals of popular software (e.g Git)
◆ Companies like Rose Rocket (YC S16) are powering their up-skilling programs
◆ ... some engineering teams are even organising mini hackathons
So how does it work? The basics are simple:
1. You choose a project from our catalog (e.g Build your own Git in Python)
2. We break it down for you into approachable features (aka. stages)
3. You implement each stage, and push code to get feedback
And it gets more interesting from there:
◆ You can study others' implementations (with AI-assisted explanations)
◆ You can study the official source code (e.g the Redis source) for inspiration
◆ You can publish to GitHub, one click. Show off progress through gorgeous banners
◆ You can learn alongside your team, through private leaderboards and our Slack app
We've built CodeCrafters with a lot of love.
We'd love for you to try it, and tell us what you think.
Can't wait to see you build.
congrats on the launch! codecrafters has been a staple in my coding practice for the last 9 months now.
as a vc, i don't get a *ton* of time to write code, but it's really important to me that i keep it up so that i can build & experiment with new technologies. codecrafters provides the perfect, byte-sized (no pun intended) challenges for me to complete so that i'm constantly keeping my skills sharp.
when i studied cs in college, i was often frustrated at how theoretical everything felt. i didn't make a website until my senior year. i spent so much time learning data structures & algorithms, without actually learning how to build something real with them. codecrafters is different: it orients around the end-product and gives me a sense of accomplishment for building something real & useful.
11/10 recommend for anyone who wants to learn to code (start with the easy ones), up-level their coding abilities (try implementing a project in a new language), or just keep up their coding abilities with fun challenges.
feature request: would love some more challenges that are less infra-y and more product-y. for example, i'd love to build my own cal.com, chatGPT, AI headshot generator, etc.
@alanafanderson thanks Alana!
There’s definitely a lot of demand for full-stack product-y challenges like you mentioned. We’re going to experiment with some ideas in this space :)
For context, we chose the current set of challenges (Redis / Docker / Git / SQLite / Grep) because:
(a) they’re “evergreen” tools — widely used, some have been around for decades
(b) they’re the kind of tools where learning the internals helps you become more efficient at _using_ the tool. For example: I rarely have to reach for regex cheat sheets anymore now that I’ve built my own Grep from scratch.
(c) they’re easy to build tests for. All of these have structured interfaces (either they’re CLI tools, or they speak a well known protocol), and that makes it easy to test and convey error messages to the user.
Bravo, @rohitpaulk and @sarupbanskota! CodeCrafters is an absolute game-changer for software engineers. I believe hands-on learning is the best way to truly understand complex tools. CodeCrafters seems like the perfect platform to recreate popular developer tools and dive deep into their code.
Are all the courses made in-house or by external experts? How do you prioritize what courses will be launched next?
@albert_tri thank you! I agree - once you've experienced the "build your own x" style of learning, there's no going back.
The courses are currently made in-house, but we have external experts contribute solutions for the challenges. Solutions need to cover a variety of languages, and we don't have all the talent needed for that in-house.
In the long-term we do want to have external authors build courses. We aren't quite there yet though. There's a lot of work to be done on the course-authoring side of platform to make it user-friendly enough for an external author to build a course. In a sense we're dog-fooding the course creating platform - with each challenge we build the platform gets better and better, moving us closer towards the goal.
We released the first couple of challenges based on what we thought would be interesting, all the others were driven by user demand. Our users vote on what challenges they want to see next: https://app.codecrafters.io/vote..., and we prioritize votes from users who've already completed other challenges.
@deeptivchopra Haha so true. 6 years ago, the alternative was to follow tutorials.
https://github.com/codecrafters-... has hundreds of them. (it's the 10th most popular repo on GitHub with 200k+ stars)
But tutorials have these problems:
◆ They're only available in one language, the one the author knows
◆ Due to lack of tests and automated feedback, it's easy to go astray and lose motivation
◆ They're created at one point in time, and then go stale as the language gets new versions
Those are some of the problems we hope to solve.
Thank you for your kind support!
The user interface of the course platform is clean, intuitive, and easy to navigate. The courses are divided into well-organized modules, and the platform keeps track of your progress. Additionally, the platform provides integrated coding environments that eliminate the need for external tools, making the learning experience smooth and hassle-free
Each module provides a step-by-step guide on building the tool from scratch, accompanied by real-time coding exercises and challenges. This hands-on experience would allow the user to actively apply the concepts and at the same time challenge themselves.
This approach not only deepens your understanding of these tools but also allows you to gain expertise in multiple programming languages simultaneously
Great job @sarupbanskota and @rohitpaulk for an awesome solution
@ling_fu great question! We've found that our target audience (engineers who already have some experience) tend to prefer using their own editors/IDEs. When you've spent hours customizing your VS Code/Vim/Emacs config, a web editor experience is always going to feel subpar.
This is also heavily inspired by Heroku's git push workflow - which is known to be a gold standard in DX.
That said, in-browser editors are getting better by the day. For example, GitHub Codespaces now letting you bring your own settings: https://docs.github.com/en/codes.... We might look into supporting an in-browser editing experience in the future.
Congratulations @rohitpaulk and @sarupbanskota. I'm a firm believer that one really learns from trouncing complexity. And what is more complex than the greatest software projects ever created. The problem today is that there are so many such projects that CodeCrafters is needed to collect the best ones and isolate the most ground breaking and essential parts of their codebases.
Congratulations to @rohitpaulk and @sarupbanskota on the spectacular launch! 🥳 I was fortunate to have access to an early preview version of the product, and I genuinely enjoyed working through the numerous challenges. They were engaging and well-crafted - precisely what you would expect from such a comprehensive solution.
For me, the best way to learn a new programming language is by building something in that language. CodeCrafters absolutely excels in this area, providing the ideal platform for hands-on learning. I found my programming skills enhanced thanks to the variety and real-world applicability of the challenges presented. ✌️
Another feature that sets CodeCrafters apart is the ability to complete challenges using your own familiar tools that you would be using in your work, such as your preferred IDE and Git. It speeds up learning and provides a seamless experience.
I am curious whether the team plans to add any social features for community learning and collaboration. I believe that incorporating such interactive elements could bolster the overall experience and foster a sense of camaraderie among learners.
Overall, I'm incredibly impressed with CodeCrafters and see it as a must-have resource for anyone looking to up-skill or learn a new programming language. Cheers to Rohit and Sarup on crafting this fantastic platform, and best of luck with everything moving forward!
@niranjan94! This comment touched me.
You've been one of our greatest supporters.
Community oriented features we've rolled out recently:
◆ You can now look at how others have approached the same stage you tried, and get our AI to explain what's going on in their code https://codecrafters.io/blog/exp...
◆ If you're part of a team, you can enjoy being part of a private leaderboard and Slack, where you can see how your team is making progress and be inspired by their submissions
◆ We're exploring the idea of letting larger teams create custom courses that fit their talent engagement and up-skilling goals, whether for internal or external talent
cc @rohitpaulk
@rohitpaulk@sarupbanskota
I'm thrilled to hear that my comment resonated with you. It's great to have been able to support and witness your journey so far 😄
And those are some interesting features that you have mentioned there ! Will check them out :)
CodeCrafters is just amazing. You can pick skills on many languages by building real world applications in controlled stages. Helped me a great way to pick up my Rust skills.
@hernan_gabriel_gonzalez Thank you! We're surprised ourselves by the uptake in the Rust community haha — considering we ourselves didn't know any Rust and it was community contributed :)
I’m a big fan of Codecrafters. Their challenges are unique and amazing. Trying to build sqlite db or git was something I was trying a lot to do by myself. So having codecrafters made it easy for me to approach it step by step.
Kudos to the team and best of luck with what comes next!
Congrats on the launch! I have been working through CodeCrafters with my friends during my time at Recurse Center, programming for the joy of programming. Incredibly fun way to learn to build fundamental technologies from scratch.
As an engineer, I am always into taking my tools apart, understanding the individual building blocks for what they are, and putting it them back together. CodeCrafters is where I go to put them back together in a guided way that keeps me motivated and enthusiastic.
CodeCrafters is a tool I often draw on in my journey in becoming a dramatically better programmer. Thank you for making CodeCrafters!
@cindywu The Recurse center community is the best.
Thank you for your continued support, and please keep the feedback coming.
We want to make a product every Recurse batch will enjoy.
CodeCrafters (YC S22)