Hacker News new | past | comments | ask | show | jobs | submit login
Launch HN: CodeCrafters (YC S22) – Practice writing complex software (codecrafters.io)
403 points by rohitpaulk on Aug 4, 2022 | hide | past | favorite | 206 comments
Hey everybody, it’s Sarup and Paul, founders of CodeCrafters (https://codecrafters.io). We make 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.

For example, if you did our Git course, you’d learn how Git internally stores file data by building an implementation of Git that can clone a GitHub repo. If you did our SQLite course, you’d end up with a SQLite implementation that can read a valid SQLite database file, and retrieve data by performing an index / full-table scan on it. The projects you’ll build are always end to end compatible with the official spec. Given the same input, your program would behave the same way the official one would.

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, JetBrains, Emacs, etc).

This last point in particular—our git-based workflow—is something customers repeatedly tell us they enjoy. We run our own git servers, and have server-side post commit hooks configured to run tests on every push. These post-commit hooks also send back logs to users, with colors to indicate pass/fail, errors, etc. Our feedback cycle for popular languages like Go, Python, JS often takes ~2.5sec (including pushing code, running tests, and streaming back results), faster than even regular GitHub pushes. We do this by executing code within firecracker VMs and caching aggressively wherever possible.

As open source contributors, we’ve always been interested in the internals of software we use day-to-day. When Paul became an Engineering Manager for a team of 12, he decided to conduct in-person “Build your own Redis” workshops as a way to engage his team and help build skills. He had a mini-curriculum, a physical leaderboard for scorekeeping, and a Slack channel for discussing solutions. Participants loved it and wanted more. With CodeCrafters, we’ve essentially built an expanded version of that workshop experience on a website—for engineers and teams that want to challenge themselves, dive deeper, and grow.

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 what we’re supplying.

So far, we’ve seen developers and teams use CodeCrafters to learn the internals of complex software, master programming languages, onboard devs in a new language, and even as a continuous team-bonding activity.

If you’re a developer, we’d love for you to try CodeCrafters. Most customers expense the subscription through their learning / professional development budgets. If you need help convincing your manager, feel free to email me — sarup@codecrafters.io.

Paul and I are excited to continue helping software engineers become the best technical version of themselves. We'd love to hear your ideas, experiences, and suggestions. What new courses should we add? What other formats of learning have you found to be effective?




I love the idea of this, and I disagree with others about the price being too high. If you're in the US/Canada/UK and planning to spend even a couple of hours per month using this to further your skills and career, then the value of your time investment will exceed your cash outlay on the subscription.

That being said, I wonder whether you've considered offering a student discount for bona fide students? You could do this via sites like Unidays or StudentBeans. You can rely on their process for verifying students, instead of just accepting anyone with an edu email address (which are sometimes available to alumni).

I'm sure some of the folks doing online CS degrees at WGU and Georgia Tech would be interested in this.


I'll go further and say that a high price is a great way to screen out the worst customers.


You mean like a private country club? An elitist software product, yeah, I can definitely see that succeeding...


If you're not making bank as a software developer you're either not a very good one, or you care more about the craft than the money. The first group would give you terrible reviews because they are hopeless in general. The second would give you terrible reviews because you didn't include enough content on cubical type theory.

Either way you're better off without them.


A sub-100 USD per month professional subscription is elitist? Have you worked in any other professional field? Finance, academia, medicine, law, etc. This is certainly not elitist nor overpriced for its value.


Yep, don't want those uppity poors having any assistance to upward mobility my good chap /s


It's not really the job of a business to provide upward mobility unless they explicitly make that part of their business model. Everything else being equal you'd rather have customers who pay more money per head than less.

They also expect that a lot of their customers will be subsidized by their employers.


Yes, exactly like that.


I have to admit our highest paying customers are among our kindest :)


How about genuine customers from lower-income countries?


I've touched on the topic a little more here: https://news.ycombinator.com/item?id=32345899


Ooh, super interesting. Thank you! We weren't aware of Unidays / StudentBeans, indeed sounds like something we should explore. We have organically seen students sign up — so I'm sure a more favorable pricing to them could go a long way.


FWIW the GitHub student developer pack allows age 13+ (unlike Unidays and StudentBeans) and supports high school students (unlike Unidays)


There's also SheerID which is what Spotify uses to validate student IDs and is IME better than Unidays.


how do you rate the online CS degree at WGU?


Price point I feel is too high for specifically what it is offering.

A general point I would make.

In education: cost is a barrier of entry - a smaller ask might yield far more results from people in disadvantaged situations able to scrabble up ladder. A rising tide raises all ships.

You are doing work creating the material and course work - I'm not saying release stuff for free. but $80/mo is something to bat an eye at for a lot of people that would otherwise be interested in this.

I would price it at $40-60, with maybe an intro month at $20. the $60 price point is a video game: which fits in my mind as roughly the value you seem to be offering per month. but I don't actually know how much time each course takes - thus the range from $40-60.

that's just my two cents.


They don't mind if you do it on your own for free: https://github.com/codecrafters-io/build-your-own-x

> a compilation of well-written, step-by-step guides for re-creating our favorite technologies from scratch


This is amazing! Thanks for sharing


Makes sense, but if there is a slack channel where people are supposed to be responsive and answer technical questions, then that's value beyond just material and course work. And given there is a community, if you set the price too low you start to get spammers and people that are not truly interested in the content, bringing down the value of the community in the first place. I think the price is fair.


Counter-intuitively, a free community adds more value by attracting people of all levels. Paid communities attract beginners (who are incentivised to pay for education), but not experts ("Why am I paying for a Slack channel?"). Spammers are easily handled by enforcing community rules.


Hard disagree. There is incentive to pay for education (particularly the type offered by CodeCrafters) regardless of experience level, but the more engaged, more motivated, more mindful personality types will be more likely to make the connection that it's well worth the investment.

A free community is going to have more lurkers that aren't engaged, aren't committed, and may post one thing if they even post at all, before slithering away. Drive-by-comments would be more common. It would not add value, it would be like most of the rest of the public Internet.

