dhuleshwarfabcoats.com

Continuous Improvement in Software Engineering: Insights from 1–800 Contacts

Written on

Chapter 1: Introduction to Continuous Improvement

In the realm of software engineering, fostering a culture of curiosity, adherence to core principles, and open sharing of values is essential for growth.

"It is not an exaggeration to say that my partner is a beacon of continuous development. I am merely an example of someone striving for improvement."

The distinction between leadership styles is crucial: while ineffective leaders may attempt to extract maximum output from their teams, effective leaders are committed to the ongoing enhancement of their teams. Exceptional leaders, however, motivate and empower their teams to pursue self-improvement.

About Me

Greetings! I’m Josh Moore, the eCommerce Director at 1–800 Contacts. With over a decade of experience leading teams, I am passionate about individual growth and consistently apply new methodologies in my work. The opinions expressed in this piece are my own and do not necessarily reflect those of 1–800 Contacts.

Chapter 2: A Glimpse into Process Improvement History

2017: In an effort to reduce customer disruptions during software updates, 1–800 Contacts began conducting manual nightly releases during its limited weekly release window. A dedicated team explored the potential of a Continuous Integration/Continuous Deployment (CI/CD) pipeline. Ultimately, they opted to develop a custom CI/CD solution using Azure DevOps. This transition not only automated releases but also eliminated the constraints of fixed release windows, significantly enhancing the engineering team's performance.

2018: Our CEO, John Graham, introduced the book Accelerate to our VP of Software Engineering, highlighting the importance of four key metrics (DORA) for assessing software delivery performance. This revelation marked a pivotal shift in our approach to process enhancement.

2019: Building on the DORA metrics, we created an internal dashboard to track our progress on these four vital metrics. Teams were regularly evaluated based on these statistics to enhance their speed while ensuring high quality.

The four metrics included:

  • Release Count: The frequency of production releases within a specified timeframe.
  • Lead Time: The duration from the commencement of development to live deployment.
  • Mean Time to Discovery (MTTD): The time taken to identify production issues.
  • Mean Time to Recovery (MTTR): The duration required to restore service to customers.

Focusing on release counts and lead times, we prioritized:

  1. Small Batch Sizes: Decomposing stories into the smallest possible releasable increments allowed us to deliver value quickly.
  2. Process Automation: Automating releases was a crucial first step. We enhanced visibility and reliability in passing unit and integration tests.
  3. Work-in-Process (WIP) Limits: While many utilize WIP limits, true progress comes from challenging these limits to uncover growth opportunities.

2020: Recognizing the importance of process enhancement, we established a group of Continuous Improvement (CI) Coaches from each software development team. These coaches trained in Agile methodologies and facilitated innovation discussions within their teams, ensuring that change management was effectively integrated.

Chapter 3: Advancements in Team Agreements and Health Surveys

2021: We introduced a focus on team agreements, also known as team contracts. Teams that thrived maintained clarity on their successes and showed eagerness to improve. These contracts, crafted and upheld by the teams, fostered a sense of value and commitment.

We also implemented bi-monthly team health surveys, inspired by insights from Patrick Lencioni’s Ideal Team Player. The anonymity of these surveys encouraged candid feedback, which enhanced psychological safety and led to actionable improvements.

The benefits of our initiatives were reflected in survey results, with notable increases in confidence among CI coaches and team members about their roles and commitment to continuous improvement.

Software Release Metrics

2021: The number of software releases surged, with nearly 1,000 more releases than in the previous year. Our commitment to continuous improvement and the effective use of DORA metrics were evident.

2022: We adopted various strategies to enhance team productivity, collaborating with getDx to improve our developer experience. I discussed our journey in a podcast with CEO Abi Noda, emphasizing the importance of understanding the challenges faced by engineering teams.

When teams encountered deep work challenges, we allowed them to manage their own meeting schedules. The mobile app team, for instance, initiated non-meeting days, significantly boosting their productivity.

Our focus on identifying friction points led to remarkable improvements, with teams reporting increased ease of testing and recognition.

Chapter 4: Quality Enhancements and Cultural Growth

2023: A major focus this year was on quality improvement, aiming to reduce the financial impact of production issues and enhance MTTD and MTTR. We consolidated logging to Splunk, streamlining alerting processes and improving response times.

Surprisingly, we observed that by allowing our help desk to handle on-call issues, engineers were able to focus on quality improvements rather than troubleshooting.

Despite initial concerns from IT leadership regarding quality, the outcome was the opposite. Our team culture thrived, emphasizing collaboration and shared responsibility.

In summary, the secret to success at 1–800 Contacts lies in our people and culture. The commitment to customer satisfaction, work-life balance, and the opportunity for continuous improvement has fostered an environment where I, and many others, are excited to contribute.

As we look forward to 2024, I am eager to share more insights on our ongoing journey of enhancement and success.