독서/실용주의 프로그래머 스터디

실용주의 프로그래머 미션

YONS 2022. 5. 30. 19:21

실용주의 프로그래머 Mission 3

요구사항을 받았는데, 요구사항이 아닐 수 있습니다! 요구사항이 아니라면 사용자가 진짜로 원하는게 무엇인지 알아내야합니다. 애매한 요구사항에서 진짜 요구사항을 찾아내는 연습을 해봅시다.


(1) '연습문제 #33'을읽습니다.


(2) 1-5번까지 문제를 클라이언트가 건넨 요구사항이라 상상하며 문제를 풀어봅시다.


(3) 진정한 요구사항이 아닐 경우 어떻게 질문을 해야하는지, 무엇을 알아야 하는지, 왜 그렇게 생각하는지 등 나의 생각을 작성해보세요.

❗️ 풀이과정은 문제당 300자 이상으로 작성해주세요.

❗️ 책에 있는 해답은 참고용이며, 본인의 생각을 잘 작성해주세요.



📌 연습문제 33

다음 문장들이 진정한 요구 사항인가? 가능하다면 진정한 요구사항이 아닌 것을 좀 더 유용하게 고쳐 써 보라.

1. 응답시간은 500ms 이하여야 한다.

📖 책의 해답 : 이 문장은 진짜 요구 사항처럼 보인다. 환경 때문에 애플리케이션에 제약을 추가해야 할 수 있다.

💡 나의 해답 :

진정한 요구사항으로는 보인다. 원하는 바가 굉장히 구체적이고, 응답시간이 느린 애플리케이션을 사용할 때의 불편함은 다들 알고 있기 때문에 별다른 부연설명이 없어도 저런 요구를 하는 이유는 어렴풋이 짐작은 간다. 하지만 응답시간이 빨라야하는 이유라던가 등 조금 더 자세한 디테일을 알아야 이 요구가 반드시 지켜져야만 하는 조건인지, 아니면 '반응속도가  가급적 빨랐으면 좋겠다'라는 말을 표현한 것인지 알 수 있을 것 같다. 그리고 응답시간을 줄이기 위한 방법들이 다양한데, 만약 응답시간을 줄이기 위해 포기해야하는 기능들이 있다면 이부분에 대해서도 좀 더 상의해야 할 것이다.

질문은... 아무리 해도 "응답시간이 500ms 이하여야 하는 이유를 알 수 있을까요?" 밖에 떠오르지 않는다; 어떻게 해야 좀 더 부드럽게 물어볼 수 있을까...

2. 모달 창의 바탕색은 회색이다.

📖 책의 해답 : 이 문장 자체만으로는 진짜 요구사항이 아니다. 하지만 진짜로 무엇이 필요한지 알아내려면 마법의 질문을 던져야 한다. ”왜?”(중략)

💡 나의 해답 :

오... 책에 너무나 좋은 대답이 있는데 이 대답을 봐버렸다...ㅠㅠ 어쨌든 이것은 제대로 된 요구가 아닌 것 같다. 일단 회색이라는 색도 단순히 grey만 있는게 아니고 lightgrey darkgrey 등 많은데 그중 콕 집어 grey인건지, 아니면 그냥 회색계통의 느낌을 내고 싶은건지, 만약 grey라는 색만을 사용해야 한다면 꼭 그래야만 하는 이유가 있는지, 그렇게 색을 사용해서 주변과 이질적인 느낌이 든다면 어떻게 처리하면 좋을지 등등 좀 더 자세한 설명이 필요하다.

질문한다면 "혹시 원하시는 특정 컬러코드가 있으신가요?" 라고 물어볼 것 같다. 만약 정말로 grey 색상을 원한거라면 이제 그 특정 회색을 원하는 이유를 물어보고, 그 목적에 맞는 다른 색상은 없는지 주변과 이질감이 들 경우 어떻게 처리할지 조금 더 이야기를 나눠본다거나, 회색인 느낌을 원한거라면 주변과 크게 어긋나지 않는 선에서 채도를 낮춘 색상을 추천할 것 같다.

3. 애플리케이션은 프론트엔드 프로세스 몇 개와 백엔드 서버로 구성된다.

📖 책의 해답 : 이 문장은 요구사항이 아니다. 이것은 아키텍처다. 이런 종류의 것과 마주쳤다면 사용자가 무슨 생각을 하는지 알아내기 위해 깊이 파고들어야 한다.

💡 나의 해답 :

예스 이것은 아키텍처... 이건 요구사항이 될 수 없다고 생각한다. 나는 이부분에 대해 이건 개발자가 알아서 정할게요; 라고 생각했는데 책에는 비용과 보안문제 등이 있었다... 오... 그건 생각 못했어요.

만약 나한테 이런 요청이 들어온다면 일단은 "혹시 그렇게 정하신 이유가 있으실까요?" 라고 물어는 보겠지만... 내가 알든 모르든 의도파악은 해야하니까 일단 물어는 보겠지만... 이부분은 내가 아직은 너무나 모르는 영역인 것 같다. 좀 더 공부해야겠다.

4. 사용자가 숫자가 아닌 글자를 숫자 필드에 입력하면 시스템은 입력 필드를 깜빡이고 입력을 거부한다.

📖 책의 해답 : 밑에 숨겨진 요구 사항은 아마 “시스템은 사용자가 필드에 올바르지 않은 값을 입력하는 것을 막는다. 올바르지 않은 값을 입력하는 경우 경고를 보낸다.”라는 문장에 더 가까울 것이다.

💡 나의 해답 :

좀 더 설명이 필요하지만 충분히 요구사항으로 보인다. 저 입력필드 깜박이면서 입력을 거부하는 시점이 언제인지 (입력하는 순간 또는 엔터키를 눌렀을 때 인지), 입력을 거부한다는 것이 아예 입력창에 숫자 외엔 아무것도 보여주지 않는 다는 것인지 아니면 숫자 외 다른 값도 보여주긴 하되 알럿창 등으로 알려주는 것인지 등 좀 더 세세하게 정하면 좋을 것 같다.

일단은 원하는게 어떤건지는 대충 이해한 것 같으니 "숫자 외의 값은 입력되지 않게 막으시려는거죠?" 하고 일단 말문 열 겸 재확인 한 뒤 후속 질문으로 좀 더 자세하게 요구사항을 확인할 것 같다. 만약 구체적으로 원하는 방식이 달리 없다면 아마 내가 생각하기에 괜찮은 방법을 가장 먼저 제시하고, 일반적으로 사용하는 가능한 방법들을 제시할 것 같다. 그 외에 좀처럼 사용하지는 않지만 가능한 방법들이 있다면 먼저 이야기를 꺼내기보단 잘 쓰이는 방법은 아니라 생략했지만 듣고 싶다면 말씀드리겠다는 식으로 말할 것 같다.

5. 이 임베디드 애플리케이션의 코드와 데이터 크기는 32Mb 이내여야 한다.

📖 책의 해답 : 이 문장은 하드웨어의 규격에 맞춘 것 같아 보인다. 아마 꼭 지켜야 하는 요구 사항일 것이다.

💡 나의 해답 :

5개 요구사항 중 가장 명확해보인다. 특히 32라는 이 숫자... 너무나 익숙하다. 만약 '50mb 이하로 해주세요' 같은 일반인에게는 딱떨어지지만 개발자 입장에서는 애매해보이는 숫자로 요구했다면 다시 한번 의도를 확인했겠지만 32mb라면 누가봐도 용량이 32mb까지만 허용하는 것 처럼 보인다.

댓글수0