Transforming Team Structure for Engineering Success

Nicolás Cohen
CODE + CONTOUR by IPSY
6 min readJun 12, 2023

--

Introduction

The tech ecosystem is constantly evolving, and companies need to adapt to maintain their competitive edge. At IPSY, we believe in the power of organizational structure and engineering culture as drivers of success. In this article, we will talk about how we transitioned from a layered architecture team structure to a cross-functional, objectives and key results (OKR)–oriented structure, showing how this transformation has positively impacted our engineering organization’s effectiveness and impact.

Who We Are: IPSY’s Business Model and Team Composition

As the world’s largest beauty subscription, IPSY delivers personalized beauty products and experiences to inspire everyone to express their unique beauty. To achieve this, we depend on a group of professional engineers, product managers, and designers who work collectively to develop modern solutions that cater to our diverse and ever-evolving consumer base. Our company culture emphasizes collaboration, innovation, and continuous improvement, as we believe that these values are key to staying ahead in a fast-changing market.

The Past: Layered Architecture Team Structure

Our engineering organization structure used to be based on architectural layers, with separate teams responsible for frontend, backend, and infrastructure. This model allowed for specialization and in-depth knowledge within each domain (given that our entire application was running in a monolith), which helped us build a strong foundation for our products and services. One of the reasons for having layer-based teams was due to our focus on breaking up the multilayer monolith on our migration to microservices. However, as our company grew and the demands of the market evolved, we realized that this structure had its limitations and that we needed a more agile and collaborative approach to remain competitive.

While this layer-based team structure was instrumental in the early phases of breaking up our monolith application, we found that this structure often led to slower decision-making and project execution, as teams had to navigate multiple layers of communication and coordination, especially when there were many dependencies between them. Moreover, there was a risk of duplicating work and resources, as individual teams might develop similar solutions in isolation. Finally, this structure had the potential to contribute to a lack of ownership and accountability, as teams might view themselves as responsible solely for their specific domain, rather than responsible for the success of the overall project and key performance indicators (KPIs).

Challenges, Pros, and Cons of a Layer-Based Structure

This layer-based structure had its advantages, such as fostering deep domain expertise and promoting a focus on individual areas of responsibility. However, it also came with several challenges:

  • Siloed teams: The separation of teams based on architecture layers made it difficult to collaborate effectively, which led to communication breakdowns and inefficiencies. This often resulted in misaligned priorities and a lack of shared understanding of the project’s goals and requirements.
  • Limited agility: With teams focused on specific domains, it took time to pivot and adapt to changing priorities, which hindered our ability to innovate and grow. We found that our layer-based structure made it difficult to respond quickly to market demands and capitalize on new opportunities.
  • Fragmented understanding: Teams often lacked a shared understanding of the entire project, which made it difficult to align goals and resources across the organization. This sometimes resulted in suboptimal decision-making and resource allocation, ultimately slowing down project delivery.

Projects and the Path to Change

As our company expanded, we embarked on several ambitious projects, including a subscription rebuild, Ultra Personalization (a new feature that allowed members to choose three products in their bag), and our international expansion to Mexico. These projects required us to break our monolithic architecture and create new microservices, which in turn demanded enhanced collaboration between teams and a shared understanding of the broader platform and systems involved.

The realization that our existing structure was ill-suited to these complex projects prompted us to reevaluate our approach and seek a more flexible and collaborative team structure. We began researching various organizational models and methodologies, seeking inspiration from industry leaders and successful tech companies. During this process, we identified cross-functional, OKR-oriented structures as promising alternatives that could address the limitations of our layer-based approach while supporting our goals for growth and innovation.

The Present: Cross-Functional, OKR-Oriented Structure

To address the challenges of our previous structure, we transitioned to a new structure that organized teams around specific OKRs. This new approach had several benefits:

  • Enhanced collaboration: By bringing together backend and frontend engineers with diverse skill sets and expertise and combining them with a brand new team of product managers and UX designers, we fostered a culture of collaboration and information sharing across the organization. This allowed us to leverage more effectively the collective knowledge and experience of our team members, resulting in more informed decision-making and a higher quality of work.
  • Greater agility: The cross-functional structure allowed us to quickly adapt to changing priorities, improving our ability to innovate and respond to market demands. By organizing our teams around shared objectives and having one Product Manager and engineering lead assigned to each team, we were better able to allocate resources and adjust our focus as needed, ensuring that we remained agile and responsive in a dynamic environment.
  • Holistic understanding: With a shared focus on common objectives, our teams developed a better understanding of the entire project, which facilitated goal alignment and resource allocation. This led to more efficient and coordinated project execution, as well as a stronger sense of ownership and accountability among team members.

This transition required a significant cultural shift at both the engineering and company levels. We invested in internal training and enhanced communication to help our team members adapt to the new structure and develop the skills necessary for effective cross-functional collaboration. We also introduced new processes and tools, such as key scrum principles like regular stand-ups, retrospectives, and OKR tracking systems, to support communication, coordination, and continuous learning and improvement.

New Challenges and Cultural Change

While the transition to a new team structure has brought numerous benefits, it has also posed new challenges that have required us to adapt and refine our approach:

  • Aligning diverse skill sets: Managing the complexity of cross-functional projects and ensuring that team members with diverse skill sets worked together effectively was a significant challenge. To address this, we have implemented regular team meetings, encouraged open communication, and provided training opportunities to help team members develop a shared language and understanding of each other’s domains. We have also introduced tools and practices, such as design sprints and pair programming, to facilitate collaboration and knowledge sharing.
  • Balancing autonomy and collaboration: Ensuring cross-functional teams maintained the right balance between autonomy and collaboration was crucial. We achieved this by setting clear expectations, defining roles and responsibilities, and fostering a culture of trust and accountability. We also continue to encourage team members to take on leadership roles and contribute to decision-making processes, helping to create a sense of ownership and empowerment.
  • Scaling the organization: As our company continues to grow, we have had to develop strategies for effectively scaling our new team structure. This has included building a Technical Program Management team to help us spread some key agile principles, coordinating key/complex initiatives (especially those that require complex coordination to leverage and improve coordination, communication, and dependency management), refining our hiring process, streamlining onboarding, and establishing mechanisms for sharing knowledge and best practices across teams. We have also focused on building a more robust quarterly planning process with clear communication paths and ownership.

Conclusion

Our journey from a layered architecture team structure to a cross-functional, OKR-oriented structure has significantly impacted our engineering culture and change management at IPSY. By sharing our story, we aim to influence the tech ecosystem, showcase our progress and success stories, and attract talented individuals who share our passion for innovation and growth.

We hope that our journey inspires others to consider the impact of organizational structure on their engineering organization’s effectiveness and impact and to embrace change as a means of unlocking their full potential.

As we look to the future, we are excited to continue refining our team structure and explore new opportunities for innovation and growth. By maintaining our focus on collaboration, agility, and continuous improvement, we are confident that we can continue to drive success and make a lasting impact on the tech ecosystem and the beauty industry as a whole.

--

--

Nicolás Cohen
CODE + CONTOUR by IPSY

Engineering Director @IPSY / Entrepreneur / Fullstack dev / Tech geek / Love cooking & reading