Michael Seibel

CodeCrafters (YC S22) - Recreate your favorite developer tools from scratch

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.

Add a comment

Replies

Best
Sarup Banskota — CodeCrafters (YC S22)
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.
Nitesh Agrawal
Congrats on the launch buddy! :) @sarupbanskota
Rohit Paul Kuruvilla
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.
Gautam Shewakramani
Congratulations @sarupbanskota and @rohitpaulk on the PH launch! What happens when someone is stuck? Do you or could you pair them with a live mentor?
Rohit Paul Kuruvilla
@sarupbanskota @gshewakr thanks Gautam! Handling the "I'm stuck" problem is super important for us. That's where most of the learning happens, and if we don't offer help people are likely to get frustrated with our product and drop off. There are a combination of features that we offer to help people when they're stuck: ◆ The instructions for each stage are carefully refined based on user feedback so that all the common questions are answered. It's common for us to make 10s of edits to each stage after launch. ◆ The instructions for each stage are also tailored to the language you're using. So if a stage is difficult in Rust for of a specific reason, we highlight that. We offer a concise explanation in-app and link to external articles for further reading. Here's an example from a stage in our Docker challenge, where if one uses Go they might run into a cryptic error: https://rohitpaulk.com/articles/.... ◆ We have a "Hints" feature, where users can submit hints based on their experience. Other users can upvote/downvote these hints and reply to them. ◆ If you're stuck and hints don't help, you can browse through solutions from other users. These solutions come with "Automatic Explanations", which are AI-generated comments that explain the solutions in detail. This was a recent launch that uses GPT-4 under the hood, you can read more about it here: https://codecrafters.io/blog/exp.... I also tweeted about how we made this: https://twitter.com/RohitPaulK/s.... ◆ For popular languages, we also offer a "Recommended Solution". These are authored by experts in the field (Maintainers of Next.js, for example). More on recommended solutions here: https://codecrafters.io/blog/sol.... ◆ Lastly - we offer personalized 1:1 debugging help over email. It's rare for people to do this, but when they do we respond with a thoughtful answer within a few business days. Summary: Meticulously crafted instructions, hints, user solutions with AI-powered explanations, expert solutions, and if all else fails - a live human to help. There are a lot of other interesting things we want to do here. One of the ideas I'm very excited about is automated bug fixes. What if we could analyze the thousands of mistakes users have made before you, and use that to suggest a fix to your code? Automated program repair is typically considered unreliable since it's hard to verify a fix, but in our case we've got a rock solid test suite so it's easy to say whether a fix is valid or not.
Simran Jit Kaur
I love the interactive challenges and real-world projects you guys offer. The community aspect is fantastic too. I'm interested to know how the platform keeps up with the evolving tech landscape and provides relevant and up-to-date projects for users.
Sarup Banskota — CodeCrafters (YC S22)
@simranjitkaur For sure. Philosophically, we're lean more towards the mastery of fundamentals (vs. keeping up-to-date with the latest tech). There's plenty of resources for learning new frameworks and tools, and often the best place to learn about them are the documentation sites or learning material provided by their creators. We generally like to keep our focus on the "evergreen" aspects of learning programming — the different ways of designing software, paradigms, etc. That being said, we take great care to support the latest language versions, dependencies, and leverage the best-in-class tech ourselves to deliver the learning experience. A recent example is our AI-assisted explanations feature, which is built using GPT-4. https://codecrafters.io/blog/exp...
Simran Jit Kaur
@sarupbanskota I think it’s smart to focus on the “evergreen” aspect. Using GPT-4 is impressive, and a nice forward-thinking approach that enhances the learning journey. I'm genuinely amazed by the idea and CodeCrafters. Good luck to you all!
Sarup Banskota — CodeCrafters (YC S22)
@simranjitkaur Thank you! Can't wait to see you try it out.
Vishaag
This is amazing. In the sea of tutorials filled with mostly beginner content, this is much needed! My question though, is, how do you decide on the "stages" and the order in which they're presented?
Rohit Paul Kuruvilla
@vishaag good question! The process we use for breaking down challenges into stages is similar to "feature slicing": https://handbook.infinityworks.c.... As an example, in our Git challenge, the first stage is to initialize a repository since that's usually the first step in using Git + it's relatively easy (just creating a few files and folders). Subsequent stages involve more complex features like making commits, cloning repositories and so on. We try to order stages based on difficulty. This isn't always possible though, since there might be features that are simple to implement but only once another complex feature is already in place. We highlight such cases in the app so users know what level of difficulty to expect from a stage.
Eunice Marginel
Is this suitable for developers of all experience levels? Feels a bit intimidating lol
Sarup Banskota — CodeCrafters (YC S22)
@eunicemarginel Great question. If I'm being honest, when we first started out, we didn't think too deeply about which experience level the product is for. As we started getting users, we started learning from them. You definitely need to have programming experience, CodeCrafters is definitely not the right fit as an "intro to programming" platform. But you don't need to be an expert. ◆ At the Eastern Switzerland University of Applied Sciences, CodeCrafters is part of the curriculum for undergrad students to learn and master Haskell. ◆ My favorite customer story ever is of a final college student in the US who had never written a line of Java and had never heard of Redis. But he knew C. During his CodeCrafters adventures, he learnt about what Redis is, picked up Java, and Built his own Redis. ◆ Like I shared in my story, Paul and I hardly knew much serious programming when we set out to reimplement Git in Ruby 10 years back. During the early career level it definitely feels intimidating. But that's also when you stand to gain the most value. You should give it a try ;)
Eunice Marginel
@sarupbanskota Thanks for sharing your insights and experiences with CodeCrafters! It's interesting to learn how the product evolved based on user feedback. The customer story about the college student who learned Java and built their own Redis implementation is inspiring. I appreciate your transparency about the required programming experience. I'll definitely consider giving it a try. Thanks again!
Manjush Vundemodalu
I love CodeCrafters. Very excited about your launch :) I was already pretty good with Python, but decided to attempt CodeCrafters' challenges one weekend. It was just the right balance of difficult, yet encouraging. Not too easy to be trivial, not too hard to be frustrating. The system of automated tests and the ability to learn from other's solutions is basically unparalleled. Rooting for you guys, and I hope companies look into such innovative solutions vs the cookie cutter video platforms.
Sarup Banskota — CodeCrafters (YC S22)
@manjush_vundemodalu Thanks Manjush. When you already know a language, I feel CodeCrafters is a great way to opportunities for mastery. Really appreciate your kind words and support!
HS Yang
@manjush_vundemodalu @sarupbanskota may you say more about what the system of automated tests is and how it helps?
Manjush Vundemodalu
@sarupbanskota @heythrive Basically when you push code to CodeCrafters, they run your code against a test suite (this test suite is open source btw, which is so cool). At times on the CLI response you can see what could have caused your code to fail. I've tried doing similar projects but through tutorials, and in the absence of tests, it's very easy to get lost and not know what to do. Causes me to abandon the project altogether 😂
Sarup Banskota — CodeCrafters (YC S22)
@heythrive @manjush_vundemodalu Manjush explained it much better than I ever could! :)
Cayter Goh
Congrats on the launch! How did you guys go about building this? What's your tech stack like?
Rohit Paul Kuruvilla
@cayter_goh thanks! Our web-app is pretty standard - a Ruby on Rails backend, Ember.js front-end. The interesting components are the ones that handle executing tests based on Git pushes. We need to keep these test runs super fast, so that the feedback loop is quick. Our median test result time (for early stages) is 3 seconds - that includes receiving a Git push, running tests and streaming results back to the client. We do this by maintaining Firecracker VMs (the same technology behind AWS Lambda) for executing tests on each repository - these are cheap to keep around, and they boot in under 300ms. We initially built all of this in house, and then 3 months later Fly.io released their machines product: https://fly.io/blog/fly-machines/, which did pretty much exactly what we were doing but with elastic pricing & reliability benefits for us. Moving to Fly Machines reduced our costs significantly + I no longer worry about being paged at night 😅
Ruhi Mahajan
Kudos! Do you guys also offer certificates at the end of the course?
Rohit Paul Kuruvilla
@ruhi_mahajan thanks! We don't offer traditional certificates, however: ◆ Users get profile pages, like this one: https://app.codecrafters.io/user.... Users often to link to this from their LinkedIn profiles, for example. ◆ Users can publish their repositories to GitHub through our app - we automatically keep the repository updated with their progress and a cool animated banner on top. More on this here: https://codecrafters.io/blog/github, https://codecrafters.io/blog/ban.... ◆ We offer custom letters on demand
Ruhi Mahajan
Wow! This could help them get hunted by headhunters like me :) I'll keep an eye on such GitHub repos for my prospects now.
Vera Rose
The idea of recreating popular developer tools from scratch in a variety of languages seems like a unique and immersive way to learn. 👏 Congrats on the launch!
123
•••
Next
Last