Additionally, you might have missed this from the OP:

> 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.


It seems like they are specifically targeting engineers at big co's with learning budgets rather than people paying out of pocket. Much cheaper than sending an engineer to a conference


True. From our research and speaking with customers, many tech companies have learning / professional development budgets in the range of $500-$5000. Often they're trust-based, and self-directed, so engineers are free to spend them on whatever they feel helps them most with their growth.


I think the reason that the charge is that high is because they are targeting 1. people who are already in the field i.e. employed and have source of income and 2. people who are serios about it.

Just my $0.02.


I think the reason that the charge is that high is because they are targeting big corp's training budgets

FTFY


Hmmm ... i think that could definitely be a part in this too.


People who are in the field will not have time for this.


I don't think this type of resource would be all that helpful for people trying to scrabble up the ladder. They would almost certainly be much better served by countless other resources.


If you are already a professional developer though, it's also questionable what is the added value. I'm willing to trust them that the quality is top notch, but it's basically a glorified tutorial; I have to agree with GP that the price point is way too high.

I think they're targeting professional developers with self-training/learning budgets. I'd be totally down for this if my company were willing to pay the time and subscription cost. I'd certainly rather do this than some F-tier shite about Agile or whatever.


Indeed, you're spot on!

Our current target is professional developers and teams with learning budgets.

Here are some reasons why experienced engineers have found value (the first expensed it, the second didn't):

1. One customer manages the Redis team at an infra company, and they used CodeCrafters as a starting point to get up-to-speed on Redis internals — to be able to do their job better. We ended up getting feedback from them on areas we could dive deeper on, to be useful to platform engineers in general.

2. A Distinguished Engineer at a Fortune 500 had built a database product before, and wanted to pick up a new language (Java, if I remember right). So they did our course because they preferred the "learning by doing" approach, and existing resources felt a bit too "hello world / todo-app"-ish.


The value is many devs know how to do their work but many might not know enough of the intricacies to build their own Redis for example. I do full stack and while I can make a website with a corresponding API, I don't know enough to rewrite Redis which includes more low-level backend knowledge than a typical fullstack engineer might have, so this would be useful for me.


From a customer call I had last night —

They were 4 years into their job, and felt that their job was mostly cobbling together a bunch of frameworks. Nothing wrong with that, but they constantly had the itch of not knowing how the pieces really tie together.

Their next goal is to explore platform engineering roles, which involves work that is one level lower in the stack.


Genuinely curious (both of us founders come from the early stage startup world where ladders are not in place yet) — what are the top resources for engineers trying to go up the technical ladder?


Thanks for your suggestion!

I've touched on the topic a little more here: https://news.ycombinator.com/item?id=32345899


I think the prices are more or less in line with what they're offering. Based on the descriptions I expected low-to-high triple digits, which is in-line with Arden Labs golang training.

The subscription model is a bit annoying, though, I'd prefer to spend a bit more to get lifetime access to sets of tutorials so that you can come back to it at any time in the future. The future upsell would be new tutorials sold to existing users. And it'd be nice to be able to buy it sliced either by language or by target. Most likely someone is learning Python so then they want to buy the Python set of courses, then they come back later and they're learning Go so they buy the Go set of courses, etc.


Thanks for your feedback here! While we don't offer lifetime plans currently, our quarterly and annual plans are one-time.


It looks good, I probably would have pulled the trigger, but I'm going to be AFK for three weeks coming up with no electricity or running water... Did bookmark it to come back to it though.


This looks very promising, I think it could be a great resource for companies that want to invest in training their developers, but don't have the resources to build a curriculum themselves.

> What new courses should we add?

The courses you have already are good, but are quite low-level. To broaden the applicability perhaps you could also try something like "build a REST API that matches this OpenAPI schema" (getting persistence working properly could be an interesting challenge). Going further, I wonder if it's possible to do a course like "build a web app that does X" (Realworld or TODOMVC are possible values of X), using browser automation to test. This is probably very hard without manual review. (Scoped broadly enough, this could be solved with a server-rendered framework or a client-side framework.) Common engineering/craftsmanship problems here are authentication, persistence, navigation, performance tuning, perhaps log-wiring, etc.

More generally, I'm wondering if there is a good open-source option as a competitor / baseline comparison? As others have noted, Leetcode is one common source of study exercises, but it's quite annoying to work with as you need to submit code in the browser rather than using your IDE. I'd love to see a repo with exhaustive test cases for the things you're building; for example low-level algorithmic exercises like "exhaustive tests for binary search tree" or higher-level "build a git client" like CodeCrafters offers. Being able to step-debug through failing test cases is always going to be more realistic training than the Leetcode workflow.


Thanks for the ideas — you're right that automating the UI-oriented testing is more difficult. We're already piloting some ideas in this area (e.g Build your own React) — but the current focus is on perfecting what we have.

Our testers are all OSS. Here's our git tester for example — https://github.com/codecrafters-io/git-tester.

Others can be found on our GitHub org. https://github.com/codecrafters-io

We need to do a better job of exposing links to testers in our in-app UI — good feedback!


"Build Your Own React" (or Next) would be fantastic, especially because in so much of JS, there's like 500 wrong ways to do something and no clear best practice for us less skilled devs.

Your format seems awesome but the languages you offer all seem really backend/devops focused.


Build your own React is in the works :-)


I’d love to try “build your own React” in wasm (Rust or Python could be cool). Typescript would be fun too of course.


Request: build your own search engine, build your own Unreal (or game engine), build your own TikTok (the recommendation part is tricky), build your own Ethereum (the VM is interesting).


Great ideas! We’ve had quite some interest in game engines, gotta look into it


