kingsjw

Software Engineer

  • Profile
  • Tech
  • Movie
  • Travel

2022년 3분기 회고

3분기 회사 업무 성과

클래스101 준비물 선택 플로우 개선

클래스101에 준비물 구매 플로우를 새로 만들었다.

비즈니스적 개선 목적

다음과 같은 이유로 클래스101+ 준비물 선택 플로우를 개선하고자 했다.

판매 패키지 구성의 변화

기존 클래스101 서비스에서는 수강권이 포함된 올인원 패키지를 판매 했는데, 클래스101+ 구독 서비스가 정식적으로 런칭되면서 수강권과 같이 실물이 아닌 제품은 판매하지 않게 되었다.
즉 구독 서비스인 클래스101+에서는 아이패드, 태블릿 등과 같은 실물 준비물 패키지 제품만 판매하게 된 것이다.

기존 준비물 선택 플로우의 UX 문제

기존 준비물 선택하는 플로우는 다음과 같다.

패키지 선택하기 -> 필수 구성품 선택하기(없다면 skip) -> 추가 구성품 선택하기(없다면 skip) -> 결제 페이지

이 플로우에는 3가지 문제점이 있다.

  1. 다음 화면으로 순차적으로 이동해야하는 UX 문제
    • 패키지 선택하기 → 필수 구성품 선택하기 → 추가 가능한 구성품 선택 화면을 모두 통과해야 결제할 수 있는데 화면이 순차적으로 이동해서 결제 전까지 어떤 태스크가 더 남았는지 사용자는 예측할 수 없다.
    • 패키지를 선택하고 나서 패키지에 대한 옵션으로 나오는 구성품 선택하기, 추가 가능한 구성품 선택 화면은 ‘패키지에 대한 옵션 선택'과 ‘추가로 구매 가능한 상품' 인데 사용자 입장에서 해당 용어 및 어떤 액션을 취해야 하는지 바로 인지하기 어렵다.
  2. 선택한 상품에 대한 가격 표기 문제
    • 패키지, 패키지에 대한 옵션(구성품) 선택 시 노출되는 가격과 추가 가능한 구성품 선택까지 한 이후 노출되는 가격 방식이 차이가 있어 사용자 입장에서 정확한 가격 인지하는 게 헷갈린다.
    • 패키지 선택, 필수 구성품 선택, 추가 구성품 선택 페이지 모두 할부가에 대한 가격을 노출하고 있기 때문에 사용자가 실제 결제될 가격을 명확히 인지하기 어렵다.
  3. 패키지 선택하기, 필수 구성품 선택하기, 추가 구성품 선택하기 흐름의 층위가 통일성이 없는 문제
    • 현재 패키지와 패키지에 대한 옵션(필수 구성품 선택하기), 추가 가능한 구성품 선택하기에 보여지는 상품의 카테고리와 옵션의 층위가 통일되어 있지 않다.
    • 층위가 통일되어 있지 않아 패키지 선택하기 화면 CASE만 5개가 되고, 5개 경우마다 왜 이렇게 상품을 등록을 했는지 배경 및 맥락을 알기 어려워 상품 관리가 제대로 되지 않고 있습니다.

위 문제를 아래와 같은 방법으로 해결하고자 했다.

  1. 모달 이동으로 사용자의 옵션 선택 액션 단순화
    • 사용자는 화면의 순차적 이동이 아닌 사용자가 선택함에 따라 모달 옵션이 바뀌는 UX를 확인할 수 있다.
    • 모달 이동으로 사용자는 필수적으로 선택해야 하는 옵션(구성품 선택하기)과 추가적으로 선택해야 하는 옵션(추가 가능한 구성품)에 대한 액션을 더 명확하게 인지할 수 있다.
    • 모달로 바뀌면 사용자는 준비물 PDP 접근이 쉬워집니다. 준비물에 대한 정보를 다시 확인하고 싶은 경우 사용자는 모달을 닫고 준비물 PDP를 확인했다가 다시 모달을 띄워 이어 구매를 진행하면 된다.
  2. 선택한 개별 상품별 / total 상품 판매가(할인가) 명확한 인지
    • 사용자는 필수적으로 선택한 상품 옵션 및 추가적으로 선택한 상품 옵션의 개별 및 total 판매가(할인가)를 선택 단계마다 인지할 수 있다.
  3. 패키지 선택하기 / 구성품 선택하기 / 추가 가능한 구성품의 층위 통일
    • 사용자는 패키지 선택 → 패키지에 대한 옵션이 필요한 경우 어떤 상품에 대해 옵션을 선택하는지 명확하게 인지할 수 있다.
    • 사용자는 옵션 필수 선택 상품, 그 외 상품 (추가 가능한 구성품)으로 어떤 걸 반드시 선택해야하고, 어떤 건 그렇지 않은지 알 수 있다.

