스쿼드

티켓에 persona: developer라고 적으면 그 일은 developer가 합니다. 누가 할지를 티켓 쓰는 사람이 이미 정한 것입니다. 그런데 일을 받아 놓고 나서야 누구 몫인지 갈리는 티켓도 있습니다.

스쿼드는 그 결정까지 맡기는 방법입니다. 페르소나 몇을 한 이름으로 묶고 티켓에는 그 이름을 답니다. 그 티켓은 묶음의 리더에게 갑니다. 리더는 일을 직접 하지 않습니다. 티켓을 읽고 누가 할지 정해서 그 멤버 앞으로 티켓을 새로 냅니다.

페르소나와 갈리는 자리

스쿼드에는 프로필이 없습니다. 스킬도 메모리도 색도 상한도 없습니다. <큐 폴더>/squads/<이름>/ 안의 파일 둘이 전부입니다. 멤버를 적는 members, 그리고 리더가 고를 때 읽는 rules. 뒤엣것은 없어도 됩니다.

스쿼드가 신원이 아니어서 그렇습니다. 프로필은 당신이 누구인지를 세션에 넘기는 글이고 그건 여전히 페르소나의 몫입니다(페르소나). 스쿼드가 정하는 것은 둘입니다. 이 티켓을 누가 받는가, 그리고 그 사람이 무엇을 보고 나눌 것인가.

첫 줄에 적힌 이름이 리더입니다. members는 순서가 뜻을 갖는 파일입니다. 맨 위 한 줄이 이 스쿼드의 리더고, 스쿼드를 문 티켓은 그 사람에게만 갑니다. 나머지 멤버는 리더가 티켓을 내주기 전까지 그 일과 아무 관계가 없습니다.

새 프로젝트에는 default가 있습니다

프로젝트를 만들면 스쿼드 하나가 같이 깔립니다. 이름은 default입니다. 페르소나 화면을 열면 왼쪽 목록 아래쪽 묶음에 그 한 줄이 벌써 서 있습니다.

멤버는 넷입니다. pm developer qa designer. 같이 깔리는 페르소나는 다섯인데 그중 archive-manager만 빠졌습니다. 그 페르소나는 리더가 고를 일이 없습니다. 티켓을 닫는 세션이 아카이브 티켓을 낼 때 이름을 직접 부르니까요.

리더는 pm입니다. 첫 줄이 리더라는 규칙 그대로입니다. rules는 안 깔립니다. 그래서 pm은 멤버 이름과 각자 프로필 첫 줄만 보고 누구 몫인지 정합니다. 고를 기준을 정해 주고 싶으면 오른쪽 칸의 규칙에 쓰세요.

티켓을 발행하려고 다이얼로그를 열면 수행자 칸이 스쿼드 default로 이미 골라져 있습니다. 그대로 발행하면 그 티켓은 pm에게 갑니다. pm이 읽고 나서 멤버 앞으로 티켓을 냅니다. 누가 할지 이미 알고 있다면 같은 칸에서 페르소나를 고르세요. 아무도 안 붙이려면 맨 위의 없음입니다. default를 지우거나 이름을 바꾸면 그 칸은 처음부터 없음으로 열립니다.

이미 돌고 있는 프로젝트에는 생기지 않습니다. 스캐폴딩은 새 큐를 만들 때만 파일을 놓습니다. 이미 있는 파일은 덮지 않습니다. 쓰던 프로젝트에 하나 세우려면 아래 §스쿼드 만들기대로 직접 만드시면 됩니다. 이름을 default로 지으면 발행 칸의 기본 선택도 따라옵니다.

스쿼드 만들기

왼쪽 내비의 페르소나로 갑니다. 스쿼드는 같은 화면에 삽니다. 페르소나를 만들던 그 입구에 무엇을 만들지 고르는 칸이 하나 늘어 있습니다. 거기서 스쿼드를 고르면 됩니다.

이름 규칙은 페르소나와 같습니다. 알파벳과 숫자, -, _만 씁니다. 그리고 페르소나와 이름을 같이 씁니다. 이미 있는 페르소나 이름으로 스쿼드를 만들려 하면 거부되고 반대도 마찬가지입니다. 왼쪽 목록에서 둘이 한 이름공간을 쓰기 때문에, 이름이 겹치면 어느 줄이 어느 것인지 구별할 길이 없습니다.

만들고 나면 왼쪽 목록이 두 묶음으로 갈리고 아래쪽 묶음에 그 줄이 섭니다. 새 프로젝트에서는 default가 있어서 그 묶음이 처음부터 서 있습니다. 스쿼드를 전부 지우면 묶음도 같이 사라집니다. 줄에는 이름과 멤버 수가 붙습니다. 색 점도 자수도 없습니다.