This is a great idea, I’ve had a slightly different one that could be added to this that is a different type or programming more within your application. Examples of this off the top of my head you should know are caching, login, image uploading direct to s3 and resizing, event driven systems, scaling stuff with the dynamo db/Cassandra style of writing out denormalised views etc. So instead of concentrating on software that already exists outside of your application for me it would be super helpful to absolutely have down all the different parts of logging in and auth, for example. Good luck with the continued development of Code Crafters, it seems like a really awesome idea with loads of potential!


All good ideas! Thank you for your appreciation!


This concept seems great, and I work for a very large company shown in the "trusted by" section. I also noticed that you have a quote from an engineer at my company who does not exist in the company directory or on LinkedIn. I cannot find any information about a subscription on our intranet. Are the companies shown in the "trusted by" section actually subscribers, or are these placeholders for now?


> Trusted by engineers at top companies with learning budgets

They probably have one guy at a company and add it, based on a survey/form where people could in theory lie about where they work or add previous positions if they're unemployed. Note the companies aren't subscribers, an 'engineer' from that company is a subscriber.


Indeed, you're right — it's companies where our engineer customers work. It's been a while since we looked at that list tho, so it probably could use a refresh!

For some companies on that list, we do have more than one engineer subscribing, and for in many cases we've spoken to them to learn about their motivations and feedback. We also have a Private Leaderboards feature for teams.

In the past few months, a nice small win for Paul and I is what we like to call the "Slack Share Effect".

It's when one of our users shares CodeCrafters within their company Slack, and then we notice multiple new users that work at the same company. When we get in touch with them, I always enjoy asking "how did the OP describe CodeCrafters on Slack?" and 100% of the time, I discover that customers do a better job describing CodeCrafters than we ourselves could. It's also how we uncover use-cases :)


Fwiw I like the idea and will look at subscribing myself later. These are projects I see as magic and would love to know more about, especially Docker and SQLite.


That gives me an idea for a tagline! "We explain the magic"


Thanks for the kind words!

The logos highlight companies where our customers (the engineers) work. Since we're early stage, so far it's more common for engineers to discover CodeCrafters, sign up by themselves, and expense it to their company. That might explain why you can't find information about subscription on the intranet.

We also do have cases where we work with companies to land team subscriptions, so if you'd be interested for us to engage with your company, feel free to drop me a note — sarup@codecrafters.io, and I'd love to help. It might be that the person you couldn't locate has moved on from the company, but I don't have a good explanation for why you couldn't find them on LinkedIn :-D If you emailed me, I could ask them and find out for you (for references, etc) — for most listed on the website, I've been in contact with them :)


It seems kind of disingenuous to show companies logos, when it could just be a random employee- let alone using the phrase "trusted by".


Really nothing disingenuous here. “Trusted by top companies with learning budget” is pretty damn clear and accurate. All in the same font, so there’s no “fine print” argument to be had either.


I've also listed out some of the folks with public CodeCrafters profiles from some the highlighted companies here (Cloudflare, Docker, AWS, Stripe, Microsoft, Vercel, Sourcegraph) — randomly selected.

If you look them up, you'd get a sense for their background / role, etc :)

https://news.ycombinator.com/item?id=32351531


You should remove the company logos. I work at Cloudflare and this seems like false advertisement.


oh come on guys. "Trust by" sections are pure marketing bullshit. I wonder who really takes a step back and thinks about whether they are real or not. Welcome to Internet.


Thanks for clarifying! I got excited that maybe there was a corporate subscription in place.


Of course! Please feel free to drop me an email, I love working with engineers to get their companies team accounts. It's even more fun with colleagues :)


The price for 3mo doesn't seem high to me at all IF that ought to be enough to complete a single project with 1-2h/day. Coding books cost upwards of $50-80.

So I would prefer a per project pricing. And a trial that doesn't require credit card.

Awesome idea! I'd love to contribute somehow.


Def enough time to complete a project with 1h/day, and you can also do it in "super deep dive mode" to take full advantage of the experience. We've definitely seen engineers do that.

For example, we're now starting to introduce source code walkthroughs. Here's one going over how the Redis event loop is implemented — https://app.codecrafters.io/walkthroughs/redis-event-loop.

So as you build out your Redis project, you can study in parallel how the official source does it, learn some cool facts, and overall spend more time developing fluency with the Redis docs.

One of the ways you could contribute is adding language support. If one of our courses doesn't support one of the languages you work with, you can add support for it here — https://github.com/codecrafters-io/languages.


I like the idea but the price seems very high and it’s not even for continued access but a subscription for a limited time.

The kind of experienced engineers you are targeting are also the people capable of doing this kind of learning on their own. But if someone’s employer is paying for it then it helps expedite the learning because of the guided process you guys provide.


If it's done on my spare time, I don't have time to create proper test suite, proper CI... This is done for me by CodeCrafters. It helps save a lot of time.


Agreed!

One of the things we also hear frequently is: "I don't know what to build"


They're not "experienced engineers" but I could see this being useful at the new grad/early career level - where people can code (and leetcode) but there's maybe a need for a more guided class-like experience, especially when it comes to breaking down tasks and working on a larger piece of software.


Good assessment, lines up quite accurately with what we're seeing. In our post, when we said "experienced engineers", we meant more "folks with programming experience" and less "pro" users :) We've updated the post.

When we first started out, we didn't pay any attention to guidance at all, and instead focused entirely on the "challenge" aspect. At that time, it was less common for early career engineers to try out the product.

We've evolved a bit since, and now it's common for us to also see early career professionals, support engineers at devtool companies, bootcamp grads, etc. From time to time, we come across Engineering Managers who'll do our modules as a way to "stay in touch" with programming (and picking up a new language they'd been itching to learn — e.g Rust).

We're probably not suitable for someone new to programming, but otherwise all other levels are welcome and find value.


Something like this for compilers would be amazing. There's a lot of folklore knowledge around compilers and programming language implementation that isn't easy to learn on your own. A hands-on implementation based course would make it a lot more accessible.


It's on the cards! And a course on grep drops next week. https://app.codecrafters.io/courses/grep/overview


Read 'Crafting Interpreters' by Bob Nystrom (free online).

