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 21 Next »

TeamForm can be used to implement a range of operating models and organisational frameworks as outlined here https://www.teamform.co/solutions-for-teams .

TeamForm has a feature called principles, which can be used as guardrails when transitioning to, or as part of, cross-functional, agile or lean ways of working methods.

Teamform has some predefined principles grouped into principle sets that can be configured to meet a particular use case.

Principle sets can be created to accommodate different team archetypes (e.g. cross-functional, flow-to-work, service, platform, etc).

Examples of principles and principle sets

Individual/Role/General Principle Set

  • X layers from the CEO

  • Role diversity (individual) and total role diversity (organisation)

Team/Squad Principle Set

  • Between X & Y members (e.g. 5-9), full or part-time

  • Location e.g. same city, same building, same floor, timezone, if distributed - no more than X locations

  • Specific and/or dedicated roles included e.g. Scrum Master or Product Owner, etc

  • Number of line managers

Group/Tribe/'Team of Teams' Principle Set

  • Maximum number of individuals e.g. 150

  • Maximum number of teams/squads

  • Specific and/or dedicated roles e.g. Tribe Lead, Group Performance Lead, etc

Domain/Business Unit Principle Set

  • Maximum number of individuals e.g. 500

  • Maximum number of groups/tribes/'teeam of teams' e.g. 7

Configuring Principles

Principles are enabled in a workspace by default, but can also be toggled off via settings / workspace feature toggles

image-20240114-234126.png

Principles sets are defined via Settings / Principle sets using a JSON file.

image-20240114-234529.png

The key fields referenced in a principle set are as follows:

“id” - a unique id string.

”name” - a name for this principle set (string)

“suitableGroupTypes”: a single team type (e.g. “squad” or a list of team types e.g. “squad”, “tribe”, “COE”

Default principle sets can be defined per team type via Settings / Org Structure type config. Select a team type, then choose a preferred principle set for that team type.

image-20240114-234750.png

JSON parameters for Principles:

Member Count

parameter maxMembers(optional), minMembers(optional)

title Should consist of no more than ${maxMembers} direct members.

Should consist of at least ${minMembers} direct members.

Should consist of between ${minMembers} and ${maxMembers} direct members.

      {
          "type": "MEMBER_COUNT",
          "args": {
              "maxMembers": 10,
              "minMembers": 5
          }
      }

Total Member Count

parameter maxMembers

title Should consist of no more than ${maxMembers} direct and indirect members.

    {
        "type": "TOTAL_MEMBER_COUNT",
        "args": {
            "maxMembers": 150
        }
    }

Spread

parameter maxTeamsPerMember, teamType

title Each member should be in no more than {maxTeamsPerMember} teams.

  {
        "type": "SPREAD",
        "args": {
            "maxTeamsPerMember": 1,
            "teamType": "design"
        }
    }

Role Spread

parameter role, roleDisplayName, limit, teamType, teamDisplayname

title ${roleDisplayName} should work in no more than ${limit} {teamTypeDisplayName}

    {
        "type": "ROLE_SPREAD",
        "args": {
            "role": "(.*product.*owner)",
            "roleDisplayName": "Product Owner",
            "limit": 1,
            "teamTypeDisplayName": "Agile Team",
            "teamType": "(group|team)"
        }
    }

Ownership

parameter maxTeamsPerMember, teamType

title Should have 1 ${ownershipRoleDisplayName}.

consist of between 1 and ${limit} ${ownershipRoleDisplayName}.

Note: Ownership Role references Job Title (jobTitle) and the SPECIALIST Tag type (tagType) for a person. If either match, it will be seen as meeting the principle. (uses Regex - more examples below)

    {
        "type": "OWNERSHIP",
        "args": {
            "ownershipRoleDisplayName": "Product Owner",
            "limit": 1,
            "ownershipRole": "(.*product.*owner)"
        }
    }

Locality

parameter maxLocations

title Where teams are distributed it will be across no more than ${maxLocations} premises

      {
          "type": "LOCALITY",
          "args": {
              "maxLocations": 1
          }
      }

Line Manager Count

parameter maxManagers

title Team should have no more than ${maxManagers} line managers.

      {
          "type": "LINE_MANAGER_COUNT",
          "args": {
              "maxManagers": 5
          }
      }

Role Conformity (TBD)

parameter requiredTags,

title Each team member should have a required set of tags.

Note: needs verifying by a dev (update this is only used by 1 customer so might not be something we use more broadly with a common set of needs(

      {
          "type": "ROLE_CONFORMITY",
          "args": {
              "requiredTags": [
                  "tag", "tag", "tag"
                ]
          }
      }

Role Diversity

parameter requiredRoles,

title Each team should have ${minCount}{Role}

Note: requiredRoles references Job Title (jobTitle) and the SPECIALIST Tag type (tagType) for a person. If either match, it will be seen as meeting the principle. (uses Regex - more examples below)

    {
        "type": "ROLE_DIVERSITY",
        "args": {
            "requiredRoles": [
                {
                    "role": "Product Owner",
                    "minCount": 1
                },
                {
                    "role": "Devops Engineer",
                    "minCount": 1
                },
                {
                    "role": "UX/Designer",
                    "minCount": 1
                },
                {
                    "role": "Senior Software Engineer",
                    "minCount": 1
                },
                {
                    "role": "Software Engineer",
                    "minCount": 3
                }
            ]
        }
    }

parameter roleTagType,

Note: roleTagType references tag type for the requiredRoles. This defaults to SPECIALIST.

Total Role Diversity

parameter requiredRoles

title Team should be cross-functional and include the following capabilities:${requiredRoles}

    {
        "type": "TOTAL_ROLE_DIVERSITY",
        "args": {
            "requiredRoles": [
                {
                    "role": "Data Technician",
                    "minCount": 1
                },
                {
                    "role": "Field Technician",
                    "minCount": 1
                },
                {
                    "role": "Field Engineer",
                    "minCount": 3
                },
                {
                    "role": "Electrical Engineer",
                    "minCount": 3
                }
            ]
        }
    }

Same City Co-located (incomplete)

parameter null

title All members in the same city should work at the same address.

      {
        type: "SAME_CITY_COLOCATED",
        args: {}
      }

Child Team Count

parameter maxTeams, minTeams, subGroupName

title Should consist of no more than ${maxTeams} direct ${subGroupName}.

Should consist of at least ${minTeams} direct ${subGroupName}.

Should consist of between ${minTeams} and ${maxTeams} direct ${subGroupName}.

      {
          "type": "CHILD_TEAM_COUNT",
          "args": {
              "maxTeams": 15,
              "minTeams": 1
          }
      }

Direct Workforce Count

parameter minCount, companyNames

title Should consist of at least ${minCount} direct workforce members

      {
          "type": "DIRECT_WORKFORCE_COUNT",
          "args": { 
              "minCount": 4, 
              "companyNames": [
                  "Company Name"
                ]
          }
      }

Timezone Overlap

parameter goodOverlap

title Members geographically distributed should have at least <${goodOverlap} overlapped working hours.

TBC: need to confirm this is correct (code reference)

    { 
          "type": "TIMEZONE_OVERLAP",
          "args": {
                "goodOverlap": 3
          }
    }

Parameter syntax

Many arguments use Regex. For example "role": "(.*product.*(owner|manager))" will match either product manager or product owner (or variations containing these words e.g. senior product manager, App product owner…etc). "role": "(.*agil.*coach)" will match agility coach, agile methodology coach..etc.

Bulk assigning principles to teams

You can use the Teams CSV import (Settings → Data Integrations → Create New - > Teams csv file upload

image-20240117-011823.png

Use a csv file format as follows:

Team ID

Principle ID

TEAM1234

111111112

and a field map as follows:

image-20240117-015004.png

Troubleshooting:

Can’t find a team a principle set in the drop down for a team?
image-20240117-012112.png

It is likely you need to ensure a principle set is configured to have a suitableGroupType matching the team type for that team (as defined in Settings → Org Structure → Team Types)
E.g.

    {
        suitableGroupTypes:”squad” 
    }

Filter by label

There are no items with the selected labels at this time.

  • No labels