이 글은 생각나는대로 계속 업데이트합니다. 현재 최종 버전은 2023.06.08. 입니다.
이 글은 제가 좋아하는 타입의 기획서를 나열한 것입니다. 개인 취향일 수도 있으므로 가볍게 읽으셔도 됩니다.
개발은 뭐라고 하는지 하나도 모르겠고 디자인은 재능이 없는 것 같으니 그나마 (조별발표때 써 봤던) 파워포인트로 문서나 만드는 기획자를 해 볼까? 라고 생각하시는 분들이 만약 있다면, 이 글을 읽고 나면 "차라리 개발이나 디자인을 배워야겠어" 라고 생각하시게 될 겁니다.
그만큼 기획 업무는 전문적이고 골치아프며 어렵습니다.
이 글은 파워포인트의 파워 목업을 다루는 법.. 같은 도구를 다루는 방법에 대해서는 전혀 다루지 않습니다. 저도 사용할 줄 몰라요
"엘레강스하고 가독성 좋게" 라는 이야기는 디자이너에게 해 주세요. (디자이너가 이 문구를 싫어합니다.)
대부분의 개발자는 이런 문구를 보면 "뭘 어쩌라는 거지" 라고 생각할 겁니다.
대신 #fff
로 색을 지정해 주세요. 폰트는 나눔고딕입니다. 라고 하면 바로 오케이입니다.
명확하게 써 주세요.
기획하시는 분은 (본인이 생각하신 것을 문서로 옮긴 것이므로) 당연하다고 생각하는 부분들도 가능하면 자세하게 적어주세요.
우리 모두는 경험도 다르고, 생각하는 방식도 다릅니다. 이건 공감의 문제도 아니고, 상식의 문제도 아닙니다. 기획서는 "의사소통을 위한 문서" 이므로 서로간 의도의 곡해가 없도록 작성하는 것이 몹시 중요합니다.
개발자는 모호한 것을 점쟁이처럼 알아맞춘 다음 생각하지 못한 부분까지 커버해줄 수 있는 존재가 아닙니다. 그걸 할 줄 알면 여기서 타자나 치고 있을 게 아니라 점집을 차려서... 정의된 사양을 보고 그걸 구현해내는 사람이죠.
아주 극소수의 기획자분들에게 보이는 현상입니다.
기획 문서를 가지고 왔는데 세상의 모든 좋은 기능은 다 붙어있네요. 마치 [페이스북 + 인스타그램 + 카카오톡 + 밴드 + 라인 + 싸이월드(음?)] 같습니다.
개발자는 이런 문서를 보는 순간 "엄청 복잡하네. 이걸 기술적으로 구현 가능하며 일정 내에 소화가 가능할까?" 라는 생각도 할 겁니다.
비슷한 내용으로 "xx와 똑같이요." 라고 적혀있는 문서도 있습니다. 데드 카피 제품을 만듬으로써 의욕이 떨어지는 것은 두번째 문제고.. 도대체 "xx와 어떤 부분을 똑같이?" 라는 생각부터 들겁니다.
에이전시 출신의 기획자 분들에게 가끔 보이는 현상인데.. 웹 에이전시는 디자인 위주의 사이트를 만드는 곳이기 때문에 디자인에 대해서는 엄청 자세하게 적혀있지만, 기능에 대해서는 "게시판 목록" 이라고 달랑 5글자만 적혀있는 경우를 봤어요.
"게시판 목록"은 기능이 아니에요. 기능은 무엇이 보여지고 어떻게 동작할 것인가에 대한 문제이지 어떻게 보여지느냐의 문제가 아닙니다.
따라서 "게시판 목록" 이라는 표현 대신 아래처럼 작성해 주시는 것을 권장합니다.
이 부분에 대해서는 많은 기획자 분들이 통감하시고, 따로 시간과 돈을 들여서 수업을 듣는 것을 많이 봤습니다.
다만 .. 백엔드는 어려워서 그런지 몰라도 (보이는 것은 코드 뿐..) 프론트엔드를 많이 배우시는데요.
우리가 생각하는 "기능"은 대부분 백엔드에서 구현합니다. 프론트엔드는 백엔드의 데이터를 받아서 보여지는 부분을 담당하는거죠.
그래서 어려워도 데이터베이스 설계나, 최소한의 서버 사이드 어플리케이션들이 어떻게 돌아가는지에 대해서는 기초 서적이라도 몇 권 읽어 두시는 것이 나중에 "잘하는 기획자"라는 호칭으로 돌아옵니다.
변화를 싫어하시는 기획자 분들 중에서는 개발을 배우면 본인들의 창의성이 저하된다고 말씀하시는 분들도 있으세요.
개발을 배우라는 것은 "본인의 한계를 제한"하라는 뜻이 아니라, 어떤 것이 가능한지 가늠하고, 커뮤니케이션을 원활하게 하라는 뜻입니다.
개발을 배우면 창의성이 저하된다고 생각한다면, 그냥 기획자를 그만두는 것이 낫다고 생각합니다. 본인이 논리적인 사고가 안되므로 "나는 꿈을 꿀테니 니가 현실로 만들어라"라는 마인드를 증명하는 것 같은 것입니다.
개발자 용어로 개념을 구분해서 서로 동작이 달라야 하는 것들을 "엔티티(entity)"라고 합니다. 예를 들어서 "게시판"을 구현한다고 하면, "게시글", "첨부파일", "작성자" 등이 엔티티가 됩니다.
이를 구분하는 이유는, 실제로 각 엔티티별로 할 수 있는 일이 다르고, 개발을 할 때는 엔티티별로 쪼개서 속성과 할 수 있는 일을 구현하기 때문입니다.
반면 이런 것은 지양하셔야 합니다.
이는 "사람"은 "문맥"에 따라서 유추라는 것이 가능하지만, 컴퓨터는 그런 것이 불가능하기 때문입니다. 개발자들은 "일을 할 때는 컴퓨터에 가까운 모드로 전환" 되므로, 문맥에 따라 같은 용어가 다른 동작을 한다거나, 다른 용어가 같은 동작을 한다거나.. 하는 식으로 코드가 작성되면 나중에는 본인도 못알아보는 이상한 코드가 되어버리기 때문에 본능적으로 싫어합니다.
기획자의 롤을 벗어나서 PO(Product Owner) 레벨이 되면 용어의 혼선을 막기 위해서 "용어사전" 이라는 것을 만드는 것도 좋은 방법입니다.
개발자는 기획서를 읽고, 엔티티를 추출해내고, 이를 코드로 옮깁니다.
엔티티는 속성, 이벤트, 상태 전이로 구분됩니다.
이벤트는 a.)발동 조건과 그에 따른 b.)이펙트가 있습니다. 예를 들면 a.)게시글 작성 후 "저장하기" 버튼을 누르면 b.) 데이터 저장 => 방금 쓴 글 상세로 이동 .. 이런 식입니다.
상태 전이는 이벤트가 일어났을 경우 상태가 변화하는가..에 대한 것입니다. 예를 들면 "게시글을 수정해서 비공개로 변경되었을 경우 게시글이 다른 사람에게 보여지지 않는다." 같은 걸 말합니다.
상태 전이가 중요한 이유는 엔티티의 상태에 따라서 엔티티가 하는 동작이 달라질 수 있기 때문입니다. 예컨데 "운영 정책 위반으로 블라인드 처리된 글" 이 수정이 가능하다면 "블라인드 처리는 어떻게 되어야 하는가.." 라는 문제가 생기기 때문에 개별 엔티티의 상태에 따라 동작이 어떻게 달라지고, 다른 엔티티에 어떤 영향을 미치는가를 늘 고민해야 합니다.
만약 기획자 분이 엔티티 정의를 기획서에 넣어주시면, 개발자는곧바로 보고 실제 코드로 옮길 수 있으므로 서로간의 커뮤니케이션 미스가 적어집니다.
하지만 한번도 이런 걸 정의해주는 기획서는 받아본 적이 없습니다...
서비스 개발은 어떤 기능이 있는지 정의가 먼저입니다. 코드가 먼저도 아니고 디자인이 먼저도 아니에요. 이를 기능 명세서라고 부릅니다.
기능 명세서는 가능하면 최대한 자세히 작성하세요. 당연하다는 함정에 빠지지 마세요. 같은 디자인이라도 사용자 경험은 전혀 다를 수 있어요.
개인적으로 추천하는 방법은 "앞에 7살짜리가 있다고 생각하고 그 아이가 이해할 수 있는 수준" 으로 작성하는 겁니다.
이 과정이 귀찮고 번거롭다면 본인이 할 일을 남에게 미루는 거에요.
무선 청소기를 예로 들어보겠습니다.
셋 다 중요합니다.
개발자는 "기능"과 "스펙" 이 있어야 동작하는 제품을 만들 수 있기 때문에 세개 다 필요합니다.
이제부터는 실전 기획서에서 꼭 필요한 항목을 예시로 살펴보겠습니다.
목록을 정의할 때는 최소한 아래의 항목들이 필요합니다.
>>
버튼을 누르면 한번에 몇 페이지를 뛰어넘는가. (1페이지에서 눌렀다면 6페이지로 이동, 2페이지에서 눌렀다면 7페이지로.) ...
) 로 뒷 부분은 생략alert
보인 후 목록으로 이동
선생님 감사합니다... "제가 좋아하는 타입의 기획서, 개인 취향일 수도 있으므로" 라고 하셨지만, 모든 개발자가 좋아할 것 같아요.. 잘 읽었습니다!