It teaches step by step how to write a compiler/interpreter, very approachable without dumbing down.


I’m quite familiar! It still only scratches the surface. I’d love courses on type checking, incremental compilation, concrete syntax trees, query based compilation, optimization, register allocation, multithreaded garbage collection, LLVM, etc. There’s so many topics and so little high quality instruction out there.


Great book. A lot of our customers mention it, in addition to (unrelated) Designing Data-Intensive Applications. There's also http://aosabook.org/en/index.html


Depending what you mean, but simple compilers are very straightforward. The output might make you want to cry, but they're still compilers. There's less magic than you think. There are also lots of books out there about writing them.

Correction: there is no magic in compilers. Like Elixa, when you understand them they become totally mundane.


Would those who downvoted me care to mention what upset them so about "simple compilers are very straightforward" and where I was wrong saying compilers are comprehensible things, not etheric miracles beyond the ken of us bipedal apes.


I think a bigger value I see with your product is replacing leetcode challenges with something like this. We often give take home assignments to our potential candidates and this would be a great fit, if the platform had features around code evaluation, ephemeral environment with seeded data that would be great. I think that is quite a big market too.


also check out https://hackattic.com/ it has some really fun problems


Glad you mentioned this - Hackattic was in fact one of our early inspirations to start CodeCrafters :) I thoroughly enjoyed going through the challenges there: https://hackattic.com/u/rohitpaulk.


Honorable mention: https://cryptopals.com/ for cryptography problems.


Experienced devs won't bother with your LC exercises but you now want them to implement SQLite or redis? Good luck with your recruiting!


Good insight, we've been suggested that using CodeCrafters for onboarding engineers increases your overall talent pool (hire language agnostically, then internally train engineers in your target language).

In the absence of leetcode-style challenges, what do your current take-home assignments look like? Do they test for skills specific to your domain, or are they agnostic?


Key thing we look for in a candidate is the ability to solve real world problem. We are an early stage startup, so most of the people we hire has to a broad spectrum of knowledge which I think is hard to capture with leetcode. Ideally we would like to capture their networking skills, programming skills, operational skill, understanding computer science basics etc. I think we would definitely pay subscription for a service like this as lot of grunt work is currently is done by us.


check out https://codesubmit.io/.

You can link a custom repo to it, pretty amazing experience all around.


This looks really awesome, and as someone who loves reading source code (and works in OSS full time), this is my ideal way to learn.

The price seems sensible as long as the quality is high. The question I'd want answered before asking my employer to pay for it is how complex it can get. There's certainly value in a Redis that takes 3 hours to build, but there's a lot more value in the 30-50 hour version where you have to think through design tradeoffs and dealing with hard edge cases. It's the more complex version that I'd ask for my employer to pay $80/month for.

For context, I've been in industry for 8 years and work on the Airflow OSS project as my day job.


Thanks James! We're just getting started, and the current thinking is that we'll add depth to our courses along different "branches". e.g after you've been through the basic stages of Redis, you can continue along a path to dive deeper within the persistence aspects of Redis, or the networking aspects.

You can preview the current stages for each of our courses here: https://app.codecrafters.io/tracks/go. You can do a trial to get a feel for the learning experience. If you find that the current stages aren't at the complexity level you're looking for, you should keep an eye out for future updates (would also love to hear what other stages / branches you'd suggest for our courses)


Awesome, thanks for the info!


Since most developers started programming because they dreamed of becoming a game developer, you should create a course to create a game engine by yourself. It sure would gain a lot of success.


Great suggestion! I'd take that course :-D


Congrats on the launch!

I've finished three of the challenges so far and I can highly recommend it. They make it very easy to get started and the automated tests are just super slick.

It's just such a good learning platform where you'll have to figure out stuff on your own, yet Paul was always very helpful on their discord in case I got stuck or hit technical issues.

Looking forward to the grep challenge!


Thanks for your continued support Bert!


Thanks Bert!


How long does it take to develop new challenges with support across all of the languages you have? And how scalable is that process? This looks super cool, and a fun way to spend some of an education stipend (that for me mostly goes unused) but I'm not sure how many times I'd want to re-implement git in additional languages.

At the moment it looks like there's git, redis, docker and sqlite as challenges (that have varying support for different languages) with a regex parser, http server, shell, bittorrent client, and react up as future candidates, if I've read the site correctly.


You're read correctly about the challenges available. A new one ships next week!

Today it takes us ~2 weeks to build the "core" parts of a challenge (planning, stage instructions, tester etc). From then on, the changes are incremental (adding support for more languages, better hints/instructions, getting experts to provide feedback on solutions etc).

Hard to say how much time the incremental changes take because they’re done over a span of months, but it’s definitely work. At times our community pitches in to add language support: https://github.com/codecrafters-io/languages

Paul also did a series of tweets when we were building the SQLite challenge if you’d like to see what the challenge-building process is like: https://twitter.com/RohitPaulK/status/1421517393780740100


This looks great!

What languages are supported? Are the tests language agnostic, or is the coursework specific to a subset of languages? I see reference to Rust, Go, Python and JS...but am unsure if this would be useful for something like Clojure, where I can produce JS, JVM or compiled code, that could be tested against, but wouldn't expect an imperative pseudo-code explanation of an algorithm to be helpful for explaining a functional solution.