기술적 개선 목적

클래스101 서비스는 Apollo client + GraphQL + React Context Api를 활용하여 클라이언트에 상태를 관리하고 있다.
그러나 위 기술 스택이 정착하기 전까진 Redux, Mobx 등의 여러 상태관리 라이브러리까지 혼재되서 사용되었다.
특히 Mobx는 커머스 팀이 담당하는 결제 플로우에 깊은 의존성을 가진 상태였으며 대부분의 컴포넌트가 이제는 Departed 되어가는 리엑트 클래스형 컴포넌트로 작성되어 있었기 때문에 리펙토링과 유지보수가 쉽지 않은 상황이였다.
이번 기회에 이러한 레거시 코드를 제거하고 Apollo client + GraphQL + React Context Api를 활용한 상태관리로 아예 새로운 준비물 결제 플로우를 개발하고자하였다.

종합적인 개선 목적

비즈니스적, 기술적 개선 목적을 달성하여 최종적으로 이루고자 하는 목적은 다음과 같다.

  • 결제 화면(Checkout) 도달 시간 단축
  • 결제 화면 도달률 증가
  • 준비물 구매 플로우에서 준비물 PDP 화면으로 돌아가는 비율 감소

기존 준비물 선택 플로우와 개선된 준비물 선택 플로우 비교

기존 준비물 선택 플로우 개선된 준비물 선택 플로우

아쉬웠던 점

지키지 못한 Due date

2022년 7월 초에 작업을 시작하여 다음달 초에 완성되는 것을 목표로 했지만 10월 초가 지나서야 QA를 진행할 수 있게되었다.
개발 기간이 생각보다 오래 건린 원인을 생각해보면 3가지라고 생각한다.

  • 준비물(kit) 도메인에 대한 지식이 무지한 상태에서 시작한 개발
  • 두번째 코로나 감염
  • 주 20시간 근무를 고려하지 못한 일정 산정

코로나와 정해진 근무시간의 설정은 스스로 조절할 수 있는 범위가 아니라고 판단하여 주된 원인은 준비물(kit) 도메인에 대한 지식이 무지한 상태에서 시작한 개발 이라고 생각한다.
개발해야할 도메인에 대해 무지한 상태에서 개발을 시작하게 되면 다음과 같은 문제가 발생한다.

  • API Response를 하나 하나 어떤 것을 의미하는 값이 살펴보며 코딩을 하게 되기 때문에 개발 시간이 굉장히 오래 걸리게 된다.
  • 실제로 무엇을 어떻게 개발 해야하는지 코딩을 하면서 생각하기 때문에 개발 공수 산정이 어렵고 개발 시간이 굉장히 오래 걸리게 된다.
  • 개발 공수에 대해 미리 인지하고 있어야하는 PM과 미리 개발 공수를 산정 해줘야하는 엔지니어는 서로 난처하게 된다.

개발해야할 도메인에 대한 지식이 무지한 상태에서 엔지니어가 유의미하게 개발할 수 있는건 아무것도 없다.
지금까지 어떤 개발을 하든 간에 기획자나 PM이 전달해준 문서만 읽고 바로 개발을 시작했는데 이는 상당히 잘못된 방법이였던 것이다.
기획자나 PM이 준 문서는 실제로 시스템이 어떻게 디자인 되어 있고 구성되어 있는지에 대한 기술적인 내용을 엔지니어와 동일한 시각에서 작성한 내용이 아니기 때문이다.
그렇기 때문에 아주 간단한 기능 혹은 시스템이 아닌 이상 어떤 기능 혹은 시스템을 개발할 때에는 반드시 그 기능 혹은 시스템에 대해 미리 설계하고 문서화하여 엔지니어 팀원들에게 리뷰 받는 시간을 거친 후 개발을 시작해야한다.

성장한 점

시스템 디자인 리뷰에 필요성 인지

