+1 to autonomous, cross-functional teams. In my experience, they work very well because everyone is focused on the same goal (or limited number of goals) and because they are cross-functional, the teams tend to get blocked less often by needing deliverables from other groups. Another benefit I've seen in autonomous, cross-functional teams is they tend to promote a camaraderie that also improves efficiency.
-Russ On Fri, Nov 20, 2015 at 4:01 AM, Benjamin Francis <[email protected]> wrote: > On 20 November 2015 at 10:18, Vivien Nicolas <[email protected]> wrote: > >> >> Having a dedicated set of people that works on it, is definitively part >> of the plan that nobody knows but is the companion of the new architecture >> proposal: Architecture Transition Plan >> <https://wiki.mozilla.org/Gaia/Architecture_Transition_Proposal#Toolkit_Team> >> > > Wow, thanks for sharing this. > > Firstly, I really love the fundamental principle of the new architecture > to split the web apps into a REST API and a front end. This separation of > concerns is well established good practice in web development. Service > Workers will give us the magic we need to make this work offline. I also > really love the idea that the apps that make up Gaia become real web apps > with real URLs on the web which can be updated independently of Gonk and > Gecko using the web's built in update mechanism, not reliant on giant OTA > updates. This is the way of the web. I also agree that Web Components are > complimentary to this architecture and are solving a different problem. > > On the transition plan, I think the front end/back end split makes perfect > sense from a technical point of view, but I'm very concerned about the idea > of reorganising our 100+ person team into a front end team, back end teams > and a toolkit team. This organisational structure seems like it would be a > nightmare for our EPMs as virtually every single feature we develop would > have cross-team dependencies. Cross-team dependencies kill our > productivity, especially given the distributed nature of our teams across > timezones. It's bad enough having Gecko dependencies for Gaia > features,representing another level of architectural abstraction in our > organisational structure seems like a recipe for not moving anywhere fast. > > Let me give you an example of a user story, "As a user I want to create a > playlist of songs". Implementing this feature would require an addition to > the API (media back end team) and also an addition to the UI (front end > team). The front end team now has dependencies on the back end team and has > to file user stories in their backlog like "As a Gaia developer I want to > add a playlist", "As a Gaia developer I want to remove a playlist", "As a > Gaia developer I want to add a song to a playlist" etc. Now imagine this > new UI requires a new or modified web component - the front end team has a > dependency on the Toolkit team. Now imagine it requires some platform > support for streaming M3U playlists, the back end team now has a dependency > of Gecko. All these pieces have to be implemented by all of these separate > teams in their separate timezones with clearly defined interfaces for one > feature to be completed. Then Product or UX change the requirements > (inevitable) and the whole process has to start again! > > I think the new architecture does give us an opportunity to make a change > to the way we manage our teams. It gives us the freedom to create even more > autonomous cross-functional teams like the media team, productivity team > and communications team who have less dependencies on the wider project and > can move fast to deliver updates on their own timescale. Whilst I agree > with the front end/back end split and shared components, I think directly > mapping the architecture onto our organisational structure is maybe a bit > simplistic and could be a recipe for disaster. My view is that what we need > is agile, autonomous, cross-functional teams who specialist in one product > area. We probably need the existing specialists in those apps to carry out > the front end/back end split in the first place anyway. I wouldn't have a > clue how to create a front end or back end for our music app, but the media > team does. > > One other more technical comment is that one part of the architecture I > don't understand is why our "back end" pieces and our "data sync" service > are not the same thing. Wouldn't web apps usually work by having a > server-side REST API where all the data is stored, then multiple front ends > on different form factors which talk to that API and cache data on the > client? Why are we creating a web API which stores its data locally then > syncs via a separate service? Is that just applying native Firefox app > development thinking to web development? > > BTW, thanks for having this discussion in the open :) > > Ben > > > <https://lists.mozilla.org/listinfo/dev-fxos> > > _______________________________________________ > dev-fxos mailing list > [email protected] > https://lists.mozilla.org/listinfo/dev-fxos > >
_______________________________________________ dev-fxos mailing list [email protected] https://lists.mozilla.org/listinfo/dev-fxos

