Revamping Team Dynamics: Navigating Challenges and Achieving Process Improvements

Revamping Team Dynamics: Navigating Challenges and Achieving Process Improvements

As a Engineering Manager at Refurbed, I recently found myself facing a unique leadership challenge. I was tasked with optimizing the workflow of a remote team of senior backend developers, each based in various corners of Europe. Our team had been experiencing a series of hurdles, and it was abundantly clear that we needed to revamp our collaboration and cooperation system to unleash our collective potential. In this blog post, I will delve into the challenges we encountered and the successful transformation of our team’s workflow, all from a leadership perspective.

The initial signs of our team’s struggles were apparent: unclear task definitions, independent development efforts, bottlenecks in the code review process, and an overstressed team member with a critical role. The lack of clarity in task definitions often led to confusion and delays in delivering high-quality code. Our developers typically embarked on individual development tasks without the benefit of a common agreement or consultation with our key Architect until the very end of a project. This approach resulted in code that often deviated from our architectural vision. Moreover, we grappled with enormous merge requests that underwent minimal peer review, causing significant delays in delivering code to production.

Perhaps the most concerning challenge we faced was the burden placed on our Architect, whose time was consistently consumed by basic code reviews and constant rework. This not only hampered their productivity but also added an unnecessary layer of stress to their daily responsibilities. Recognizing these issues, I knew it was time for a change. Our transformation journey began with open communication and feedback. I initiated candid discussions with the team, ensuring they understood that the process, rather than the individuals, required enhancement. It was crucial to convey my faith in their abilities while acknowledging the areas that needed improvement. Seeking their input and ideas created a sense of shared ownership among team members, laying the foundation for our transformation.

Identifying the Challenges

When I first took charge of the team, I noticed several pain points that were hindering their productivity:

  1. Lack of Clarity: The team often worked on loosely defined tasks, which led to confusion and delays in delivering quality code.

  2. Independent Development: Developers would work individually on tasks without a common agreement, which led to code that often didn’t align with our architectural vision.

  3. Bottlenecks in Code Review: Huge merge requests with minimal peer review created bottlenecks in our workflow, causing delays in delivering code to production.

  4. Distracted Architect: Our Architect’s time was being wasted on basic code reviews and constant rework, leading to distraction and a decreased focus on high-impact tasks.

A Collaborative Approach

To address these issues, I knew that a collaborative and proactive approach was essential. Here’s how we transformed our team’s process:

Open Communication and Feedback: I started by openly discussing the challenges with the team, emphasizing their strengths and assuring them that the process, not the individuals, needed improvement. I sought their feedback and ideas, fostering a sense of ownership among team members.

Architect’s Early Involvement: Recognizing the Architect’s crucial role, we involved him from the outset to define project scope and provide clear specifications. This ensured that everyone was on the same page and working toward a common goal.

Clear Project Planning: We adopted a systematic approach, creating epics with well-defined tickets and specifications upfront. Breaking tasks into smaller, manageable pieces reduced complexity and improved efficiency.

Estimation and Parallel Work: Encouraging the team to estimate story points and work on tickets in parallel increased collaboration and allowed us to adapt quickly to changing priorities.

Scheduled Sync Meetings: Regular sync meetings with our Architect ensured timely guidance for developers, minimizing roadblocks and reducing rework. This proactive approach kept the process on track.

Peer Code Review: Implementing initial code reviews among team members before involving the Architect helped catch and fix issues early, reducing the Architect’s workload and ensuring code aligned with specifications.

Setting Benchmarks: We established a benchmark feature to compare with post-improvement work, enabling us to measure progress and validate the effectiveness of process changes.

Achieving Success

The most remarkable testament to our transformation was the success of our first project after implementing these changes. Despite its complexity and a tight deadline, the team delivered the project in just three weeks, a stark contrast to the previous two-month ordeal.

Continuous Improvement

While we’ve seen significant improvements, we understand that continuous improvement is key to long-term success. We remain open to feedback, ready to make adjustments, and committed to creating an environment where each team member can thrive.

Conclusion

Leading the transformation of our team has been a rewarding journey. By fostering collaboration, optimizing our workflow, and emphasizing clear communication, we’ve unlocked the team’s potential and achieved remarkable results. Our experience demonstrates the power of leadership, adaptability, and teamwork in overcoming challenges and driving success.

Written by

Petar Gusic

February 21, 2024

Petar is a Engineering Manager at refurbed.

We're Hiring

  • Senior Data Engineer (m/f/x)

    We are looking for a Senior Data Engineer to work in the intersection between engineering and data science. Help us improve our data processing workflows and push them to the next level.

  • Senior Vue.js Frontend Developer (m/f/x)

    We are looking for a Senior Vue.js Developer to support us in developing our external and internal interfaces. These include our checkout application, customer area and management interfaces for us and our merchants.