Building Bridges: How Our Android Guild Connected for Growth

Alvaro Dueñas
Turo Engineering
Published in
9 min readOct 5, 2023
Generated using Stable Diffusion XL

In this blog post, we will take a journey through the evolution of the Android guild at Turo, illustrating how we connected, collaborated and built bridges to facilitate its successful growth. Our team followed the philosophy of building bridges, as we understood the importance of communication within the guild and with the rest of the company.

This blog aims to share our experience at Turo. While it may not offer a definitive, one-size-fits-all solution, we hope it provides valuable insights and ideas that can be adapted to suit your team’s unique situation.

Introduction

First let me provide some context that can help better understand this blog. My name is Álvaro, and I’ve been working at Turo for the past 4 years as an Android developer. A few months ago, I took on the role of guild facilitator. Throughout this time, the Android guild has experienced various phases, starting from just 3 developers and growing to 20 at time of writing. This journey has been both incredibly rewarding and, at times, quite daunting.

The Android guild at Turo, including both current and past members, has consistently fostered a strong desire to give back to the Android community and share the benefits we have gained through open-source libraries and knowledge-sharing articles. We hope this insight into our motivation helps you better understand our mission and aspirations.

One last crucial piece of context, and perhaps the most significant, is that the Turo Android guild culture is deeply rooted in the overall Turo Culture and Values. The success of the Android guild’s growth can be attributed to the continuous support and assistance from the entire company, with Turo’s core values (Grounded, Expressive, Bold and Driven) serving as the foundation for daily decision-making and interactions. By aligning our guild with Turo’s broader values, we have been able to thrive and achieve our growth milestones, fostering a collaborative and cohesive environment that has been instrumental in our journey.

Driving the Vision: Product Company’s Landscape at Turo

Turo’s organization revolves around cross-functional teams, which form the basis of our daily work. As part of these teams, collaboration with engineers from various disciplines is a norm, and depending on the team size, daily interaction with another Android engineer.

To ensure the code base and architecture remain in optimal condition, we have established guilds that meet regularly. These guilds serve as platforms for knowledge-sharing, in-depth technical discussions, and overall platform maintenance. By fostering these collaborative spaces, we strive to maintain our platform in the best possible state, allowing us to deliver high-quality products and experiences to our users.

Guild Synergy: Forging bonds within our Android Guild

The Android guild follows a structured meeting schedule, convening all members every week. However, the meeting format alternates bi-weekly between two types: guild meetings and Android Lab sessions.

During a guild meeting, we have a semi-fixed agenda. The focus is on reviewing the release process from the past two weeks, conducting a crash-free rate and top crash check, and providing a quick update on the next two release managers and any major upcoming projects. The remaining portion of the meeting is dedicated to open discussions, where any Android engineer (or occasionally engineers from other platforms) can raise concerns, discuss technical challenges, address architecture issues, or present an RFC (Request for Comments) for further discussion.

On the other hand, the Android Lab sessions have a flexible schedule and serve as a platform for knowledge-sharing within the guild. Through these sessions, any Android engineer has the opportunity to present. In the recent year, we had topics such as “Migration from KAPT to KSP”, “UI testing with Maestro” and “Live Templates”. We have found it highly beneficial to record these meetings and include them in our documentation. This ensures that new engineers joining the guild can access valuable resources and enables everyone to revisit the content later to refresh their knowledge.

By alternating between guild meetings and Android Lab sessions, we strike a balance between addressing immediate concerns and fostering an environment of continuous learning and knowledge exchange within our Android guild.

We also organize a hybrid Android offsite once a year, where we gather for 3–4 days to strengthen our relationships and foster team bonding. The primary objective of the offsite is to learn collectively and explore new opportunities together. During our latest offsite, we engaged in a mini-hackathon focused on building Turo screens using Jetpack Compose. This exercise provided valuable insights into our future Compose architecture, as we identified and addressed potential issues.

Communication

Effective communication is the key to success for any team. In this section, we will explore the principles that drive our guild’s communication strategy, which encourages open dialog, knowledge sharing, and a sense of belonging within our team.

“Ask ask ask”: Encourage curiosity and collaboration

We promote the value of asking questions regardless of their complexity or frequency. By doing so, we foster a culture of continuous learning and collaboration. Emphasizing the importance of asking questions helps break down barriers, un-blocking work, and leads to creative problem-solving and innovation.

Cultivating a safe environment: Trust and openness

The base of our communication culture is the belief that there are no `stupid` questions. It’s important to have a safe environment where every team member feels comfortable raising concerns or asking for clarification. By removing the fear of judgment, we build trust within the guild. This helps team members express themselves honestly, leading to constructive feedback and efficient decision-making.

Encouraging continuous feedback: A key pillar of growth

Over the years, we have continuously adapted our methodology and processes, acknowledging that perfection is elusive. Therefore, receiving continuous feedback from our team members and iterating over our decisions are paramount. This approach ensures that the team remains an active part of the decision-making process, fostering a sense of ownership and accountability.

Internal processes

In this section, we will dive into the core internal processes that drive the smooth functioning and efficiency of our Android guild at Turo. Let’s explore the key internal processes that keep our guild running at its best.

PR reviews

When it comes to Pull Requests(PRs) we follow a set of straightforward guidelines that are the key for good communication and maintaining a healthy environment.

The PR author plays a crucial role in ensuring the quality of the PR by carefully considering its size. For larger projects or features, dividing code changes into multiple PRs is a common practice. Each PR undergoes thorough documentation before attaining the “needs-review” label. This involves adding a comprehensive description including acceptance criteria, specific requirements, and screenshots or videos highlighting the comparison between old vs new states or demonstrating new behaviors.

