Michele on Software

My opinions about software product development

Mastering Software Craftsmanship: Making the Change Easy, Then Making the Easy Change

Kent Beck’s timeless advice, “Make the change easy, and then make the easy change,” is a guiding principle for software craftsmanship.

It’s a simple yet profound idea that should resonate with both developers writing code and leaders shaping technical strategy. At its core, this philosophy advocates for intentional preparation to ensure changes to a codebase are smooth, predictable, and sustainable.

But what does “easy” really mean, and how can we apply this principle across different dimensions of software development?

Let’s explore this concept, its practical applications, and why it matters to both developers and technical leaders.

The Essence of “Make the Change Easy”

The structure of your code can make or break the ease of implementing new behavior.

A well-organized codebase turns a potentially complex change into a straightforward task, while a tangled one can transform even a small tweak into a nightmare.

Beck’s advice encourages us to proactively reshape the code’s structure to simplify the intended change before diving into the implementation.

This preparation reduces risk, saves time, and enhances the quality of the outcome.

However, “easy” isn’t just about the code itself. It’s about the people, processes, and tools involved.

For developers, it means writing maintainable code and reducing friction in their workflows. For directors and CTOs, it’s about fostering an environment where teams can deliver reliably and efficiently.

Let’s look at some ways to do this.

Practical Ways to Make Change Easy

Write Tests to Clarify Intent

Writing a test that showcases the desired behavior is a powerful way to make a change easier.

A well-crafted test acts as a blueprint, guiding you toward the exact outcome you want. It also serves as a safety net, confirming when the change is complete and correct.

For developers, this means less guesswork and faster feedback.

For leaders, it translates to higher confidence in the team’s ability to deliver features without introducing bugs.

Build a Fast, Comprehensive Test Suite

A robust test suite that runs quickly is a game-changer.

It allows developers to verify changes in seconds, catching regressions before they reach production.

For CTOs, a fast test suite means shorter development cycles and lower risk of costly errors. Investing in automated testing infrastructure is a strategic decision that pays dividends in agility and reliability.

Document Clearly and Create Executable Specifications

Good documentation and executable specifications (like behavior-driven development artifacts) make future changes easier for everyone.

Clear documentation reduces onboarding time for new developers and minimizes confusion during maintenance. Executable specifications align developers and stakeholders, ensuring everyone understands the system’s behavior.

For directors, this means less technical debt and smoother collaboration across teams.

Embrace Small Steps and Safe Deployments

Breaking changes into small, incremental steps reduces risk and simplifies debugging.

Techniques like canary rollouts and feature flags allow you to deploy changes gradually, monitoring their impact in real time.

For developers, this means less stress during deployments. For leaders, it ensures business continuity and minimizes customer-facing issues.

Invest in Observability

Proper logging and metrics make it easier to operate and troubleshoot a codebase.

When something goes wrong, well-designed observability tools help developers pinpoint issues quickly, reducing downtime.

For CTOs, this translates to better system reliability and happier customers.

Prioritize logging key events and exposing meaningful metrics to ensure your system is transparent and manageable.

Level Up Your Skills

Sometimes, the barrier to an easy change isn’t the code but your own knowledge.

If a task feels daunting (say, writing a complex SQL query), invest time in learning. An hour spent improving your skills can make a once-difficult change trivial.

For developers, this builds confidence and expertise. For leaders, encouraging continuous learning creates a more capable, adaptable team.

Why This Matters for Developers and Leaders

For developers, Beck’s principle is a call to prioritize clarity, simplicity, and foresight in their work. It’s about writing code that’s not just functional but also maintainable and extensible. By making changes easy, developers reduce their own stress and create a codebase that’s a joy to work with.

For directors and CTOs, this philosophy aligns with strategic goals: delivering value quickly, minimizing technical debt, and building resilient systems. By fostering a culture that values preparation through testing, documentation, and observability, leaders empower their teams to innovate without fear of breaking things.

Putting It Into Practice

“Make the change easy, and then make the easy change” is more than a catchy phrase—it’s a mindset that gradually transforms how we approach software development.

Whether you’re a developer refactoring code or a CTO shaping your team’s processes, this principle encourages proactive problem-solving. Here’s how you can start:

  • Developers: Next time you face a complex change, pause to ask, “How can I make this easier?” Write a test, refactor a messy module, or add a feature flag.

  • Leaders: Invest in tools and practices that reduce friction, like automated testing or observability platforms. Encourage your team to prioritize preparation over quick fixes.

Your Turn: How Do You Make Change Easy?

What strategies do you use to simplify changes in your codebase? Do you go out of your way to make things easy, or do tight deadlines push you toward shortcuts? Share your thoughts and experiences. Whether you’re a developer or a technical leader, there’s always a new way to apply this heuristic.

By embracing Kent Beck’s wisdom, we can all build software that’s not just functional but also a pleasure to maintain and evolve. Let’s make the change easy, together.