Thanks for the great question. We support ~14 languages at the moment and are working on adding more. You can visit our tracks page (https://app.codecrafters.io/tracks) to see the courses available against each language.

As a 2-person team, we're prioritising making a complete experience for Go, Python & JS for starters (our most popular languages).

So far, our tests are language agnostic. Our testers are written in Go (they’re open source, example: https://github.com/codecrafters-io/redis-tester). The testers interact with user code by testing for observable behaviour - exit codes, stdout/stderr, files written etc.

Although the testers are language-agnostic, a lot of the educational “content” is language-specific. We emit language-specific hints in stages where appropriate, and have expert solutions that are language-specific. A lot of this is new, so we might not have coverage across all challenges - this will improve over time.

Does that help explain our setup a little better?


Looking at your tracks page, is there a part of your site that explains what the differences are between Beta and non-Beta Tracks as well as what the stage counts signify? Or maybe just something in the FAQ that explains what your concept of a "stage" is in detail would be useful.

For example, why is Rust in Beta while Go isn't despite having the same number of stages? I'm assuming the determination is made based on something else, but do you go into what that is?

Rust is probably the language I'm most interested in using your site to learn and it currently has as many stages completed as Go (according to your tracks page), but you didn't mention it in your list of priority languages. Are stages user-contributed? Is that why Rust has more stages than Python or JS?

Is there anything that would stop a user from using any language without major impediments or hurdles?

Sorry for all the questions. I've just been really excited about seeing this platform develop!


Great questions. If you see that a language track has a particular course available (e.g Docker on Rust track), it means it's good to go. There are no hurdles to going through the stages. When a track is marked as beta, it typically means that the solutions & explanations for some stages on that language are coming soon — or that it doesn't have all the 4 courses supported in that language yet.

You might also enjoy checking out our OSS repo where any one can contribute language support. We prioritise supporting different languages based on user demand, but if you want to get your hands on a particular language right away, we accept PRs from the community. https://github.com/codecrafters-io/languages


Thank you! This was very helpful!


This looks awesome! Since moving to a smaller company, I miss being able to learn new things from more experienced engineers.

This also satisfies the itch to learn a new language by building something really interesting, and not just another Todo app.


Thanks for the kind words! We kind of stumbled into the language learning insight.

In the early days, we'd find folks sign up to do CodeCrafters because they had a "niche" job that involved knowing Redis or Docker internals (typically platform engineers at infra companies).

However, we saw that there were a set of engineers that would do all of our courses, then do redo some of them in different languages. We initially thought that to be strange (why re-learn the internals once you've already done it) — and they clarified they were in fact looking to pick up a new language.

Possibly my favorite customer call till date is a final year college student who didn't know what Redis was, had experience with C but none in Java — and within a few weeks times, he had learnt about what Redis was (and a bunch of backend concepts while he was at it), then it's internals, while learning Java at the same time


Have you heard of Rustlings? It's a series of exercises for Rust that teach you the language as you do them. I just finished that recently and this reminds me of that, except more complex. Now that I've done Rustlings which is for beginners, I have a high interest in doing something like CodeCrafters.

Perhaps for other languages which don't have a Rustlings equivalent, maybe you could add something like that for beginners as well as your more complex challenges. If I were to rewrite Redis to learn Rust, that probably would have been too complicated a project, but having a guided beginner course before the complex projects makes more sense to me.


Rustlings for other languages seems like a really good idea, thanks! Were you doing Rustlings as part of onboarding at a new job / project, or as a hobby?


As a hobby, I do full stack in JS mainly for work. You could take a look at exercism.io as well, although some of their questions are more like Leetcode rather than teaching the language which is not the way to go I think.


indeed, Exercism is a good resource — but our approaches are pretty different


This is neat. Although I’m not a huge fan of subscription payments where you lose access once you stop paying.

I’d happily pay a few hundred dollars and have access to it years later.

Like the way we bought books and software CDs a while back. You buy, you own it.

Not everything needs to be a subscription unless it is a truly recurring service where every month there is value add.


Agreed. Who likes "talk to sales" :)

We have a pricing page — https://codecrafters.io/pricing, and do have it linked on our menu and footer. Would that help?


Quick note here: the original comment mentioned that our pricing page was hard to find, that's what Sarup's reply was addressing. Looks like it was later amended to talk about subscription payments.

Re: subscription payments, only our Monthly plan is a recurring subscription, the 3 Months / 1 Year plans are one-time payments. A "lifetime access" plan isn't sustainable for us at the moment since we need to keep servers (including test runners) up and running.


Pricing seems fine, that’s a drop in the bucket for developer education—my learning stipend at my first tech job (this was pre-IPO) was over $1000/year. Investing in quality education is a price willingly and even eagerly paid by those who want to grow. Bet a large swathe of immigrant parents would approve, too.


My Indian Mom thinks the pricing is outrageous


That is funny. Seems frugality vs. education is the unstoppable force meets the immovable object.



This looks phenomenal. Next time I have a break from work I would love to work through one of your courses. Thanks for sharing, and best of luck building your business!


Thanks for the kind words!


Can't wait


This looks really good but "Build your own ... SQLite" is a bit amazing, does that mean a full SQL interpreter right down to the B-trees? That is a looot of work, too much really. Unless you pull stuff off the shelf like apache calcite perhaps (never used it).


I did the SQLite challenge in two languages and it's a very small subset of SQL. For instance it's sufficient if you're implementation of WHERE only accepts equals expressions with a column name on the left and a string value on the right.

But the great thing about their challenges is that they have you build some kind of sandbox that you can experiment on top of and try expand it with more features.


From the course: "In this challenge, you'll build a barebones SQLite implementation that supports basic SQL queries like SELECT. Along the way you'll learn about SQLite's file format, how indexed data is stored in B-trees and more."

So yes for B-trees, but it seems to end with SELECT and a basic WHRERE query, no joins or anything like that


I was excited to try the Clojure track, as I have been planning on learning Clojure soon but couldn't get it to work. I attempted to start the free trial a few times and was redirected to the Go or Redis track repeatedly. So couldn't try it really.


I think we know what happened there (our message for the "close" button on the trial modal was confusing), and we've fixed it.

Please give it a try once more?


Nope, still happening. Can't start the Clojure track. It sort of circularly redirects back to start a free trial and can't actually start the track.


Haven't been able to gather much from our logs - I've emailed you (used the email on your HN profile), will get to the bottom of this!


The concept seems cool and the price seems reasonable if the quality is high. But how does this translate to value for subscribers? It seems like the company is treating curation as the core value prop but I see it as more of a means to some end.


Great question. We see customers try us for both types of value (short-term means to an end, as well as long term continuous investment).

Some use-cases we've heard from customers:

1. Onboarding oneself into a new language (for experienced engineers, learning syntax is relatively straightforward — it's the idioms, standard libraries, etc that they need exposure to)

2. Team Hackathon / general engagement — Our company leaderboard and Slack app (available to teams) offers an element of "friendly challenge" and collaboration, and teams seem to enjoy that as a way to learn new skills together. Developers are naturally curious people — so more opportunities to bond over ideas, approaches, facts, are always appreciated.

3. Prepping towards roles in platform engineering — either as general skill development for confidence, or interview prep


Is this targeted at companies? Sounds right up my alley but the pricing is a bit steep.


We're targeting engineers with access to company-provided learning / professional-development budgets. From speaking with customers, we're seeing companies offer employees between $500-$5000 in annual allowances.

Which course intrigues you most? :)


Are there pricing options for developers that aren't in this position? The platform looks great, but $80/month on a personal subscription feels really steep.


Thanks for your appreciation! I've touched on the pricing topic a bit here https://news.ycombinator.com/item?id=32345899


It’s generally just the largest and highest prestige tech companies that pay for $80/month worth of training for their employees. I suspect the price is a barrier not only for the median dev, but even for the median American dev. It’s likely a bit of a barrier even for the 20th percentile dev living in the US.

In other words, if the quality of this offering is excellent, it will be a powerful example of the Matthew Effect. The best compensated 5-10% of mid-level devs will pull further ahead.

I can definitely see going for the corporate training budgets as an appealing business model, though.


Yeah, I'd love to use this service. Some of the challenges are really cool sounding. That said, I don't even pay $80/m for my IDE, and that's a critical tool I can't go without at this point.

One data point I learned being a programmer in the American South was that companies generally did not pay out for things like conferences, education (aside from college) etc... If you want to serve those folks (and I suspect there's a lot of them!) then the price point might need to be different.


You've appealed to me. I'm continuously learning to become better. My next self goal is to add sharding and replication into SQLite.

Question - Can you share an example with me - how would you teach someone to use OOPS (inheritance/composition), design patterns, and SOLID principles - to better structure code for maintainability, enhancements?

One of my personal philosophies is to write less code, but still achieve as much if not more.


Our general approach to this is "Show, don't tell".

We feel the ideal way to learn design patterns and SOLID principles isn't to read about them or be told that they're good. It's to make the mistakes yourself and then see how things could be cleaner had you used one of those techniques. Much like code review. You first do things your way, then a reviewer points out how this could be better if you did XYZ instead.

In our product we cover this by offering "Expert Solutions" for each stage. You'll see a code diff (compared to the previous solution), an explanation for that code diff (_why_ were things done this way, what were other alternate approaches), and where possible we even offer a source walkthroughs of the official codebase you're re-creating (the Redis source code, for example).

We have previews of all these features in the demo video: https://codecrafters.io/videos/demo. You can see the solutions in-app without starting a trial, just navigate to the Redis course, click on a stage and then click on "View Solution". And here's an example of a source walkthrough: https://app.codecrafters.io/walkthroughs/redis-event-loop.


I signed up for the year subscription.

But that's not actually what I want. I want a one-time payment because I know I'm terrible with these recurring subscriptions. I know in a year I'm going to be like "damn, I didn't cancel that??"

Could you please implement non-recurring purchases? Or at least, enable it for users who ask.

Speaking of which, could you make my purchase non-recurring? My username is the same as HN.


Thanks for signing up, excited to see what you build! Our quarterly and annual plans are both one-time, so you should be good! I also verified your details on Stripe and can confirm this.


I misinterpreted what Stripe was telling me. It said something like "you're agreeing to allow Codecrafters to charge you recurring fees". I realise now it was just the charge after the 3 day trial.


All good! Glad it's sorted!


The “trusted by engineers at” massive list of Top companies seems very suspect and fishy for a “Launch HN”.

It feels dishonest. Where is the proof of that?


It's understandable it feels that way. That list is actually old, and we should have added a lot more now.

Here are some randomly-chosen examples of engineers at my fav developer-oriented companies:

Cloudflare — https://codecrafters.io/users/AkshataDM

Docker — https://codecrafters.io/users/rumpl

AWS — https://codecrafters.io/users/JohnHVancouver

Stripe — https://codecrafters.io/users/shaldengeki

Microsoft — https://codecrafters.io/users/vladtenlive

Vercel — https://codecrafters.io/users/jaredpalmer

SourceGraph — https://codecrafters.io/users/daxmc99

You get the picture :)


Sarup touched upon this a bit here: https://news.ycombinator.com/item?id=32344751.

Summary: All the logos listed are genuine (i.e. engineers from those companies have signed up and used CodeCrafters). In most cases we've also spoken to these users either over Zoom or in-person.


How is it compared to JetBrains' https://hyperskill.org ? They seems to be competitive products.

PS. HyperSkill's pricing is also more competitive. They offer tons of tracks containing hundreds of coding projects at the price of 240$ per year, while CodeCrafers' charge is 790$ per year.


We last looked at JetBrains academy ~6 months ago and at the time it mostly had beginner-level content. Looks like they've got some advanced content now, like this one: https://hyperskill.org/projects/112?track=2.

I'd consider them a competitor, and I like their approach - hands-on project-based learning with automated tests to guide your implementation.

I think the primary difference (aside from their content being slightly skewed towards beginners and the limited languages on offer) is that our format involves re-creating devtools from scratch.


Why do I need to authorize you with my GH in order to see your track's contents? I would recommend opening the curriculum so a potential buyer can preview whether the product is right for them

I think this is an interesting idea. I find it hard to justify paying $80/mo for an extended period of time for just Git, Docker, Redis, and SQLite clones though. You'd need a plethora of content to have me stay for more than a month to simply power through it all. $80 is even a lot for just those considering there are easy to find tutorials for these. The real selling point is having a lot of modules colocated and I am merely paying for convenience and manicured delivery rather than novelty


Thanks for your recommendation! You're right, us developers are naturally curious people and we need to feed that curiosity.

We're collecting interest on some upcoming challenges here https://vote.codecrafters.io, with a new one launching next week!


This is a really cool idea! I may check this out.

One concern I have is that it looks like you're having people rebuild Unix command line tools. Tools which have a tendency to look at the world in one particular way. Unfortunately, that way is not very good to users. I'm really concerned about how many different programming courses, from boot camps to graduate level CS courses, push this narrow view of programming. I'd like to see some more variety in the ways that programming is taught. Have you considered bringing in projects that have graphical user interfaces or that use different paradigms than those espoused by Unix?


Thanks for your question. If I understand right, you mean for example projects that involve a frontend web component?

That's on the cards (e.g we have Build your own React on the pipeline). There are unique challenges to making that experience predictable, so we're focusing on the "console-based" projects for now. There's also often a "subjective" nature when reviewing/testing UI so we need to think through the ideal feedback workflow for courses with frontend components.

That said, I do wanna highlight that these courses do cover a lot of ground. I look forward to your feedback once you manage to get your hands on it!


> If I understand right, you mean for example projects that involve a frontend web component?

Ack! No! I mean native applications written in styles other than the prevailing Unix way of writing native applications. It can be any other form, just something that's well written but not using Unix-isms.


I was pleasantly surprised to see support for Nim as a task language! very cool! Particularly considering your target market of developers with corporate education budgets, I expected a much smaller set of mainstream languages.


Thank you! Our language support mechanism is OSS, and we welcome community contributions. It's designed in such a way that you don't strictly need to have knowledge of the course material to be able to add support for a language.

https://github.com/codecrafters-io/languages/blob/master/doc...


Looks great, honestly would have loved something like this back in university!


I'm glad we didn't have it, or it wouldn't strike us to build this! :-D

Jokes aside, completely agree! Some customers tell us they think of CodeCrafters as the "missing semester" once they've started working.


Getting a Rails "The page you were looking for doesn't exist." When trying to login with Github currently.


Thank you for flagging, looks like you hit an edge case. We've pushed a fix, please try again?


Sounds cool but without being able to actually try a full course out, there is no way to know if I'll enjoy it.


Maybe they should make one course free to use like create your own git and access to other would be payed.


Agreed, learning styles are different for everyone, and it's important to be able to try things out. We've added a 3-day trial for you to experience what it's like — looking forward to seeing you on the leaderboard!


The 3-day trial is only on $700 annual memberships though! I'd very much try this out on a 3-day trial if it's then only $70 a month afterwards. $700 in one go means I have to ask the wife and you'll miss out on a sale there ;)


Argh, I'm so sorry, our pricing page should have been clearer (fixed now).

The trial is available on all plans, so no need to ask the wife!


Haha cool, then you have a sale later today :)


What is you're "Hello, world... again" project? for the trial?

Maybe you have a small trial project for each language which you support, allowing for a quick evaluation with real results?


I think doing the first 2-3 stages of any course is usually a good enough to understand the core for the learning experience. The later stages tend to get more involved (e.g the last stage of Git & SQLite are rather tricky for most).

Good suggestion regarding having trial projects for every language, we'll consider that.


I felt the same too. A 3-day trial is not enough to try out complex software.


I Like your line of thinking a lot, but miss my area of work: scientific programming. You would make money with people willing to move to Julia! Also "seasoned" is a descriptor for someone that likely does not need your product, but right now I cannot think of a better synonym.


Sorry, I missed responding to this comment sooner. If you remember at all, where did you notice the usage of seasoned? We used to say that in the past (and still think that's relevant), but just wondering if we forgot to update copy somewhere.

Did you mean to say we should serve the audience that wants to learn Julia?


I saw the term seasoned in the website. I think Julia is a business opportunity, I'd pay for it!


Love this idea. I'll give it a shot if I ever need to learn Redis. I'm a FAANG iOS dev who's guided a few people from 0 to dev job, so I was curious to see if you had a Swift track but it looks like not yet. Would love to hear if that's on the roadmap or not!


We don't currently have Swift yet (not a highly requested language yet) but I just wanted to highlight that our language support mechanism is actually OSS.

https://github.com/codecrafters-io/languages

Also, I wouldn't actually say we're the best resource to learn to use Redis (the Redis docs are probably more ideal) — we focus on helping you create your own version of Redis from scratch, so that you understand the fundamental pieces behind building a project like Redis. Same for Docker, Git, etc.

We do have a lot of users that actually discover Redis on our site, and do the learning Redis + building it out in parallel, often times while also simultaneously learning a new language!


Love the concept, and could see myself really benefitting from this as a self-taught developer.

That said, I agree with most everyone's assessment that the price-point is a bit too high.

Is providing different pricing schemes for companies/hobbyists/students something you're looking into?


Thanks for the kind words, and I appreciate your interest!

Our long-term intention is indeed to be able to help anyone who's interested to learn and grow regardless of their financial situation.

We also realise that not everyone has access to a learning budget. As an early-stage company, our pricing reflects what our current target audience is comfortable paying, and is also a test for long-term sustainability. Over time, we hope to be able to overcome pricing-related hurdles and enable broader access.


Having parity pricing option might help developers from lower income countries like India.


It would be nice if companies offered free trials without requiring a credit card number. There's really no reason to grab this other than to hope someone forgets to cancel the trial after 3 days and you catch a quick autopay b/c of it.


The etc.. seems to imply you support more languages than Go Python and Rust. Do you support C#?


Yep! We support 14 languages, C# included.

https://app.codecrafters.io/tracks — full list here!


Great idea, any plans for more complex creations? Git/Redis/Docker are excellent 101s but it'd be cool to see this solid format applied to more technically challenging projects. Though I appreciate it's targeting juniors.


Next week a new course is dropping (Build your own grep — which involves building a Regex Engine). Some more upcoming ideas are here: https://vote.codecrafters.io/

What would some examples of projects that'd be suitable for your skill level?


The grep one sounds pretty fun actually, it's less about "skill" imo and more that I'd love to see your concept expanded to some of the less travelled parts of programming. Runtime linker/loaders, compilers, display drivers, VMs, VMMs, symbolic execution stuff. Maybe a build your own eBPF course or clangd?


Looks super cool but I agree that the price point is high. Maybe not in the US/Canada, but I live in Mexico and it’s just not something that I can spend the money on even with a learning budget that usually only cover some % of the course.


Thank you for your appreciation! I've touched upon the pricing topic briefly here https://news.ycombinator.com/item?id=32345899. Would you mind reaching out to me with how your %-based learning budget works? It'll be a learning experience for me, and perhaps we can find ways to help you out.

sarup@codecrafters.io


Congrats on the launch! I've been using CodeCrafters for a year now and am a huge fan of the product. One problem I had was finding proper documentation/guidance for when I got blocked. Beyond the Discord are there any plans to unblock users?


Thank you for your kind words!

Until a few months back, we were focused solely on the "challenge" aspect of the product. Based on customer feedback, we've been making new features available that offer more guidance when you're stuck — a 2min preview is available on this demo video — https://codecrafters.io/videos/demo.

1. We show you expert-vetted code approaches for different languages in each stage, and also explain the interesting / difficult parts in the approach.

2. For further inspiration & knowledge, we now also include source walkthroughs for many of the stages, which link to how the official implementation does it. Here's one for Redis, which explains how the PING command is implemented (stage 2 of Redis). https://app.codecrafters.io/walkthroughs/redis-ping-command


A little micro-suggestion on videos: record the narration separately from actually doing the computer work. I.e., do NOT record the keyboard clacking. It's super annoying to some people. Like me. Thanks.


Thanks so much for flagging! Sorry the keyboard sounds were annoying — I almost thought that was the highlight of the video :)


Lots to improve on the videos front - thanks for the suggestion!


That look's perfect, great job!


This is awesome but the only way I would be able to afford it is if my company paid for it. I'd have to make a case for prof. dev. anyway to add some sort of certification to it? HR really, really likes certificates, degrees, etc. for PD.


We do have user pages.

Here's an example of a real user's page, who's in-progress: https://codecrafters.io/users/jaredpalmer

And some examples of "completed" users: https://codecrafters.io/users/eyalfoni https://codecrafters.io/users/byarr

Do these help? Please feel free to drop me a brief note (sarup@codecrafters.io) and I'll be happy to help you write a compelling case for PD and also explore certificates.


I'll ask and see.

I just renewed my CPR/First Aid they took a photo and added it to my profile with the expiration date. And it was my name and the date literally scribbled on cardstock.

It might be pedant but even a simple PDF with name, date, and subject taken would probably satisfy HR. They are rigidly loose like that.


Gotcha, I got this. I'm happy to spend some time on Figma hand-crafting a super slick certificate for you. Just reach out and ask!


This is super cool, and helps fill a hole I had always been frustrated by during my own self-education.

I am curious to know approximately how many hours the courses take, and if you can share anything about which future courses you have in the works?


We see a pretty broad spectrum, also because different people do the project in different "modes". Some want to breeze through as fast as possible, others want to "audit", some want to do a thorough deep dive.

I've seen folks spend weeks deep-diving on courses spending an hour or so per day (writing code, refactoring it, going through the official sources and studying them, etc). Part of the fun is reading the official docs, and that can be a treasure hunt at times.

You can see for indication of upcoming course ideas here: https://vote.codecrafters.io/

Build your own Grep launches next week!


If only the market cared about this and not soley leetcode.

Looks cool though, I will likely try this out.


Do you think you could sell this to enterprises to help onboard employees?


That is in fact one of the core use-cases. Hiring language agnostically increases your talent pool, especially among early career engineers.

We’re seeing interest in adopting CodeCrafters as the on-boarding & continuous up-skilling product :)

