Unravelling the Code Tapestry: Preparing to Tame Legacy Code With User-Led Odysseys

  • Friday, Feb 23, 2024
A number of multi-coloured carpets are arranged on a rack. They are predominantly red with yellow, bronze, and gold motifs.

The cover image for this post is by Ali Homayoun Nia

This is part two in our series of blog posts detailing our system for genius when working safely with legacy code. For part one, please see: Unravelling The Tapestry Of Legacy Code: A Series On Safely Navigating Software’s Timeless Artifacts


Embarking on the journey to understand and transform legacy code demands more than technical prowess; it requires a deep, user-centric exploration. In the initial phase of our series, we’ll guide you through the art of preparation, starting with a unique approach—user-led exploration of the code base.

Unveiling the User Experience

Before delving into the technical intricacies of the code, lay the groundwork with a user-led exploration that transcends traditional methodologies. This strategic approach unfolds before the code base is cloned or even looked at.

The first step is to immerse yourself in the user’s world. Arrange demoes of the code in action using the latest live version of the code, and here’s the twist—let actual users take the lead. During these sessions, resist the urge to take copious notes. Instead, focus on absorbing the user experience, gaining a visceral understanding of how the application functions in the hands of those who rely on it daily.

As you witness users navigate through the code, pay attention to their nuances, challenges, and moments of ease. Observe the intricacies of their workflow, the paths they frequently traverse, and the areas that seem to pose challenges. This observational approach fosters a connection with the end-users, providing insights that traditional code analysis might overlook. By allowing the users to guide the exploration, you lay the foundation for a holistic understanding that transcends the technical nuances of the code.

Building Connections

Beyond the code, build connections with the individuals guiding these demoes. Collect their contact details, including email addresses and ways to reach out over Teams (or whatever app you use). Establish a rapport, and inquire if you can reach out for assistance in case you encounter challenges replicating their demos. This personal touch not only fosters collaboration but also provides invaluable insights into the human side of code usage.

These connections go beyond the formalities of a typical development process. By engaging with users on a personal level, you gain access to their perspectives, expectations, and the underlying motivations driving their interactions with the code. Establishing a bridge of communication transforms the exploration into a collaborative journey, where users feel invested in the process. This interconnected approach ensures that your understanding of the legacy code is not just technical but is deeply rooted in the human narratives that breathe life into the application.

The Power of "Why"

Digging deeper, make the exploration a quest for the “why” behind the code.

At RJJ, we thrive on understanding the motivation behind user actions. This user-centric approach, deeply rooted in compassion, shapes our development philosophy. Explore the intricacies of why certain code exists, unravelling the narrative that led to its creation.

Delve into conversations with users, aiming to uncover the rationale behind their interactions with specific code segments. Why do certain features matter to them? What challenges are they hoping to address through these functionalities? By seeking the “why,” you transcend the surface-level understanding of code and dive into the meaningful stories that mold its existence. This empathetic approach not only enriches your comprehension of the codebase but also lays the groundwork for future development efforts aligned with the genuine needs of the users.

Our “Why” statement, detailed here, encapsulates our commitment to a deeply compassionate, user-centric approach. By incorporating these principles into your exploration, you not only decipher the code but also uncover the human stories woven into its fabric.

In closing

Incorporating these principles—user-led exploration, building connections, and embracing the power of “why”—is not just a methodology; it’s a philosophy that underpins our approach at RJJ Software. Our “Why” statement embodies this commitment to a deeply compassionate, user-centric journey in working with both legacy and new code.

As you embark on your own expedition into the world of legacy systems, remember that the tapestry of code is woven with the threads of human experiences. By unravelling these narratives, you not only decipher the complexities of legacy code but also pave the way for transformative development efforts deeply rooted in understanding, empathy, and genuine collaboration.

If you’d like us to help you work through the challenges involved with working safely with a legacy codebase, either in a hands-on capacity or as a consultant, get in touch with the form below:

We'll never share your name with anyone else.
We'll never share your email with anyone else.
Providing a subject can help us deal with your request sooner.
Please be as specific as possible; it will help us to provide a more specific response.
Un-checking this box will ensure that your data is deleted (in line with our privacy policy after we have dealt with your request. Leaving this box checked will auto enrol you into our email communications, which are used for marketing purposes only.