제5화. 말뿐인 요구사항은 '데이터'로 번역해야 시스템이 된단다
아들아, 회의실에서 고객들이 하는 말은 대개 구름 위를 떠다니는 것처럼 추상적이란다. "화면이 좀 시원했으면 좋겠어요", "로그인이 편해야 해요" 같은 말들이지. 하지만 컴퓨터는 '시원하다'거나 '편하다'라는 말을 이해하지 못한단다. 전문가인 네가 할 일은 그 모호한 말들을 컴퓨터가 알아듣는 '데이터'와 '로직'으로 번역해주는 것이란다.
고객은 화면상의 버튼이나 디자인을 먼저 이야기하지만, 시스템의 본질은 그 밑에 흐르는 데이터란다. 버튼 하나를 만들더라도 그 버튼을 눌렀을 때 어떤 데이터가 생성되고 어디로 저장되는지를 먼저 파악해야 해.
시스템의 뼈대는 화려한 화면이 아니라, 보이지 않는 곳에서 흐르는 데이터 구조란다.
아빠의 노하우: 아빠는 고객의 설명을 들으면서 머릿속으로 데이터의 흐름을 그렸단다. "그 정보는 어디서 오나요? 누구에게 전달되나요? 얼마나 저장되나요?"라고 물으며 데이터의 생애주기를 추적했지. 데이터의 입출력(I/O)만 정확히 정의해도 기획의 절반은 성공한 것이란다.
"빨리 처리되게 해주세요"라는 말은 재항의 시작이야. 누구에게는 1초가 빠른 것이고, 누구에게는 5초도 빠른 것일 수 있거든. 이런 간극을 줄이지 않으면 나중에 반드시 문제가 생기게 돼.
고객의 형용사를 시스템의 '사양(Specification)'으로 바꾸는 것이 기획의 핵심이란다.
아빠의 노하우: 아빠는 "빠른 처리"라는 말을 들으면 "동시 접속 100명 기준 응답 속도 2초 이내"처럼 숫자로 바꿔서 제안했어. 이때 중요한 건 서버의 물리적 한계와 서비스의 가용 가능 성능을 먼저 알고 있어야 한다는 거야. 무조건 많고 빠르게만 약속했다가는 나중에 테스트 때 성능을 못 맞춰 프로젝트가 터질 수도 있거든. 지킬 수 있는 숫자를 정리하는 것이 진짜 실력이란다.
요구사항 정의서나 화면 설계서는 고객과 개발자가 소통하는 유일한 통로란다. 고객에게는 업무의 흐름을 보여주고, 개발자에게는 데이터의 로직을 설명하는 '이중 언어'가 담겨 있어야 해.
기획 문서는 단순한 기록이 아니라, 서로 다른 언어를 쓰는 사람들을 이어주는 가교란다.
아빠의 노하우: 아빠는 기획서 한쪽에 반드시 '데이터 매핑 표'를 넣었어. 화면의 '이름' 칸이 데이터베이스의 'USER_NM' 필드와 연결된다는 걸 명시하는 식이지. 보통 프로젝트에서 문서는 고객의 요구로 만드는 경우가 많은데, 형식상으로만 정리하는 게 아니라 실제 개발에 도움이 되도록 정리해야 해. 또한 이 문서는 나중에 프로젝트 완료의 기준으로도 사용된다는 점을 잊지 마렴.
고객은 정상적인 상황만 이야기하지만, 시스템은 비정상적인 상황에서 무너지는 법이야. 데이터가 비어있을 때나 잘못된 형식이 들어왔을 때 어떻게 처리할지를 데이터 관점에서 미리 정해두어야 해.
완성도 높은 시스템은 '안 될 때'의 데이터를 어떻게 처리하느냐에서 결정된단다.
아빠의 노하우: "값이 없으면 기본값으로 무엇을 넣을까요?" 같은 질문을 집요하게 던졌어. 이런 부분은 고객이 먼저 정리해주지 않는단다. 일반적으로 개발자가 예외 처리를 하도록 하되, 정책적인 결정이 필요한 애매한 부분만 고객의 확인을 받는 것이 효율적이야. 분석 단계에서 예외를 미리 짚어주어야 개발 로직에 구멍이 생기지 않는단다.
한 마디
"고객의 언어는 감정이 섞인 '시(詩)'와 같고, 개발자의 언어는 빈틈없는 '수식'과 같아. 그 사이에서 중심을 잡고 모호함을 명확함으로 바꾸는 '번역가'가 될 때, 너는 비로소 대체 불가능한 전문가가 될 수 있단다."
회의실에서 들리는 고객의 추상적인 표현을 기술 문서에 담을 '데이터 언어'로 바꾸는 예시란다.
[편의성 번역] "로그인이 편했으면 좋겠어요"
→ SNS 간편 로그인(카카오, 네이버) 연동 대상이 명확한가? 로그인 상태 유지 기능을 제공한다면 유지 시간을 구체적으로 정의하였는가?
[속도 번역] "엄청나게 빨라야 합니다"
→ 메인 페이지 로딩 속도는 100명 동시 접속 시 1.5초 이내와 같이 '수치'로 목표로 설정했는가? [보안 번역] "보안은 철저하게 해주세요"
→ 개인정보 AES-256 암호화 및 비밀번호 복잡도(8자리 이상 조합)등의 정책이 명확한가?
[시각화 번역] "통계 화면이 시원하게 나와야 해요"
→ 1년 치 데이터를 시각화할 때 소스가 되는 데이터를 정의했는가? 실시간 데이터와 배치 데이터를 구분하고, 엑셀 다운로드 범위를 확정했는가?
[안정성 번역] "오류 없이 안정적이어야 해요"
→ 모든 항목의 '필수값' 여부를 정의했는가? 필수값 누락 시 처리 정책과 장애 발생 시 즉시 알림(SMS/Email) 체계가 설계되었는가?