멤버 고르기

스쿼드 줄을 고르면 오른쪽 칸이 열립니다. 페르소나 칸보다 짧습니다. 절이 둘, 규칙멤버입니다. 멤버 목록에는 프로필이 있는 페르소나가 전부 나오고 이름을 눌러 켜고 끕니다. 다 골랐으면 저장입니다.

프로필이 없는 페르소나는 이 목록에 안 나옵니다. 이름만 티켓에 적혀 있고 파일은 아직 없는 페르소나가 그렇습니다. 먼저 프로필을 만들어야 멤버로 고를 수 있습니다.

멤버로 넣어 둔 이름의 프로필이 나중에 사라지면 그 이름은 목록 밖에 따로 남습니다. 다시 고를 수는 없고 떼어내는 것만 됩니다. 저장할 때 같이 지워 버리면 사람이 넣어 둔 이름이 소리 없이 없어집니다. 그래서 자리를 만들어 보여 주는 쪽을 골랐습니다.

멤버를 하나도 안 고르고 저장할 수도 있습니다. 왼쪽 줄의 멤버 수가 0으로 뜹니다. 그 스쿼드를 문 티켓이 어떻게 되는지는 아래 §엔진이 리더를 띄우는 규칙에 있습니다.

역할은 이름 옆 칸에 적습니다. 멤버를 켜면 그 줄에 입력칸이 하나 붙습니다. 화면을 맡습니다처럼 이 묶음에서 무엇을 하는 사람인지 한 줄로 씁니다. 비워 두면 그 페르소나 프로필의 첫 줄이 회색으로 비칩니다. 저장해도 그 문장이 파일에 들어가지는 않고, 리더가 받아 볼 때 그 자리를 프로필 첫 줄이 대신 채웁니다. 스쿼드마다 역할을 다시 쓸 의무는 없다는 뜻입니다.

리더가 무엇을 보고 고를지는 위쪽 규칙 칸에 적습니다. 문법이 없는 자유 서술이고 엔진은 읽어서 리더에게 넘기기만 합니다. 비워 두고 저장하면 파일이 아예 없어집니다. 그러면 리더는 멤버 이름과 각자의 역할만 보고 정합니다.

두 값이 앉는 자리는 squads/<이름>/memberssquads/<이름>/rules입니다. members는 한 줄에 <이름> <역할>이고 첫 공백에서 한 번만 자르니 역할 쪽은 문장으로 쓰셔도 됩니다. 편집기로 직접 고쳐도 되지만 줄 순서는 조심하세요. 화면에서 저장을 누르는 순간 순서가 이름 오름차순으로 다시 쓰입니다. 순서가 바뀐다는 것은 리더가 바뀐다는 뜻입니다. 이름이 뒤인 페르소나를 리더로 두고 싶으면 파일에서 순서를 잡고 그 뒤로는 이 화면에서 저장하지 마세요.

티켓에 스쿼드 붙이기

티켓 frontmatter에 squad: 한 줄을 적습니다. 값은 스쿼드 이름 하나입니다. deps:처럼 목록으로 쓰지 않습니다. 티켓 하나는 스쿼드 하나에 듭니다.

---
ticket: 3f9a12c4
title: 로그인 화면 여백이 좁습니다
kind: work
squad: frontend
---
text

손으로 안 써도 됩니다. 발행 다이얼로그와 티켓 상세의 편집 폼에서도 같은 칸에서 고릅니다. 페르소나를 고르던 그 칸의 선택지가 두 묶음으로 갈려 있고 아래쪽이 스쿼드입니다. 티켓의 수행자가 하나라서 칸도 하나입니다.

persona:squad:는 그래서 같이 서지 않습니다. 화면에서 스쿼드를 고르면 squad:가 쓰이고 persona: 줄이 지워집니다. 페르소나를 고르면 그 반대입니다. 파일을 손으로 고치다가 둘 다 적었다면 squad:가 이깁니다.

엔진이 리더를 띄우는 규칙

티켓을 집는 그 순간에 members 첫 줄을 읽습니다. 세 줄이 전부입니다.

그때 큐의 상태처분
리더가 자기 상한에 안 찼습니다리더가 그 티켓을 받습니다
리더가 자기 상한에 찼습니다아무도 안 집습니다. 다른 멤버가 놀고 있어도 그쪽으로 안 넘어갑니다. 리더 자리가 날 때까지 티켓은 대기 레인에 앉아 있습니다
그 이름의 스쿼드가 없거나 멤버가 비었습니다로그에 WARN 한 줄을 남기고 종전 경로로 갑니다. persona:가 남아 있으면 그 값으로, 없으면 페르소나 없이 돕니다

리더가 막히면 그 스쿼드가 통째로 섭니다. 고장이 아니라 고른 값입니다. 누구에게 줄지를 한 사람의 판단에 맡겼으니 그 사람이 바쁘면 판단이 안 나옵니다. 자주 막히면 리더의 상한을 올리거나(페르소나) members 첫 줄을 덜 바쁜 페르소나로 바꾸세요.

멤버가 놀고 있어도 안 넘어가는 것은 티켓 하나가 두 사람에게 갈라지지 않게 하는 값이기도 합니다. 리더가 늦게 보든 빨리 보든 그 티켓을 쪼개는 사람은 하나입니다.

members 순서에서 뜻이 있는 줄은 첫 줄 하나입니다. 둘째 줄부터는 순서가 아무것도 안 정합니다.

리더가 하는 일

리더 세션이 받는 것은 자기 프로필과 스킬, 메모리에 스쿼드 한 덩이가 더해진 것입니다. 스쿼드 이름, 멤버 전원의 이름과 각자의 역할, 누가 리더인지, 그리고 rules 전문입니다.

리더는 ## Goal을 읽고 멤버 앞으로 티켓을 냅니다. persona:에 그 멤버 이름을 적은 새 티켓입니다. 그러고는 자기가 물고 있던 티켓의 ## 결과에 누구에게 무엇을 냈는지 적고 닫습니다. 코드가 한 줄도 안 갈린 채 닫히는 것이 정상입니다. 리더가 한 일은 결정이지 작업이 아닙니다.

그래서 스쿼드 티켓 하나에는 세션 한 번과 티켓 한 장이 더 듭니다. 판단을 맡기는 값입니다. 누가 할지가 이미 정해져 있는 일이면 처음부터 persona:를 적는 편이 짧습니다.

리더가 낸 티켓에 다시 squad:가 붙으면 리더가 또 뜹니다. 엔진은 이걸 막지 않습니다.

멤버도 자기가 어느 스쿼드인지 압니다. 스쿼드에 든 페르소나는 그 덩이를 늘 프롬프트로 같이 받습니다. 지금 문 티켓에 squad:가 붙었는지와 상관없습니다. 자기 역할과 옆 사람 역할을 알고 일하라는 뜻입니다. rules는 리더만 받습니다.

상한과 기록

여기 걸리는 상한은 리더의 것입니다. 상한은 페르소나마다 거는 값이고 스쿼드에는 따로 상한이 없습니다. 리더가 developer고 developer 상한이 둘이면, developer가 이미 둘을 물고 있는 동안 그 스쿼드 티켓은 안 뜹니다. 스쿼드를 거쳐 들어와도 셋째는 없습니다.

엔진은 티켓을 집는 순간 한 가지를 더 합니다. persona:에 리더 이름을 적습니다. 그래서 그 세션은 평범한 페르소나 티켓과 똑같이 세어집니다. 보드 카드의 페르소나 칸도, 색 점도, owner: 줄도, 프롬프트에 실리는 프로필도 한 자리 안 갈립니다.

아직 아무도 안 집은 동안은 보드가 squad: 값을 대신 보여 줍니다. 색 점은 안 붙습니다. 스쿼드에는 색이 없으니까요. 집히는 순간 그 자리가 리더 이름으로 바뀝니다.

티켓이 왜 그 페르소나로 갔는지는 그 두 값을 나란히 놓으면 보입니다. squad:는 파일에 그대로 남아 있고 persona:가 그 묶음의 리더입니다. 티켓 상세의 frontmatter 표에서 둘을 같이 읽으시면 됩니다.

persona:는 지시가 아니라 기록입니다. 세션이 끝나 티켓이 회수돼도 안 지워지고, 다음 디스패치가 다시 풀어서 덮어씁니다. 한 사람에게 고정하고 싶으면 squad: 줄을 지우세요.

스쿼드 삭제

오른쪽 칸 머리의 삭제입니다. squads/<이름> 폴더가 지워지고 되돌릴 수 없습니다.

그 스쿼드를 문 티켓의 squad: 값은 그대로 남습니다. 같이 지워지지 않습니다. 그 티켓이 다음에 디스패치될 때 위 표의 셋째 줄대로 경고 한 줄이 붙고 종전 경로로 갑니다. 이름만 바꾸고 싶다면 새 스쿼드를 만들어 멤버를 채우고 티켓의 값을 옮기세요.

다음은 프로토콜입니다.