아쉬웠던 점에서 언급했다시피 이 프로젝트에 Due date를 지키지 못했는데 그 원인은 준비물(kit) 도메인에 대한 무지와 시스템 디자인 설계와 시스템 디자인 리뷰 과정을 거치지 않은채 시작한 개발이라고 생각한다.
시스템 디자인 리뷰는 개발할 시스템, 기능 등의 설계를 어떻게 디자인할 것인지에 대한 내용이 작성된 기술 문서를 리뷰하는 것을 의미한다.
간단한 문구 수정이나 퍼블링싱 작업 등 설계가 크게 필요하지 않는 작업이라면 필요하지 않을 수도 있으나 개발 범위와 서비스 영향력이 크고 특정 도메민에 대한 이해가 필요하며 설계가 필요한 작업이라면 시스템 디자인 문서를 작성하고 팀원들에게 리뷰 받는 활동이 필요하다는 것을 깨달았다.

클래스101 kit 도메인 이해

준비물 선택 플로우를 개발하기 위해선 기본적으로 준비물(kit)이라는 도메인에 대해 이해하고 있어야 데이터를 가공하거나 비즈니스 로직 등을 작성할 수 있을 것이다.
클래스101 준비물 구조에 대해 간략하게 설명하면 다음과 같다.
클래스101은 온라인 클래스 판매와 함께 클래스에 필요한 준비물을 패키지 형태로 함께 판매하고 있다.
준비물은 다음과 같은 형태로 판매되고 있다.

패키지 구조

준비물은 어드민에서 등록할 수 있다.
준비물은 옵션이 있는 상품(예: 아이패드: 용량, 색상, 화면 크기 등)과 옵션이 없는 상품이 있으며 이중에서 필수적으로 구매해야하는 구성품, 추가적으로 구매할 수 있는 구성품으로 나눌 수 있다.
크리에이터 센터에서 클래스를 생성하고 패키지를 등록하게 되는데 패키지를 등록할 때 준비물이 필요한 클래스라면 어드민에서 등록한 키트를 불러와서 패키지에 등록할 수 있다.
등록된 패키지는 클라이언트에 노출된다.

학교생활

분명 1학기 종강한지 엊그제 같은데 눈을 감았다 떴더니 여름방학이 끝나고 2학기 개강이 다가왔다.

2학기 수강신청

이번 학기에는 주 20시간 근무 형태로 학교 생활을 병행할 수 있는 만큼 시간적인 여유가 생겨서 최대한 많은 강의를 들으려 했다.
내가 찾는건 1학년 권장 수업이면서 소프트웨어 공학과 관련 있는 내용인 강의였는데 생각보다 별로 없고 나머진 별로 관심 있는 강의들이 아니라 처음엔 16학점 정도밖에 채우질 못했다.
그래서 공통 교양 중에 재밌는 교양 수업을 찾다가 스케이팅, 스키, 헬스 등등 건강하고 재밌으면서 수업도 별로 안하는데 2학점을 주는 꿀교양 강의를 발견했다.
그러나 내가 간과한 것이 있었는데 나만 꿀교양을 노리고 있는게 아니라는 것이였다.
수강 신청 할 때 이런 꿀교양은 0.1초 만에 만석이 되서 사실상 신의 손이 아니라면 잡는게 거의 불가능하다.
그것도 모르고 수강신청하는 날에 10시 반 쯤 설렁설렁 일어나서 수강신청 프로그램 켰다가 낭패를 보게되었다..
하지만 난 포기하지 않았고 10시 반부터 약 4시간 동안 수강신청 프로그램 새로고침하면서 모니터링 존버한 결과 중간에 교양 스키 수업 한자리가 뜬 것을 낚아 챌 수 있었다.
누군가 실수로 버튼을 잘못 눌렀거나 타인에게 양도하려고 했는데 내가 낚아 챈거 같다.

" 노력은 배신하지 않는다. "

페페 춤

결과적으로 총 18학점으로 2학기를 보내게 되었다. (이정도면 나쁘지 않은듯!)

페페 축배

추후에 대학생 커뮤니티 에브리타임 게시판에 이런 글이 올라온걸 발견했다.

스키 뺏음

ㅋㅋ

나만 아니면 돼

MT

3분기에만 MT를 총 3회 참여했다.
코로나가 거의 풀린 시점이라 우리 뿐만 아니라 전국적으로 MT를 정말 많이 가는 듯 했다.

맛집 동아리 팡슐랭 가이드 MT

7월 초에 학과 내 맛집 동아리에서 진행하는 MT를 갔다.
을왕리에서 진행 되었고 술과 담배를 즐기며 새로운 사람도 만나고 원래 알던 사람도 만나서 밤새 잘 놀았다.
술게임을 했는데 술게임을 진짜 1도 몰라서 병신샷? 이거를 엄첨 마셨는데 평생 들을 병신 소리는 이 때 다 들은 거 같다. ㅋㅋ
중간에 술겜을 피해 다른 방 가서 마신 기억이 나는데... 암튼 재밌었다.

