Milestone map
Milestone map
3 milestones
Automate a Manual Deployment Process
3–5 weeks (8–15 hrs)
Identify a deployment or infrastructure task that is currently done manually and automate it using a CI/CD pipeline or infrastructure-as-code. The automation must be production-relevant — not a toy project — and must reduce a repeatable manual process to zero steps. Acceptable examples: automating test + build + deploy on every pull request merge; converting manual server provisioning to Terraform or Ansible scripts; replacing a manual environment setup checklist with Docker Compose or a Makefile. The automation must be committed to version control and must run without human intervention.
Proof required
Submit a GitHub repository (or a link to the pipeline config in an existing repo) showing the automation scripts or config files, a pipeline run log or screenshot proving it executed without human input, and a 200-word description of what was manual before and what the automation eliminates.
What gets checked
- Pipeline run log or screenshot shows a successful automated run with no manual steps — a config file alone does not prove the automation works
- The 200-word description names the specific manual steps that were eliminated — 'it automates deployment' is not specific; 'eliminates the manual step of SSHing into the server and running git pull + pm2 restart' is
- The automation is committed to version control and could be reproduced by someone else reading only the config files
Common mistakes
- Automating a process that does not matter — a deployment pipeline for a personal project no-one else uses has lower credibility than automating a real team process
- An automation that still requires a manual trigger other than code merge (e.g. a script someone has to run manually) — true CI/CD is triggered by code events, not humans
- Config files with hard-coded secrets — any secret in version control is a security failure regardless of whether the automation itself works
Resources
Foundationstart here
Depthgo deeper
What a verifier looks for
- Push a trivial commit to the repository and observe the pipeline run without any manual steps — if it requires manual input, the automation is incomplete
- Check the config files for hard-coded secrets — any credential in plaintext is a disqualifying security failure
- Ask the submitter what happens when the automated pipeline fails — error handling and alerting are the indicators of production-readiness vs toy automation
- Ask what was the most difficult part of the automation — genuine automation work always encounters unexpected environment or permission issues that required debugging
Build Observability Into a Running System
4–6 weeks (10–15 hrs)
Add meaningful observability to a production or production-like system: structured logging, metrics, and at least one alert. The system must be running — not a local development environment — and the observability must provide genuinely actionable information, not just data. Minimum requirements: structured logs (JSON format, not plain text) with request IDs that trace a user request through the system; a dashboard showing at least 3 key operational metrics (error rate, latency p95, and one business metric); at least one alert that fires when something is genuinely wrong (not a test alert).
Proof required
Submit a screenshot of the dashboard showing all 3 metrics with real data, a log sample (3–5 lines showing the structured JSON format and request ID tracing), and a screenshot of the alert configuration with the condition and notification channel. Include a 150-word description of what each metric measures and what the alert fires on.
What gets checked
- Dashboard shows real production data — not sample or synthetic data; dates and values should be consistent with a real running system
- Log sample shows a request ID (or trace ID) that appears in every log line for a single request — this is the minimum for structured tracing
- Alert condition is on a real operational signal (error rate > 5%, p95 latency > 2s) not a trivial test condition (CPU > 1%)
Common mistakes
- Adding logs that emit raw text strings — structured logging means machine-parseable JSON; grep is not an observability tool
- A dashboard that shows system metrics (CPU, memory) but no application-level metrics — operational observability requires application-level signals
- An alert that was configured but has never actually fired — confirm the alert fires by triggering the condition deliberately and documenting the notification
Resources
Foundationstart here
Depthgo deeper
What a verifier looks for
- Ask the submitter to explain what each metric on the dashboard measures and when it would indicate a problem — if they cannot answer without referring to documentation, the metrics were added without understanding
- Trigger the alert condition deliberately during the review session and confirm the notification arrives — an alert that has never fired is not a working alert
- Check the log sample for request ID propagation — ask the submitter to find all log lines for a single user request by searching by request ID
- Ask what the most painful production incident was that the new observability would have detected faster — genuine observability work is driven by past pain
Present Your Infrastructure to a Senior DevOps Reviewer
1–2 weeks (60 min session)
Walk a qualified reviewer through your M1 automation and M2 observability: a DevOps engineer, SRE, or platform engineer with 5+ years of production infrastructure experience. The reviewer challenges your design decisions (why this tool, what happens when this component fails, how would you scale this to 10× the current load), identifies one reliability risk they see in your current setup, and presents a hypothetical incident (a specific failure mode) that you must reason through using only the observability you have built.
Proof required
Submit the reviewer's written assessment: the design decision they challenged and your response, the reliability risk they identified, the hypothetical incident and your step-by-step diagnosis using your actual observability setup, and their sign-off confirming their role and a live session.
What gets checked
- Hypothetical incident diagnosis uses the actual dashboard, logs, and alerts documented in M2 — not a general description of how you would investigate
- Reliability risk identified by reviewer is a real gap (not a configuration detail) — a risk about what happens when the CI runner goes down or the database has a slow query
- Reviewer sign-off confirms 5+ years of production infrastructure experience (SRE, platform engineering, or DevOps in production environments)
Common mistakes
- Incident diagnosis that describes general debugging principles rather than specific steps using the specific observability tools built in M2
- A reviewer who is a software engineer with some DevOps exposure rather than someone who owns production infrastructure
- Design decision challenge response that describes what the tool does rather than why it was chosen over the alternatives
Resources
Foundationstart here
What a verifier looks for
- Prepare the hypothetical incident by reading the M2 observability setup first — it should be a realistic failure scenario (a slow database query, a memory leak, a failed deployment) that the submitter's specific dashboards and alerts would surface
- Ask the design decision question about a specific tool choice that has an obvious alternative — 'why GitHub Actions over CircleCI?' tests whether the choice was considered or just default
- Reviewer minimum qualification: 5+ years of production infrastructure ownership in a team context — not just personal server management
- Ask the submitter what they would add to their observability setup before going on-call — this tests whether the M2 work produced genuine operational thinking