I'm working in a company that mainly perform mobile apps with their backend systems. My question is, what's the best practice to handle the same projects over multiple platforms (iOS and Android) and keep them synced together using Agile approach? Should I use a separate project to each one, or handle them in the same project with having duplicate User Stories for each platform? Or do we have another solution for that approach?
-
I don't feel like this really counts as an answer, but if you haven't already, take a look at the spotify engineering culture videos on youtube (youtube.com/watch?v=Mpsn3WaI_4k) and there's a good whitepaper to match it. If I recall correctly, the whitepaper speaks more to the cross-platform details. I don't think you can just copy what they do, but there might be some ideas in there.– DanielSep 3, 2015 at 13:14
2 Answers
TL; DR
You do not necessarily have the same "project" across multiple platforms. You must identify whether you are producing different (but similar) products that form multiple projects, or a single product with multiple front-ends that can be treated as a cohesive project within a single team.
Scrum projects are generally based around a "one team, one product" approach. While there may be edge cases with other frameworks, it is a good rule of thumb to follow with any agile practice unless you have a really solid reason to deviate from it.
Define Your Projects Based on Product Context
From a Scrum perspective, each team should be dedicated to developing a single product from a unified product backlog. This leads to two primary use cases:
- A single back-end product with multiple front-ends (e.g. Android and iOS), in which case a fully cross-functional team might be able to work from a single product backlog.
- Two separate products (e.g. an Android product and an iOS product) which each have a dedicated project team and separate product backlogs.
In the first case, you have one project. In the second, you have two projects that can be tied together with some form of Scrum-at-scale such as a Scrum of Scrums or SAFe.
Similar Features Aren't Inherently Unified Products
Keep in mind that just because you have similar features in two separate product lines, that doesn't mean you have (or should have) a unified project. For example, you might have a common feature such as "user logins" in both products, but the products themselves are still different, and the implementation details of each feature are unlikely to be identical across products.
As a result, you must carefully decide whether you truly have one project or two, as defined in the section above. Similarity of features, or the existence of common user stories, is never sufficient by itself to merge separate products into a single project.
A lot depends on how the Product Owner sees the development for the two platforms.
Do they view the development of a feature for iOS and the same feature for Android as two seperate pieces of work that can be prioritised alongside other backlog items? For example, the search feature is a high priority on iOS, but a low priority on Android.
Or do they believe that a feature is only complete once it is available on both the iOS and Android platforms?
I would suggest that if every feature must be complete on both platforms it would make more sense to have a single backlog item per feature.