Curious why you asked, do you see a use-case at work? Feel free to email me too (sarup@codecrafters.io)


congrats on the launch!

I'll definitely be trying the rust course over a free weekend.

Is there a way to opt out of the leaderboard, hide it? This sort of 'challenge-ification' is strongly not for me.


We don't have an opt-out yet, but we'll certainly consider. Curious — why isn't the 'challenge-ification' desirable to you? It feels pressurising? Please feel free to email me if you prefer to keep it private! sarup@codecrafters.io


(sorry for the slow reponse. lack of notifications from HN)

> It feels pressuring?

Exactly. These sorts of things always end up demoralizing to me. I'll never be on there, there's always a bigger kid on the playground - but having it shoved in my face daily isn't a positive reminder. I can't commit the time, money, intelligence, et c. Let me go at my own pace and not feel bad for being slow :)


Congrats, Sarup and Paul on the launch of CodeCrafters! :)


Thanks timou!


I love the idea!

The pricing, not so much. When I think about what that money gets elsewhere (e.g. Pluralsight), IMHO your pricing is 2x what it needs to be.


Server not found. Hugged to death? Hacked?


Hugged to death, but it was brief :) Should be back up now!


Seems to be down again?

edit: Oh, no. It just isn't accessible from my company's network for some reason.


Strange - what do you see when “down”? Is there an error screen?


I just get a "Connection timed out" from my work's network. Works fine on my phone's mobile connection.


This looks really promising especially for companies which want to invest in training their developers!


We love playing a role in helping companies that are invested in the growth of their developers! Since this launch, we've been getting inbound from developers keen to work with us on getting a pilot with their companies.

We're excited to be help developers get a CodeCrafters subscription through their companies, so if that applies to you, please reach out! sarup@codecrafters.io


I might be interested in this. Saved!


Can't wait


wow, I'm looking forward to trying out the redis workshow


Looks really useful!

BTW: Who did come up with this webdesign style? You see it all over the place this year. Was it Vercel?




Join us for AI Startup School this June 16-17 in San Francisco!

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: