The Skills We Stopped Teaching — and Now Pay For
Today’s coffee: the last pot of Dunkin' Caramel Me Crazy.
Sweet, familiar, and oddly reflective. It’s the kind of coffee you don’t think
much about—until it’s gone.
That feeling mirrors what’s happening in many IBM i shops today.
We didn’t lose critical skills overnight.
We let them fade.
And now we’re paying for them—in outages, delays, stress, and risk.
The Quiet Skill Fade No One Planned
No team ever said, “Let’s stop teaching fundamentals.”
Instead:
- Teams shrank.
- Systems grew.
- Deadlines tightened.
- Senior developers became
permanent escalation points.
- Junior developers learned just
enough to ship the next ticket.
Over time, teaching became optional.
Delivery became mandatory.
The result is a generation of developers who can:
- Modify code safely inside
known paths.
- Deliver features when patterns
already exist.
But struggle when:
- The system behaves unexpectedly.
- The database pushes back.
- A job runs differently at scale.
- Production doesn’t match test.
This isn’t a talent problem.
It’s a knowledge transfer problem.
Skill #1: Understanding the Database
as a Living System
We still teach SQL syntax well.
What we stopped teaching is how DB2 on IBM i behaves under real-world
pressure.
That includes:
- Why journaling isn’t optional in
serious systems.
- How commitment control protects
integrity and performance.
- How locking actually works—not
how we wish it worked.
- Why index design is a business
decision, not just a technical one.
- How query optimization can
silently change after a schema update.
Without this knowledge:
- Developers fear database changes.
- Performance issues feel random.
- Teams avoid refactoring data
models—even when they should.
A modern developer needs more than SQL fluency.
They need database intuition.
Skill #2: Designing for Failure in
Batch and Long-Running Work
IBM i still excels at what modern platforms struggle with:
- High-volume batch processing
- Financial close
- Billing cycles
- Long-running workflows
But we stopped teaching how to design for interruption.
Things like:
- Restartable batch jobs.
- Checkpoint strategies.
- Idempotent updates.
- Safe reprocessing after partial
failure.
So today, when a job fails:
- Teams rerun everything.
- Data gets duplicated.
- Manual cleanup follows.
- Confidence erodes.
Modernization isn’t about avoiding batch.
It’s about engineering batch that can survive reality.
Skill #3: Reading the System, Not Just
the Source Code
Many developers can read RPG line by line.
Far fewer can answer:
- Why this job runs under this
subsystem.
- Why this program behaves differently
at night.
- Why authority errors appear only in
production.
- Why a job log is warning you long
before failure.
We stopped teaching:
- How to diagnose using job logs.
- How message queues affect flow.
- How object ownership and adopted
authority interact.
- How environment configuration
shapes runtime behavior.
When developers can’t read the system, everything feels mysterious.
And mystery breeds fear.
Skill #4: Recovery Is a Skill—Not a
Panic Response
Modern teams focus on prevention, automation, and pipelines. That’s good.
But long-lived systems still experience:
- Corrupted objects.
- Partial restores.
- Incomplete deployments.
- Library-level inconsistencies.
We rarely teach:
- How to recognize damaged objects.
- When a rebuild is safer than a
restore.
- How to validate data integrity
afterward.
- How to fix problems without
making them worse.
So recovery becomes:
- Stressful.
- Slow.
- Dependent on “the one person who
knows.”
A resilient system requires resilient operators, not just clean
code.
Skill #5: Preserving the “Why” Behind
the Code
Code without context is technical debt—no matter how clean it looks.
We stopped teaching:
- How to document intent.
- How to capture business rules
clearly.
- How to explain why this logic
exists at all.
So over time:
- Business meaning erodes.
- Every change feels dangerous.
- Developers avoid entire modules.
Modern tools can help generate documentation—but only if teams value the
habit.
This Is a Leadership Issue, Not a
Developer Failure
Developers didn’t choose to skip learning these skills.
They were never given:
- Time to slow down.
- Space to ask questions.
- Mentors who weren’t overloaded.
- Safety to admit uncertainty.
As leaders, we often reward:
- Speed over understanding.
- Output over resilience.
- Heroics over sustainability.
When senior developers are always delivering, they’re not teaching.
When juniors are always rushing, they’re not learning.
That gap compounds quietly—until it’s expensive.
How Leaders Can Rebuild These Skills
(Without Boiling the Ocean)
This doesn’t require a massive transformation program.
It requires intent and consistency.
- Treat system understanding as
part of real work.
- Pair developers during
incidents—not just feature builds.
- Encourage “why” questions during
reviews.
- Capture recovery steps
immediately after incidents.
- Reward clarity, documentation,
and shared knowledge.
Most importantly:
Make learning visible and valued.
If growth only happens after hours, it won’t last.
Final Sips
That last pot of Caramel Me Crazy didn’t taste worse because it
was old.
It tasted familiar—because it mattered once, and still does.
The skills we stopped teaching didn’t disappear.
They became rare.
And rare skills are expensive—especially when your system depends on
them.
Modern IBM i teams don’t need to abandon fundamentals.
They need to reclaim them, teach them, and pass them forward.
Brew the old wisdom with new tools.
That’s how systems—and teams—last.
Comments
Post a Comment