At Masteringbackend, we get more ideas for features than we can build. Some of them are good. A few of them would sell well. Most of them don't get built, and we needed a consistent way to explain why.
Masteringbackend is a career engineering platform, not a course library. The difference is what we're accountable for. A course library is finished when the material exists. We're only finished when somebody can do the work, which is why everything on the platform has to move a learner through one of 3 phases: Learn, Build, and Grow.
That architecture decides what gets built. These 6 standards decide whether what gets built is good enough to ship. Every feature, course, and page gets checked against them, and anything that fails one gets cut or rewritten. This post walks through all 6, with a real example of each one being applied and what it cost us.
How We Decide What Ships
Here are the 6, and what each one means for the people learning on the platform.
- Depth over hype. If we can't answer the obvious follow-up question about a claim, we don't make the claim. When we say an exercise is graded, we can say exactly what grades it.
- Outcomes over content. If a lesson doesn't move a learner closer to being hired, it gets removed, even when it's popular. This is why our catalog is smaller than a bigger platform's.
- Real work, real standards. Learners don't mark their own work as finished. Something has to check it first, the way a colleague reviewing a pull request would.
- Earned confidence. Feeling ready and being ready are 2 different things. Parts of the platform are built to tell a learner when they aren't there yet.
- Integrity over shortcuts. A certificate anyone can earn by watching videos isn't worth showing to an employer. Ours can't be earned that way.
- Career impact first. Revenue cannot override outcomes. When the two pull in different directions there's a written procedure for it, and the outcome wins.
Written down like that, they're easy to agree with. The useful part is what happens when one of them says no to something we wanted. That's what the rest of this post is about.
1. Making Every Claim Survive a Follow-Up Question
Almost every learning platform makes some version of the same promise: your work is graded automatically. It's a good sentence. It's also the kind that stops working the moment somebody asks about it.
Graded by what, exactly? Compared against which answer? What happens when a learner solves the problem correctly but in a way nobody anticipated?
Most marketing copy has nothing waiting behind those questions, because it was written to be agreed with rather than checked. So we ask ourselves the follow-up before a claim goes out. If we can't answer it, the sentence doesn't ship.
Here's that test applied to how we describe exercises. Learners write code in the browser in 13 languages, the submission runs on our servers, and each check reports back as it finishes. The pass or fail is computed, never declared by the person who wrote the code. If somebody asks the follow-up question, there's an answer waiting. Every exercise is graded by one of 3 methods, and we publish what they are:
- OUTPUT_MATCH. We run the program and compare what it prints against what the exercise expects. Useful when the task is about producing the right output.
- FUNCTION_CALL. We call the function the learner wrote with specific arguments and check what it hands back. Useful when the task is about one piece of logic working correctly.
- TEST_CASES. We run a real test suite against the code, using the same test runner that language uses in production. Go uses
go test, Python usesunittest, and Node usesnode --test. This is the closest thing to how work gets checked on a real engineering team.
Every one of those answers can be checked by anyone who wants to. That's the test a claim has to pass here.
The same rule governs what we don't say. We don't publish learner counts, completion rates, or salary outcomes, because we'd be asking people to take our word for numbers only we can see. We publish the mechanism instead and let anyone verify it themselves.
What it costs us. Bigger promises sell better. A competitor can put an average graduate salary on a landing page, and we can't, because we have no way to prove a number like that. Their page will convert better than ours, and we've accepted that.
2. Making a Project Worth More Than a Video
Nearly every learning platform is built around content volume. More hours, more modules, more lessons, because that's what wins a comparison table. We went the other way, and the clearest place to see it is the points system.
Points are where our real opinion lives. Here is what each activity is worth, and why:
- A video is worth 10 points. Watching is where a topic starts. It isn't evidence anyone can do the thing yet.
- An article is worth 10 points. The same as a video, for the same reason. Reading about a thing isn't doing the thing.
- An exercise is worth 50 points. The learner wrote code and a machine checked it. That's 5 times a video, because something outside their own head confirmed it.
- A quiz is worth 100 points. The material has to be recalled with the lesson closed. Retrieving something from memory is much harder than recognizing it on a page, and recall is what an interview asks for.
- A project is worth 200 points. A working system got built and tested. This is the closest thing on the platform to the job itself.
One project is worth 20 videos. A path certificate is issued at 70% of that path's required points, so the arithmetic settles the argument before anyone has it. Nobody watches their way to a certificate on Masteringbackend, because the numbers don't add up.
The same standard governs the catalog. Content that doesn't exist yet doesn't get listed. There's no placeholder to enroll in and no title that opens onto an empty page. The backend learning paths only show steps a learner can start today.
What it costs us. Video is the cheapest thing we produce and the easiest thing anyone will ever consume, and we've made it worth the least of anything on the platform. Our catalog is also shorter than it could be. We lose that comparison on purpose.
3. Removing the Self-Marked Task
We define a toy project as any project where the person building it decides whether it worked.
That definition does more work than the word "real" does. Plenty of tutorial projects look serious. They have a database, a README, and a folder structure. What makes them toys is the last step, where the learner compares their screen against a screenshot and awards themselves the win. Nothing in that loop can say no.
In the backend project playground, which is where the Build phase happens, that last step works differently. Here is what happens when a learner finishes a task:
- A real server boots in the browser. Not a simulation of one. An actual process, listening on a port, running the code they wrote.
- They click Run test. The platform sends a genuine HTTP request to that running server, the same way any client would.
- The response gets graded against the task's contract. The contract says which method and path to handle, what status code to return, and what shape the response body should be.
- The task completes only if the response matches. Once a task has a contract behind it, the Mark as complete button isn't hidden or grayed out. It isn't rendered at all.
Terminal projects close the same loop from the other side. The learner writes a program, passes it input they chose, and gets graded on what the program actually prints.
Some projects still contain tasks we haven't written a contract for yet, and those tasks still carry a Mark as complete button. It's there because the alternative is a task nobody can ever finish, not because self-marking has become acceptable again. The button comes off a task the moment that task gets Run test, and removing the last of them is the goal.
There's a second limit worth knowing about, on the grading itself. Run test checks the structure of a response, not the values inside it. If the contract asks for an id and an email, a hardcoded response carrying those keys will pass. The grader can't catch that. An interviewer's follow-up question will.
What it costs us. Terminal grading currently supports Node.js and Python entrypoints. That's 2 languages, not 13. We could cover the rest by tomorrow if we let people tick a box instead of running their code, and we won't.
4. Letting the Platform Disagree With the Learner
It's easy to feel ready. Sitting through lessons, following along with code that already works, and watching a progress bar fill up all produce a sense of competence, and none of them test it.
Feeling ready and being ready only line up once something has checked. So parts of the platform are built to push back, and to tell a learner when they aren't there yet.
- The MB League can demote people. Each week a learner is placed in a cohort of up to about 30 others at their own tier, across 5 tiers. Finish near the top and they move up. Finish near the bottom and they move down. A leaderboard where nobody can fall is a scoreboard for showing up, and we didn't want one.
- Mock interviews, the core of the Grow phase, score every answer separately. The report comes back with a score and notes against each answer given, not one number at the end. Some of those scores are low, and reading them is the entire point of sitting a mock interview before the real one instead of after it.
What it costs us. Demotion and low scores are both unpleasant, and unpleasant experiences show up in retention numbers. A version of this platform that only ever congratulated people would be more comfortable to use and worth considerably less.
5. Making a Certificate Worth Showing
Most course certificates certify attendance. Everyone knows it, including the people receiving them, which is why so few of them get read.
There are 3 things that make ours different:
- They're issued on points, not completion. A learner needs 70% of a path's required points, and given the weights above, that total isn't reachable by watching. Things have to get built.
- Anyone can verify one without an account. Every certificate has a public URL and a QR code. A recruiter can check it in a few seconds without signing up for anything or taking the candidate's word for it.
- The work behind it lives somewhere the learner owns. Project code commits to a GitHub repository in their own account. Their portfolio page is public and readable when logged out, so the link they send opens to shipped work rather than a claim about it.
What it costs us. Every one of those decisions moves proof of a learner's work outside our platform, where we don't control it and can't require an account to see it. The version where verification lives behind a login would keep more people on the site.
6. Choosing the Learner's Outcome Over Our Revenue
The rule is one line: revenue cannot override outcomes. When revenue, growth, or a partnership conflicts with learner outcomes, 3 things follow in order:
- Outcome integrity takes priority over revenue. The question isn't reopened or split down the middle. The outcome wins, and the commercial argument stops there.
- The affected product or initiative is paused. Not flagged for review, not shipped with a caveat, not left running while a decision gets made. It comes off.
- It stays paused until it's redesigned. Leadership has to rebuild the thing so the conflict no longer exists. Only then does it come back. If it can't be redesigned, it doesn't return.
What Counts as Breaking the Rule
There are 4 things that break it automatically, however well they happen to be performing. Each is a different way of making the platform look better than it is:
- Shipping shallow or misleading content. Covering a topic thinly enough to list it on a page, but not deeply enough for anyone to use it afterwards.
- Inflating outcomes. Reporting results in a way that makes them look better than they were, whether by choosing a flattering definition or leaving out the people it didn't work for.
- Lowering technical standards. Making something easier to pass because too many people were failing it. The failure rate is information, and this treats it as a problem with the test.
- Promising results the system can't deliver. Advertising an outcome the product has no actual mechanism for producing.
When one of these happens, the product is taken down. It doesn't get patched and left running.
Why the Other Five Standards Depend on This One
Every standard on this page costs money, and each cost is easy to name:
- Weighting a project at 20 times a video means the cheapest content to produce is worth the least on the platform.
- Refusing the self-mark makes tasks harder to finish, and harder to finish means fewer people finish.
- Publishing certificate verification that works without an account sends people away from the site to check it.
- Letting the League demote people makes the product less pleasant to use in the week somebody drops a tier.
At a company where revenue settles disagreements, every one of those decisions goes the other way. That's not a criticism of those companies. It's just what happens when nobody wrote down which side wins in advance. We wrote it down, so the argument is already over before it starts.
What it costs us. Every commercial decision now has a step in it that can stop the decision, and stopping is expensive in a way that agreeing never is. It also removes an option most companies quietly keep, which is handling the conflict case by case and calling it judgment. Once the procedure is written down, not pausing stops being a judgment call and becomes a decision to break our own rule.
Masteringbackend is built for self-taught and junior-to-mid backend engineers who want a career in this. Anyone looking for a shortcut, a faster certificate, or a platform that agrees with them is in the wrong place, and we'd rather they learned that from this page than 6 months in.
What These Standards Mean if You're Hiring or Teaching
If You're Hiring a Backend Engineer
The reason we grade work by machine instead of by self-assessment is that it produces evidence somebody outside the company can check. A Masteringbackend certificate is issued on points rather than attendance, and it can be verified at a public URL or by scanning a QR code, with no account and no request to us. The projects behind it sit in the candidate's own GitHub repository, so what gets read is their commit history rather than our description of it.
You'll also notice we don't publish placement rates or average salaries, and that absence is deliberate. Those figures are easy to produce and almost impossible for anyone outside to check. We'd rather hand over something verifiable and let it be judged.
If You Want to Teach Here
The same 6 standards govern instructor work, and they're why our approval process takes longer than most. A course has to belong to Learn, Build, or Grow before anything else gets discussed. Project tasks have to be gradeable by something other than the learner's own judgment, which means writing a real contract for each one rather than a description of what the finished thing should look like. Material that produces no measurable career outcome gets removed later, however well it performs while it's up.
If that reads as restrictive, it is. It's also the only reason a certificate from here is worth anything to the employer in the section above.
Summary
These 6 standards decide what's allowed to exist on Masteringbackend. Claims have to survive a second question. A project is worth 20 videos because that reflects what actually moves a career. Endpoint tasks are graded by the platform rather than by the person who wrote the code. The League can demote people, interview reports can score them low, and certificates are verifiable by anyone without an account.
Each one costs us something, and that cost is the only real evidence the standard exists. You can see what we've shipped against them in the Masteringbackend changelog, and if you think we've broken one, write to us at [email protected].
