How we created a roadmap for the Frontend Platform team without clear expectations.
Photo by Mitch Mckee on Unsplash
August 2022, Hasura changes the internal team's structure from horizontal teams (the "Console team" with all the frontenders, the "Server team", etc.) to vertical, full-stack "Feature teams" ones that cover a Product need (the "Native DB team", the "GraphQL Services team", etc.). Also, a generic "Product Platform team" has been created to cover all the Product features that do not fall under the umbrella of the various Feature teams. The Platform's team scope also included dealing with high-level tasks and problems that would have allowed the Feature teams to move faster while developing product features.
We (N. Beaussart, N. InchauspΓ©, and I) were the front-end side of the Platform team and we wanted to ease all the other frontenders' lives by removing some of the huge technical debt that prevent them to work effectively and to release features safely and without introducing a lot of bugs and "fix" PRs.
We then tried to:
Identify what front-end tasks fall under the umbrella of the Platform teams in other companies
Identify the most important activities to work on
Identify what front-end tasks fall under the umbrella of the Platform teams in other companies
Please keep in mind that while Platform teams are very common in a lot of companies, frontenders are not usually included in those teams. As a result, the public resources for front-end Platform activities are limited. Anyway, we found some great resources that it's worth mentioning:
And if you need more generic info: this is an introduction about Platform teams from Gergely Orosz. The articles are behind a paywall but they are some of the best out there https://blog.pragmaticengineer.com/platform-teams/
An article about what allows a Platform team to work well or not https://www.microtica.com/blog/why-your-platform-engineering-team-isnt-awesome
What does it mean to be in a UI Platform team https://yiou.me/blog/posts/thinking-in-platform
A great article about Hubspot platform team https://product.hubspot.com/blog/frontend-platform
The Croz experience at building a successful Platform team
https://teamtopologies.com/industry-examples/building-a-successful-platform-team-at-croz
A Quora answer about the alignment between Platform teams and Feature teams https://www.quora.com/How-do-product-platform-engineers-keep-in-touch-with-the-needs-of-product-engineers/answer/Alexis-Larry
By reading them, we found confirmations about the tasks covered by frontenders in Platform teams, such as:
Fix the most problematic technical debt that slows down the frontenders of the Feature teams
Fix the problems that will slow down the Feature teams in the short term by anticipating the new Product features' needs
Maintain Design Systems
Create some common patterns and best practices and automate getting them respected
Improve and stabilise the various application tests
Evaluate new solutions and technologies to better solve internal technical problems
Manage and optimise the front-end tools and dependencies
Mentor other frontenders and spread knowledge
Due to bug technical debt present in Hasura's front-end projects, how could we (the frontenders of the Platform team) ensure our activities were aligned with the short-term Product needs? How to create a sort of roadmap and stick with it regardless of the everyday problems that could arise from such a complex Product and a lot of engineers? Go ahead π
Identify the most important activities to work on
We proceeded by:
-
Interviewing all the stakeholders that are directly or indirectly impacted by the Hasura Console (Hasura's main front-end application and the most problematic one), including
- All the developers working on it on a daily basis
- All the developers working on it time every now and then
- All the Engineering Managers of the teams including developers from the previous points
- The Documentation team
- The Graphic Design team
Collecting all the answers in a shared spreadsheet
Summarising the most requested area of interventions (the "Engineering priorities") and categorising them
-
Preparing a presentation for the higher-ups that include
- A slide for every single activity (15 in total) with a clear explanation of why it was important, what the activity is, how many (in percentage) stakeholders asked for it, and a T-shirt size
- A table that acted as the focus of the presentation, where we asked the higher-ups to put a "Product priority" to then mixed with the "Engineering priorities" that we identified
The final goal was to list specific activities with
The Engineering "priority"
The Product "priority"
The T-shirt size
And creating a roadmap out of this list was a breeze! This also helped us to identify what to not work on, something not very straightforward when you deal with a lot of problems and requests on a daily basis.
Here is an example of the table we created with a bunch of activities we identified:
Area | Activity | T-shirt size | Eng. β |
---|---|---|---|
Perf+stability | Sentry: Mapping feature directories to teams. | ππ | βͺ |
Architecture | Providing tools to respect the libraries strategy in the Console. | πππ | π΄ |
Architecture | Update GraphQL and GraphiQL | ππππ | π΄ |
DX | Better docs and tools to run the Console in all modes/types. | ππ | βͺ |
Regression | Storybook Tests: Reduce the drag in testing different Console modes/types. | ππ | π‘ |
Conclusion
The higher-ups highly appreciated the initiative and we immediately started working on some of the activities.
Top comments (3)
Hello Stefano, thank you for this article! I feel like I found a gold-mine of useful links π
Regarding to taking technical-debt tasks from the product teams - I find it a bit problematic. It makes that the platform team will tackle difficult issues (with or without the product team) since they are usually experts on their field. However, I feel like there is a very fine line between helping with difficult issues, and owning technical debts that the product teams decide to leave for later. The product teams may leave the "dirty work" to the platform team, and feel like they are not owning these parts. Did you encounter such issues?
Not yet since I stayed too little in Hasura. What I experienced is that the teams wanted to solve problems (and not leaving them to the platform team) but they did not have the span or the experience to do that. So the situation was different and "more positive" (even if sometimes it was problematic for the platform team when other teams wanted to fix problems "right now" because they could not know they do not have the experience or the big picture in mind)
Ah got it. It sounds much better than I imagined it in my head π