배경
- 새로운 기능이 필요한 상황에서 기존 상태 구조가 발목을 잡았던 적이 있으셨을거에요. 발목 잡히지 않기 위해서 상태를 유연하게 바꿀 수 있는 용기가 필요할텐데요. 문제는 내가 생각한 구조가 진짜로 맞는 구조인지, 더 나은 구조는 없을지 고민이 된다는 부분일거에요.
- 물론 이러한 고민은 의미있고 계속 이어나가야겠지만, 어쩌면 주어진 기능의 핵심적인 컨셉과 구조 자체를 어떻게 코드로 번역할지에 대해 모호하게 느끼기 때문에 계속 고민만 늘어가는 걸 수 있어요.
- 이러한 고민을 더 안할 수 있도록 주어진 요구사항을 명확한 스펙으로 모델링하고 구현까지 만들 수 있는지 제가 갖고있는 방법들을 소개하고, 이를 통해 궁극적으로는 테스트하기 쉬운 프론트엔드 코드를 맛봐요.
생각 나눔
- “일을 잘한다는 것”은 어떤걸 의미할까요? 당연히 다양한 전문성이 필요하겠지만 제가 가장 핵심적으로 뽑는것은 “개떡같이 말해도 찰떡같이 알아듣는다”에요.
- 속담을 우리 엔지니어들에게 조금 편하게 풀어보면 “모호한 요구사항을 명확하게 만드는 것” 정도로 번역할 수 있어요.
- 오늘 세션은 “모호한 요구사항을 명확하게 만드는 것”이 대체 무엇인지 느낄 수 있을거에요.
미션
아래 스펙을 구현해야한다고 하면 어떻게 구현하면 좋을까요?
제목: 멘삼딱 퀴즈
- 위클리 인사이트마다 퀴즈가 5문제씩 있음
- 퀴즈 정보는 서버 API로 부터 받을 수 있음
- GET /quiz/{quizId}
- 퀴즈에 대한 정답 여부는 서버 API로 부터 받을 수 있음
- POST /quiz/{quizId}/{questionId}/check-answer
- 퀴즈를 제출하면 정답인지 오답인지 표현되고 다음 문제로 넘어감
- 퀴즈를 모두 풀면 최종적인 나의 점수를 알려줌
- “다시하기”를 누르면 퀴즈를 처음부터 풀 수 있음
- 내가 정답을 맞힌 문제는 사라지고, 오답을 제출한 문제들로만 퀴즈를 재구성함