$customHeader
Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 6 Next »

STATUS: Draft - open for comments

The doc is open for comments. Eventually we want to get to “living document”. This can be modified and moved forward but you have to want to propose changes, not just whine about it (wink)

Context

Engineering themes/squads/teams currently organize themselves on the wiki in a lot of different ways which makes it difficult to discover information about other squads and hinders cross team communication and collaboration.

Inspired by Confluence’s own page on how to write better documentation and a lot of grief of not being able to find anything in Confluence, how can we improve our docs and organization to make docs less of a dirty word?

… documentation comes in all shapes and sizes, internal and external. Different types of docs require different voice, tone, formatting, contributors, audience, and content.

General Proposals

  1. All spaces have a clear owner (listed in the top-level doc whenever possible) to manage updates, permissions, and archiving.

  2. We use 3 large “types” of documentation, designed for different purposes:

    1. Reference/system/end-user documentation - The documentation we’re most familiar with: docs that explain how to do something, or provide helpful reference.

    2. Team documentation - Landing pages for organizational groups of people, including contact information and links to docs/projects.

    3. Project documentation - Pages for organizing projects, particularly across-theme/org. These will act as source-of-truth and points of entry for finding out about a project.

  3. Archive more. Anyone stumbling across an out-of-date page should be empowered to update or archive it. Alternatively, they may request update/archive using the following signals (for spaces with more restrictive archiving rights):

    1. #updates-needed - Propose adding this new tag to help space owners find out-of-date pages.

    2. #archive - Propose adding this new tag to help space owners find pages that should be archived/deleted.

    3. Investigate tooling/watching for this tag for space owners so they can be notified about these.

Rationale:

  • The highest level goals are organizational and doc clarity & helpfulness. Establishing clear owners helps make it clear who should be updating/making decisions about a doc.

  • Using different documentation patterns for reference/team/projects allow us to scope documentation in a way we scope our thinking and organization in edX already, making it easier to navigate the org.

  • We also need a way of pruning out of date info. Using tags helps space owners identify out of date pages, which we empower them to actively archive.

Organizational Proposals

  1. Highest level space is edX which includes links to:

    1. Departments & Functions - Departments and functions each get their own space. They contain docs that are helpful across team/theme/org boundaries (e.g. Brand, UX, HR, Data Engineering) like reference, end-user docs, and projects scoped to the department (e.g. brand guidelines, HR reference, architecture docs).

      1. Internal / External - Some of these spaces (e.g. Brand, Engineering) should inherently be public, while others (e.g. HR, IT, Eng-internal) should be internal only. Spaces should clearly identify the audience, in the space title or landing page and have access rights set accordingly.

    2. Themes - Themes also each get their own space, linked from the edX space for visibility. They are a cross-functional organization of resources around a theme (e.g. Content, Engagement). Themes further contain:

      1. Teams - An entrypoint for finding teams connected to a theme. This could be a folder of team pages or a link to team spaces, depending on team setup. See #Teams header for more.

      2. Projects - A folder for projects that are owned by the Theme and span multiple Teams, this allows for pages to be accessible & discoverable by the entire theme and allow for teams/resources to transition on/off the project.

    3. Working Groups - Groups or initiatives that don’t have clear functional or theme owners (e.g. Security Working Group, DEI, Hackathon).

Rationale -

  • Structuring our docs like we structure our organization helps enforce mental models that make traversing the docs (and org) easier.

  • Continuing to use department/function spaces allows functional docs (e.g. engineering, HR) to be broadly accessible across the org but to control internal/external access.

  • Themes are the construct we already use for project and team planning, so creating spaces for Themes helps match that scoping appropriately.

  • Teams should be granted flexibility to organize as they want. To avoid overhead, they can exist only as a sub-page of a theme, or operate their own space. This also allows for a team to persist docs (e.g. retros, internal reference) across org changes. Regardless, teams should be discoverable in the Theme under which they operate.

Sample Doc Hierarchy

Example hierarchy, elements in brackets are placeholders for actual themes/teams/projects.

  • edX

    • Departments & Functions

      • ENG, IT, HR, etc.

        • Projects, reference, and end-user documentation related to the function.

    • Working Groups

      • Hackathon, DEI, etc.

    • Themes

      • [ Theme A ]

        • Teams

          • [ Team 1 ]

            • Projects > [ Project 1 ]

            • Projects > [ Project 2 ]

          • [ Team 2 ]

          • [ Team 3, etc. ]

        • Projects

          • [ X-functional project 1 ]

          • [ X-functional project 2 ]

      • [ Theme B ]

      • [ Theme C, etc. ]

Teams / Working Groups

Team pages are used for organizing groups of people (this applies both to teams/squads and working groups). Their landing page (e.g. /wiki/spaces/PT/pages/1054113880 ) is used for outside-team members to learn about and contact the team. Internally, they may structure their docs however they like, following previously documented guidance for docs that have a broader audience. The template of required fields:

  1. Membership - Who is on the team?

  2. Past names - What are past names for the team?

  3. Contact info - How does the team preferred to be contacted by people outside their team?

  4. Docs - Where does the team store in-progress or other internal documentation?

Rationale - Particularly with lots of team/org changes, tracking who is where, who owns what, and how to contact them have been repeated refrains. By clearly indicating who is on teams, what the team used to be called, and how to contact, we remove having to have a mental model of how the org has evolved.

Projects

Project pages are for centralizing information about a project. They should be viewed as the source of truth for decisions/docs surrounding a project or feature.

Projects should exist a the lowest level of access to still be accessed by all stakeholders (a project for a team may exist in a team’s project folder, but a project with multiple on-theme teams should exist at the theme project level).

Project pages should answer the following:

  1. Problem definition/summary - What is the project trying to accomplish?

  2. Membership - Who (individuals or teams) is working on the project and who has the final say on project decisions?

  3. Doc links - Relevant links to Jira epics/features, design docs, etc. This is where canonical info lives and should be seen as source of truth.

Rationale - A consistent issue with collaboration/communication is having a clear, centralized location for docs and decisions. Teams are small enough where they might be able to keep it all “in their heads” but, for cross-team projects, we need better ways of organizing multiple minds. This removes the difficulty with discovering different docs and worrying whether they’re out of date. Identifying the key decision maker also removes the ambiguity of wondering who has the final say on a design decision.

  • No labels