Balancing Agile Ops and Inner Source
A underlying theme of the past year has been encouraging the formation of sustainable self-organizing inner and open source projects. This has been particularity interesting at work, with much room for improvement. Based on this experience, I feel like some changes can be made to more rigidly define the balancing of agile ops scrum teams and adhoc organizations.
By the time I first stepped into an Autodesk office a conscious decision had already been made to encourage inner and open source projects. Internal ad-hoc organizations are provided rational guidelines, policy, and process for running their communities. Also provided are tools such as GitHub and Slack for encouraging emergent behavior driven software development. Despite this, and some success with open source projects, it remains difficult for individuals to dedicate time as core contributors on adhoc organized projects. As there are diminishingly few projects which actually do need to be solved on a one-off basis we should be doing everything we can to encourage sustainable shared solutions.
A challenge going forward is managing ad-hoc organizations in a live-operations-centric environment while striving to adhere to aspects of agile development. It's always been difficult balancing meticulously groomed backlogs and scrum teams against the often hard to predict care and feeding of live systems. Mixing in projects which may not be tied to a single scrum team is not easy. The naive approach is to spin up a new scrum team and have people split time but this is far from what most consider agile.
We've started brewing a system of governance which we hope will help us succeed in this transformation. It is vitally important for open and inner source projects to be treated as long-lived entities distinct from business initiatives and priorities that exist in the moment. At the same time, it must be assured that the priorities of an adhoc organization feed off of the overall business needs.
When starting a new project, make sure to include not only core contributors, business stakeholders, but also introduce a community manager for the adhoc organization. This new role is functionally similar to that of product ownership, however more focused on coordinating the efforts of a heterogeneous group of individuals who are not all on a single scrum team. Begin with transparent communication of overall goals, the specific people involved (with explicit roles), and how the work ties back to concrete business needs. It is important that business product owners and project community managers remain synchronized with regards to their separate backlogs. After the project start, periodic checkin meetings should be conducted to ensure that project priorities remain in line with business needs. There may not always be a one to one match between project and business goals in the now, but on a long enough timeline they should be synchronized. It's also strongly suggested that the project hosts regular "office hours" to assure those who are not direct stakeholders can catch the attention of core contributors.
It is the responsibility of the associated business product owners to ensure that both core and casual project contributor have appropriate tasks present in their scrum backlogs. There is an underlying assumption here of the organization empowering engineers to collaborate on projects which do not only solve their current problem du jour. With a tight feedback loop between product owners and community managers, the links between project tasks and business needs will remain in sync. With an organization that is empowered with aspects of prioritization flexibility, a more sustainable software ecosystem will no doubt result.