Placement without labels
Self-select a level or use a future short placement workout. You can combine blocks when prerequisites are met and revisit a focused refresher without restarting.
CodeStamina is planning a catalog of deliberate practice for developers—from first programs to system-wide decisions.
The five levels are starting guidance, not job titles or a universal rank. Choose by the outcome you want and the experience you have in that subject.
THE PLANNED CATALOG
The topic inventory below is planned curriculum, not a claim that every workout is available. Today you can try one complete guided TypeScript exercise without signing in.
01
Create a small program from a clear brief, check its behaviour and explain how it works.
Understand how instructions turn inputs into observable results.
Run a small program and distinguish output from an error message.
Work with text, numbers and booleans using meaningful names.
Calculate values and express conditions clearly.
Choose behaviour with if/else and simple decision rules.
Repeat work with explicit stopping conditions.
Split a task into small reusable operations.
Track where a value is available and when it changes.
Inspect, format and transform simple text.
Store ordered values and process each item.
Represent related information with named fields.
Recognize that absent data and empty data can mean different things.
Predict results by following execution step by step.
Use errors and small examples to locate a mistake.
Check normal cases and a few important boundaries.
Turn a short requirement into manageable steps.
Make a small solution easy for another person to understand.
Combine the level's skills in a converter, validator or summary tool.
02
Turn a small feature brief into understandable, typed and tested behaviour.
Describe values and let inference remove unnecessary repetition.
Define clear shapes for inputs, outputs and shared data.
Represent alternatives and handle each possibility safely.
Make absence explicit and choose sensible fallback behaviour.
Preserve useful type information in simple reusable helpers.
Transform collections without obscuring the intent.
Organize records and retrieve the right information.
Understand shared objects and avoid accidental mutation.
Turn external text or JSON into checked application data.
Handle common representation and calculation mistakes.
Divide a small feature into understandable responsibilities.
Follow asynchronous work and handle its result.
Understand requests, responses, status codes and response validation.
Distinguish expected invalid input from unexpected failure.
Acquire and release resources without leaving work unfinished.
Describe expected behaviour through focused checks.
Preserve a bug fix with a test that catches the original mistake.
Use reproduction steps and observations to test a hypothesis.
Improve clarity while checking that behaviour stays the same.
Understand diffs, make focused changes and explain their purpose.
Build a validated data-processing feature with tests and a short handoff.
03
Diagnose realistic defects and preserve correct behaviour under boundaries, asynchronous changes and partial failure.
Preserve distinctions between missing, empty, zero and false values.
Define ordering, identity and duplicate handling explicitly.
Separate usable data from conflicting or invalid inputs.
State the conditions a component must always preserve.
Separate retryable failures, permanent failures and cancellation.
Make bounded retry decisions without repeating unsafe work.
Distinguish waiting limits from completion and failure semantics.
Stop obsolete work and release resources consistently.
Prevent older work from overwriting newer state.
Bound parallel work and account for success and failure.
Process repeated requests without unintended repeated effects.
Make valid transitions and terminal states explicit.
Catch realistic defects without rejecting valid alternative solutions.
Control time and completion order to reproduce difficult cases.
Isolate a behaviour without testing an unrealistic imitation.
Check general rules across varied inputs, beyond hand-picked examples.
Simplify implementation while protecting observable contracts.
Recognize which callers depend on existing behaviour.
Choose observations that explain a failure without exposing sensitive data.
Combine validation, asynchronous control and tests in an unfamiliar task.
04
Improve a service or application using explicit design, performance and operational tradeoffs.
Keep responsibilities clear and changes contained.
Change an interface while supporting existing consumers.
Represent business rules without scattering them through unrelated code.
Handle defaults, overrides and invalid combinations predictably.
Put relationships and integrity rules into a coherent data model.
Preserve correctness when several operations modify shared data.
Change stored data while considering compatibility and recovery.
Explain slow access patterns and choose targeted improvements.
Use workload evidence to locate costly work.
Recognize leaks, unbounded collections and expensive allocation.
Balance reuse, freshness and failure behaviour.
Prevent incoming work from overwhelming processing capacity.
Preserve useful behaviour when a dependency is unavailable.
Distinguish identity from permission and enforce access consistently.
Identify unsafe trust assumptions and reduce unnecessary exposure.
Connect logs, metrics and traces to questions about real behaviour.
Form hypotheses, reduce impact and verify recovery.
Check component interactions and interface expectations.
Plan incremental change and a workable recovery path.
Improve an existing service and justify correctness and operational checks.
05
Compare system designs, investigate ambiguous failures and plan safe evolution under real constraints.
Explain which guarantees a workload needs during failure.
Reason about loss, duplication and repeated effects across boundaries.
Handle late, missing and out-of-order information.
Reason about competing workers and changing ownership.
Recover from partially completed multi-step operations.
Distribute work while accounting for uneven demand.
Relate workload assumptions to limits, headroom and expense.
Trace how local pressure can spread across a system.
Test failure assumptions with bounded, purposeful scenarios.
Define recovery needs and verify that restoration is usable.
Compare options against explicit constraints and consequences.
Replace or improve old components in manageable steps.
Plan coexistence, reconciliation and cutover across systems.
Balance shared resources with tenant boundaries and fairness.
Identify valuable assets, trust boundaries and plausible abuse paths.
Turn uncertainty into questions, assumptions and testable decisions.
Make reasoning understandable enough to challenge and revisit.
Compare ownership costs, constraints and exit options.
Convert a failure into prioritized improvements beyond the immediate bug.
Defend a design, respond to a failure scenario and revise the proposal.
FIRST RELEASE
This focused block sits within Level 3 and assumes Level 2 readiness. Three short workouts a week practise boundaries, async behaviour, failure handling and verification.
Completing these 12 sessions does not mean completing all of Level 3. Follow-on blocks cover the rest of the planned level.
Week 1
Repair a transformation and identify missing and empty values.
Week 1
Build a grouping utility with explicit identity and ordering rules.
Week 1
Catch a realistic boundary defect while accepting correct alternatives.
Week 2
Distinguish retryable, permanent and cancelled outcomes.
Week 2
Prevent an older asynchronous result from replacing a newer one.
Week 2
Apply a capped retry policy with predictable time inputs.
Week 3
Preserve cancellation and cleanup across asynchronous steps.
Week 3
Simplify branching while preserving externally visible behaviour.
Week 3
Handle duplicate event identities without duplicate effects.
Week 4
Combine validation, failure handling and a small feature.
Week 4
Apply the skills to an unfamiliar reserved task.
Week 4
Review fresh evidence and select a continuation or refresher.
A FLEXIBLE ROUTE
Self-select a level or use a future short placement workout. You can combine blocks when prerequisites are met and revisit a focused refresher without restarting.
Meaningful curriculum changes will become a new edition. Learners should be able to finish their chosen edition or move deliberately, while completed work stays visible.
Short workouts introduce, predict, solve, verify and explain. Later reviews use a different context so activity and independent capability are not confused.
These are expansion directions, not launch commitments. Each needs a complete outcome and usable learning material before it is offered.
Rebuild fluency with a baseline, supported practice and gradually reduced scaffolding.
Rotate practised skills, unfamiliar variants and delayed checks.
Practise reproduction, test design, asynchronous failures and diagnostic evidence.
Cover semantic HTML, CSS, accessibility, browser behaviour, state and UI testing.
Cover HTTP, validation, persistence, transactions, queues, caching and reliability.
Practise collections, search, sorting, recursion, trees, graphs and complexity.
Work with trust boundaries, access control, data handling and threat modelling.
Transfer familiar concepts into a new language or ecosystem.
Explain generated changes, challenge assumptions, find defects and verify results.
FUTURE DIRECTION
CodeStamina may let people arrange available topics into a private route, then share clear editions with attribution and transparent coverage.
Original community material, review labels and curation would come later. This is a direction we want to learn about, not a feature available today.