How Practice Shapes Expertise

This entry is part 3 of 3 in the series
September 2026 - Formation

Expertise is often mistaken for knowledge.

We imagine that becoming better at software development means accumulating more languages, frameworks, certifications and documentation. Knowledge certainly matters, but expertise develops differently.

It is formed through practice.

The experienced engineer does not merely know more facts. They recognise patterns, ask better questions, notice risk earlier and recover from mistakes more effectively. Those abilities are built through repeated engagement with real problems.

Knowing Is Not the Same as Doing

Reading about testing is not the same as designing a useful test suite. Understanding Git commands is not the same as resolving a difficult merge safely. Knowing database normalisation rules is not the same as designing a schema that must survive changing requirements.

Practice turns abstract knowledge into judgement.

That is why tutorials can make something appear easy until we try to build without following the instructor step by step.

The gap is not evidence that learning failed. The gap is where learning becomes practice.

Repetition Builds Fluency

Many tasks that initially consume attention eventually become almost automatic.

We stop consciously thinking about basic syntax. We recognise common error patterns. We structure code more naturally.

This fluency frees mental capacity for harder questions.

But repetition alone is not enough. Repeating poor practice simply makes poor practice familiar.

Useful practice combines repetition with feedback.

Feedback Makes Practice Better

Tests provide feedback.

Code reviews provide feedback.

Users provide feedback.

Production incidents provide particularly memorable feedback.

Without feedback, we can become highly practised at doing something badly.

Healthy engineers therefore seek environments where their assumptions are tested. They do not treat review as an insult to expertise. Review is one of the ways expertise is formed.

Work on Problems Slightly Beyond Your Comfort

Growth rarely happens when every task is already easy.

Equally, throwing beginners into problems far beyond their understanding can produce frustration rather than learning.

Good practice stretches us enough to require thought while remaining possible with research, experimentation or support.

Take the unfamiliar ticket. Build the small prototype. Investigate the bug rather than immediately passing it to the person who always fixes that area.

Capability expands through use.

Mistakes Become Experience Only When Examined

Simply making mistakes does not guarantee wisdom.

The important step is reflection.

What assumption was wrong?

Why did the test fail to catch it?

What signal did we overlook?

What would we do differently next time?

A post-mortem, development journal or short note after a difficult task can turn an uncomfortable experience into reusable knowledge.

Experience is not merely what happened to us. Expertise grows from what we learn from what happened.

Practise the Boring Things

Developers naturally enjoy new features and interesting problems.

Expertise is also built through less glamorous disciplines:

  • writing clear commit messages;
  • reading logs carefully;
  • documenting decisions;
  • checking assumptions before changing code;
  • testing edge cases;
  • reviewing security and accessibility;
  • maintaining systems after launch.

These practices rarely produce dramatic portfolio screenshots. They produce dependable engineers.

Teaching Deepens Understanding

One of the best ways to discover whether we understand something is to explain it.

Teaching forces us to organise knowledge, expose gaps and answer questions we might never ask ourselves.

Pair programming, mentoring, documentation and technical writing therefore benefit both learner and teacher.

Expertise shared becomes stronger rather than smaller.

Tools Can Hide Missing Understanding

Modern development tools can generate code, complete functions and diagnose problems rapidly.

Used wisely, they accelerate learning and work.

But speed can conceal a weakness: we can produce something we cannot explain.

A useful discipline is simple: if a tool generates an important solution, make sure you understand why it works, what assumptions it makes and how you would recognise when it fails.

Otherwise the tool has completed the task without necessarily forming the engineer.

The Invitation

What are you practising repeatedly?

Not what are you reading about. Not what course are you planning to take.

What are you actually doing?

Choose one area in which you want greater expertise and create opportunities for deliberate practice. Seek feedback. Reflect on mistakes. Explain what you learn to someone else.

Expertise is rarely created in a single breakthrough.

It grows through hundreds of ordinary encounters with problems, corrections and decisions.

Practice does more than improve what we can do.

Over time, it shapes the kind of engineer we become.

Previous