Moreover, we encourage developers to perform a preliminary self-review of their own PRs. This step helps identifying pending TODOs, temporal code snippets, and other potential issues. Additionally, appending comments that can significantly facilitate the work of reviewers, leading to a more efficient and productive review process.

PR reviewers adhere to specific guidelines aimed at ensuring effective and constructive feedback. Our primary objective is to offer solutions or guidance on resolving highlighted issues. Recognizing that certain solutions might be complex to convey through text alone, we encourage reviewers to initiate a quick call to discuss these matters in a more dynamic and efficient manner.

Furthermore, if a PR accumulates a higher volume of comments than usual, we recommend the option of a brief call. This approach streamlines the review process, allowing for real-time discussions that facilitate better understanding and resolution. By integrating these guidelines, our review process remains proactive, responsive, and conducive to collaborative problem-solving.

Concluding the PRs topic I’d like to spotlight a valuable“lifehack” that we’ve integrated in our Continuous Integration (CI) using Github actions. When a developer adds a “needs review” label to a PRs, our system automatically designates two random members of the android as reviewers. This serves a dual purpose.

Firstly, it dismantles silos within our codebase. Prior to this, we observed a tendency for the same developers to consistently review specific sections of the code. By introducing randomness into the reviewer selection, we promote a healthier distribution of review responsibilities, fostering a more comprehensive understanding of our codebase across the guild.

Secondly, this approach serves as a window into different corners of our projects, facilitating cross-functional knowledge sharing and exposing our team to diverse problem-solving approaches. We’ve extended this concept further in specific cases. For example, following the adoption of Jetpack Compose, we applied a similar strategy. Labeling a PR appropriately automatically adds a Compose expert to the list of reviewers.

Review teams

The concept of Review Teams, introduced by an engineer from a previous company and seamlessly integrated into Turo’s environment, has proven to be a resounding success for our Android guild.

Review teams are made of a small group of 4–5 Android engineers, meeting once or twice a week for collaborative PR reviews. This has brought a huge value to our workflow, facilitating a deep comprehension of the diverse code review methodologies and serving as a catalyst for meaningful technical discussions.

Given that our cross-functional teams have 2 Android engineers, review teams present a unique opportunity to foster interactions among our Android engineers. To encourage this interaction, review teams rotate at least twice a year, ensuring exposure to different engineering perspectives and approaches.

We found this initiative extremely helpful for new engineers. Review meetings serve as invaluable moments for them to immerse themselves in our code base, explore our product landscape, and assimilate our team culture. Furthermore, these sessions offer an ideal platform for asking questions, and suggesting innovative solutions.

Request For Comments

As our Android team expanded, we encountered an important challenge — an influx of new ideas and diverse approaches to problem-solving . It wasn’t clear which was the process to suggest new patterns, ways of solving existing problems, or architect changes. To address this, we introduced the Request For Comments (RFC) process, fostering innovation and tackling this challenge.

While the term “process” may invoke formality, our RFC system is anything but rigid. It involves a simple document explaining the proposed change or idea. The intention is not to asphyxiate innovation, but rather to channel it in a structured manner. When appropriate, we recommend coupling the RFC document with a PR. This ensures better clarity, simplifies evaluation, and enriches the context surrounding the proposal.

Here’s how it unfolds: The RFC author should present the proposal during a guild meeting. Over the next few days Android engineers perform a collaborative review. Questions are welcomed, and suggestions for improvements are encouraged. The process culminates two weeks later in another guild meeting where a formal vote takes place.

This process helped the guild to establish transparent expectations. It offers a structured path for proposing significant changes, ensuring a shared understanding of how these changes will be introduced and executed.

Guild Initiatives

Quantifying the efforts invested by developers in platform work can be challenging. To tackle this complexity, we had the concept of guild initiatives. In the initial stages, all Android engineers actively participated in these initiatives, fostering a collaborative environment. However, as our guild expanded, managing this approach presented some obstacles.

In 2023, a pivotal shift took place across Turo’s guilds. Guild initiatives experienced a strategic transformation, now orchestrated by dedicated teams within each guild. These fresh initiatives consist of a compact team of 4–6 engineers including one sponsor. The sponsor takes on several additional responsibilities, including overseeing meetings and Jira organization, collaborating with other guild initiatives, and keeping the guild informed about progress. This role offers a valuable opportunity for engineers to develop new skills, which is why we rotate it every six months.

Initiative goals are defined by the guilds, taking into account company goals as well as product and platform needs. Engineers have the autonomy to select an initiative that aligns with their motivation and expertise. Aside from that, the team operates with a remarkable degree of autonomy, crafting their internal dynamics and workflow in a manner that best serves the initiative’s objectives.

The outcomes from this new approach to guild initiatives has been remarkably positive. Engineers now exhibit a better sense of ownership over these initiatives, bridging communication gaps between platform-related work and their respective product teams. Furthermore, the principle of self-organization from this framework has promoted the improvement of vital skills, fostering professional growth and driving engineers towards advancement.

Conclusions

Our journey, marked by our Android guild’s growth from a few to a cohesive team of more than twenty, emphasizes the importance of a communication-driven culture and consistent commitment to continuous improvement. This voyage demonstrates that fostering open dialogues and embracing constant regiment are the foundations that elevate collaboration, knowledge sharing, and overall success within our Android guild.

Thank you for accompanying us on this journey. While our approach is unique, we hope you’ve found valuable insights to enrich your own daily efforts in the ever-evolving world of technology.

--

--