학부 & 학과 MT

9월에 개강하자마자 학부와 학과 MT에 참여했다.
학부 MT가 금요일, 학과 MT가 토요일이였고 장소까지 옆건물이라 연속으로 참여했다.
학부 MT는 학부에 소속된 모든 학과에서 참여하는거라 약 160명? 정도에 많은 인원이 참여했던거 같고 22학번 1학년인 02, 03년생 친구들이 젤 많은 거 같았다. 04년생도 있었다
저녁에 후발 주자로 학부 MT를 출발 했는데 도착 하자마자 내가 본 관경은 열악한 잠자리와 술에 취해 쓰러져 있거나 얼굴이 시뻘개져서 비틀 거리며 돌아다니는 친구들이였다.
그 때부터 학부 MT는 괜히 왔다 싶었는데 술게임 하는거 보고 괜히 왔다는걸 확신했다.
술게임 한턴에 인당 1병씩 마셔 재끼는데 거기 꼈다간 바로 응급실 갈 거 같았다.
그래서 대충 단체 활동 끝나자 마자 방으로 가서 학과 친구들이랑 휴식했다.
편의점에서 하겐다즈 진열되어 있는 거 전부 골라서 친구들 나눠줬는데 다들 맛있게 먹어서 좋았다.
밤새 술게임 하는 소리에 잠도 잘 못자고.. 학부 MT는 ㄹㅇ 괜히 참여한듯 ㅜ..

다음날 아침에 밥먹고 옆에 학과 MT 장소로 가서 씻고 세팅하는거 도와주고 있다가 오후 3시부터 슬슬 사람들 모이기 시작하더니 6시 쯤 부터 고기 먹고 겜하고 그랬던거 같다.
누군지 기억은 잘 안나지만 동아리 MT에서는 보지 못한 새로온 사람도 많이 만났고 술도 적당히 재밌게 마셨다.
코스트코에서 1.75리터 짜리 커클랜드 아이리쉬 위스키 가져가서 하이볼이랑 위스키 콕 만들어서 먹으려 했는데 콜라도 팹시고.. 술도 좀 취한채로 만들었더니 맛은 별로 없었던거 같다. ㅋㅋ ㅜ 그래도 다같이 나눠먹었더니 다 먹긴 했다.
새벽에 진짜 피곤하긴 했는데 잠을 거기서 자기가 싫어서 나랑 비슷한 생각을 가진 사람들이랑 5시 반 쯤 첫차타고 집에갔다.
개인적으로 다음엔 서울에서 에어비앤비 같은거 빌려서하면 모두 편할거 같은데 그렇게 했으면 좋겠다. ㅎㅎ;;

자기계발

올해 계획한 독서, 주 3회 운동, 영어 공부, Unmanage Language 공부하기는 모두 실패한거 같다.
이유는 전부 막상하려하니 당장에 필요성이 느껴지지 않기 때문인거 같다.
내년엔 저중에 2가지 정도만 정해서 꾸준히 할 수 있도록 계획해야겠다..

3분기 정리

이번 분기는 열심히 놀고 열심히 일한거 같다.
2학기 중간고사 공부하면서 느낀건데 아직 1학년이라 그런지 몰라도 학교에서 듣는 강의들 중에 70%는 들으면서 시간낭비하는 느낌이 든다.
분명 도움 되는 강의도 있지만 이런 생각이 들때마다 스스로 왜 학교를 회사 보다 더 높은 우선순위로 설정했지? 라는 의문이 든다.
내가 대학교에 온 목적을 복기해보면 총 아래 3가지이다.

  1. 다양한 배경과 지식을 가진 각자의 분야에서 뛰어난 사람들을 만나서 내 삶의 건설적인 인사이트를 얻고자 함
  2. 비슷한 나이대 사람들과의 교류
  3. 공학적인 지식

3번은 크게 기대하지 않았고 2번은 어느정도 이뤄지고 있는거 같은데, 가장 중요하다고 생각한 1번이 제데로 이뤄지지 않고 있기 때문에 시간낭비하고 있다는 느낌이 드는거 같다.
어떻게 이 문제를 해결할 수 있는지는 잘 모르겠다.
개발자들 모아서 세미나라도 열어볼까?
일단 2학년 1학기까지 경험해보고 다음 스텝을 생각해봐야 할 거 같다.

Copyright © 2019 All Right 서재우

kingsjw7@gmail.com . GitHub . Blog . Repository