Tools do not transfer skills
You can hand a team a clean repository, versioned modules and a plan-on-pull-request pipeline and still end up with fragile infrastructure six months later. The code decays when nobody on the team understands why it is shaped the way it is. People copy patterns without the reasoning, approve plans they have not read, and fall back to the console when something urgent breaks.
Terraform training and code review is how knowledge actually moves from our engineers to yours. It is the closing piece of our Terraform and infrastructure as code service, and arguably the part that decides whether the rest lasts.
What good looks like
- Several engineers, not one hero, can change infrastructure confidently.
- Pull request reviewers read the plan, not only the diff.
- There is a written standard for how Terraform is structured here, and new code follows it.
- Mistakes are caught in review, and when they slip through, the response is a process fix.
- New hires are productive within days because the repository teaches by example.
Training that uses your code
Generic courses teach syntax. Your problem is applying it to a specific estate. Our workshops are built from your repositories and your history, so every exercise maps to a task you will repeat. A typical programme includes:
- State and backends: what state is, how locking works, and what to do when it goes wrong. See remote state setup for the design behind it.
- Reading plans: spotting replacements, in-place changes and unexpected destroys. Many incidents come from plans that nobody read properly.
- Writing and using modules: inputs, outputs, composition and versions, from the reusable modules work.
- Importing and refactoring:
import,movedandremovedblocks, done in a sandbox first. - The pipeline: how a change travels from branch to apply, and what to do when it fails.
- Failure drills: a stuck lock, a corrupted state version, a surprising provider upgrade. Practising them calmly beats meeting them at 2am.
Sessions are hands-on. Engineers make changes in a sandbox account while we watch, ask questions and let mistakes happen where they are cheap.
Code review as the main teaching tool
Review is where standards spread. We join your pull requests for an agreed period and comment in a way that teaches: what the risk is, why it matters, and what to do instead. Compare:
- Unhelpful: “Don’t do this.”
- Useful: “This security group allows 0.0.0.0/0 on port 22. Anyone on the internet can attempt SSH. Restrict it to the VPN CIDR or use SSM Session Manager instead, as in the network module.”
A review checklist we use and leave behind
| Area | Questions a reviewer asks |
|---|---|
| Plan | Did I read it? Any replacements? Anything destroyed that holds data? |
| Blast radius | Is this the right stack? Could it affect other environments? |
| Security | Encryption on? Public access blocked? IAM scoped to need? Secrets absent? |
| Interfaces | Are variables typed and described? Are outputs minimal? |
| Reuse | Should this use an existing module, or become one? |
| State | Are moves handled with moved blocks? Any manual state edits? |
| Operations | Is it tagged, monitored and documented? Cost impact understood? |
The checklist becomes a pull request template. Where rules can be mechanical, we push them into tooling: terraform fmt, tflint and security scanning catch the routine issues, leaving humans to review design.
A small pre-commit configuration keeps the basics out of review altogether:
repos:
- repo: https://github.com/antonbabenko/pre-commit-terraform
rev: v1.96.1
hooks:
- id: terraform_fmt
- id: terraform_validate
- id: terraform_tflint
- id: terraform_docs
Pin the rev to a current release when adopting this, as hook versions move on.
Practising on a real plan
One exercise we use often is a deliberately flawed pull request in a sandbox. It renames a resource without a moved block, widens an IAM policy and changes an immutable argument on a database. Engineers review it using the checklist, and we compare what they caught with what the plan actually shows. The point is not to trap anyone: it is to build the habit of reading the plan line by line, and to show how a small-looking diff can produce a large destructive plan.
Decisions and trade-offs
Workshops first or review first. Where the team has never used Terraform, workshops come first. Where they already write it daily, review alone may be enough, and a long workshop wastes their time.
Who reviews. We prefer two reviewers early on: one from your side who owns the outcome, and one of ours who coaches. Over time the second seat is removed.
Mandatory approvals. Requiring a codeowner approval on production directories protects against one tired person approving a bad plan. It slows things slightly, which is an acceptable price for production.
When not to buy this. If no one in your organisation will own Terraform afterwards, training is wasted. In that case a managed arrangement fits better; see our Managed DevOps service. Also, if your team is already strong, a short targeted review is enough.
Failure modes we avoid
- Review by rubber stamp. Approvals without reading plans. Checklists and plan-first review habits address this.
- One expert bottleneck. If only one person understands the code, they become a single point of failure. We spread ownership deliberately.
- Standards that live in someone’s head. Everything agreed is written down and enforced by tooling where possible.
- Training without follow-through. A workshop alone fades in weeks. Review during real work consolidates it.
Delivery and handover
At the end you have trained engineers, a review checklist, a style guide, pre-commit and CI rules, and recorded walkthroughs of the main workflows. The exit criterion is simple: your reviewers handle pull requests without us and the quality holds.
How to tell it is working
Review comments become more about design and less about syntax. Production plans are read before approval, and you can see it in the comments. The team makes infrastructure changes without asking for help, and onboarding a new engineer takes days. To scope training for your team, get in touch.